diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 9a338ce..0000000 --- a/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -# Logs -logs -html -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* -test-results -playwright-report - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# Virtual environments -venv/ -.venv/ -env/ -.env/ -*.env - -# CDK -cdk.out/ diff --git a/.oxlintrc.json b/.oxlintrc.json deleted file mode 100644 index 6fa991d..0000000 --- a/.oxlintrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["react", "typescript", "oxc"], - "rules": { - "react/rules-of-hooks": "error", - "react/only-export-components": ["warn", { "allowConstantExport": true }] - } -} diff --git a/HLD_optimized.docx b/HLD_optimized.docx deleted file mode 100644 index b9d73a2..0000000 Binary files a/HLD_optimized.docx and /dev/null differ diff --git a/HLD_optimized.pptx b/HLD_optimized.pptx deleted file mode 100644 index 89d2174..0000000 Binary files a/HLD_optimized.pptx and /dev/null differ diff --git a/README.md b/README.md deleted file mode 100644 index d6af7e3..0000000 --- a/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs) -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) - -## React Compiler - -The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). - -## Expanding the Oxlint configuration - -If you are developing a production application, we recommend enabling type-aware lint rules by installing `oxlint-tsgolint` and editing `.oxlintrc.json`: - -```json -{ - "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["react", "typescript", "oxc"], - "options": { - "typeAware": true - }, - "rules": { - "react/rules-of-hooks": "error", - "react/only-export-components": ["warn", { "allowConstantExport": true }] - } -} -``` - -See the [Oxlint rules documentation](https://oxc.rs/docs/guide/usage/linter/rules) for the full list of rules and categories. diff --git a/architecture_diagram.md b/architecture_diagram.md deleted file mode 100644 index 0faca48..0000000 --- a/architecture_diagram.md +++ /dev/null @@ -1,108 +0,0 @@ -# Supplier Portal Architecture & Module Design - -This document outlines the proposed module structure, page flows, and visual architecture for the E-Commerce Supplier Portal. - -## 1. System Architecture & Modules - -```mermaid -graph TD - %% Styling - classDef primary fill:#1A2B45,stroke:#1A2B45,color:#fff; - classDef accent fill:#E9C46A,stroke:#E9C46A,color:#1A2B45; - classDef container fill:#FFFFFF,stroke:#1A2B45,color:#1A2B45; - classDef bg fill:#F5F0EA,stroke:#1A2B45,color:#1A2B45; - - %% Modules - AuthModule["Authentication Module"]:::primary - ProfileModule["Onboarding & Profile Module"]:::primary - ProductModule["Product Management"]:::primary - DashboardModule["Analytics & Dashboard"]:::primary - FulfillmentModule["Order & Fulfillment Tracking"]:::primary - WalletModule["Payout & Wallet"]:::primary - NotificationModule["Notification System"]:::primary - - %% Components - Signup["Signup Page
(Email, Phone, GSTIN Init)"]:::container - Login["Login Page
(OTP / Password)"]:::container - ProfileComplete["Profile Completion Page
(Store Info, Pickup Address, GSTIN Verify)"]:::container - ProdUpload["Single Upload / Modify Page"]:::container - BulkUpload["Bulk Excel/CSV Upload Page"]:::container - AnalyticsDash["Sales & Earnings Analytics
(Yearly, Weekly, Daily, Custom Date Filters)"]:::container - StockReports["Stock & Inventory Tracking"]:::container - ReturnsDashboard["Customer Returns Center
(Requests, Tracking & Quality Checks)"]:::container - PayoutCenter["Payout / Wallet Dashboard
(Outstanding Balance, Withdrawal Request)"]:::container - ItemTracking["Item Tracking Dashboard
(Individual Item Status, SKUs, Serials)"]:::container - TransitTracking["Transit Tracking Dashboard
(Courier Status, Carrier Integration)"]:::container - - %% Relations - AuthModule --> Signup - AuthModule --> Login - Signup --> ProfileComplete - ProfileComplete --> ProfileModule - - ProductModule --> ProdUpload - ProductModule --> BulkUpload - - DashboardModule --> AnalyticsDash - DashboardModule --> StockReports - - FulfillmentModule --> ItemTracking - FulfillmentModule --> TransitTracking - FulfillmentModule --> ReturnsDashboard - - WalletModule --> PayoutCenter -``` - ---- - -## 2. Detailed Page & Module Breakdown - -### A. Authentication & Onboarding Module -1. **Signup Page** - - Business Email, Password, and Mobile Number validation. - - Initial GSTIN input (for verification). -2. **Login Page** - - Credentials or OTP-based secure login. -3. **Account Profile Completion Page (Onboarding Step 2)** - - **Store Details**: Upload Store Logo/Profile Image, Store Display Name. - - **Pickup & Shipping**: Pickup Address, contact person details. - - **Regulatory Info**: Verified GSTIN, Bank Account details (for payouts). - -### B. Product & Inventory Management Module -1. **Single Product Upload & Modification** - - Form-based creation (Images, Title, Description, SKU, Category, Price, Stock count). - - Real-time preview of the product card matching our theme. -2. **Bulk Product Upload & Modify** - - Excel/CSV upload template download. - - Status log showing validation warnings (e.g., missing images, pricing errors). - -### C. Analytical Dashboard Module -Provides comprehensive reporting with dynamic period filters (**Yearly, Weekly, Daily, and Custom Date Range**): -1. **Sales & Earnings Reports** - - Interactive charts showing Total Sales (Gross volume) vs. Total Earned (Net margin after commissions). -2. **Stock & Inventory Status** - - Low-stock alerts, active listings count, and inactive listings. - -### D. Order & Fulfillment Tracking Module -1. **Item Tracking** - - Track individual items per order (SKU details, quantity, individual packaging status). - - Flag items: *Ready to Ship*, *Shipped*, *Delivered*, *Cancelled*. -2. **Transit Tracking** - - Real-time logistic carrier updates (e.g., DHL, FedEx, Local Post tracking number integration). - - Expected Delivery Date and transit milestones display. -3. **Return Tracking & Return Requests** - - **Items Requested for Return**: Lists customer return requests, reason for return, and custom images uploaded by the customer (e.g., defective product, wrong size). Action to *Approve* or *Reject* return. - - **In-Transit Return Tracking**: Real-time logistic progress of returning items from the customer back to the supplier hub. - -### E. Wallet & Financials (Payout) Module -1. **Current Outstanding Balance** - - Live ready-to-withdraw funds display. -2. **Withdrawal Interface** - - Payout history list with status tracking (Pending, Approved, Transferred). - - "Withdraw Funds" action trigger. - -### F. Notifications & Account Settings -1. **Header Notification Drawer** - - Real-time notices for new orders, low inventory, return requests, and completed payouts. -2. **Profile / Account Settings Page** - - Modify existing Store Profile Image, Pickup Location details, and GSTIN certificates. diff --git a/business_overview.pptx b/business_overview.pptx deleted file mode 100644 index 2706ca9..0000000 Binary files a/business_overview.pptx and /dev/null differ diff --git a/cdk.context.json b/cdk.context.json deleted file mode 100644 index 96c6a81..0000000 --- a/cdk.context.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "hosted-zone:account=764709663363:domainName=tipro.in:region=ap-south-2": { - "Id": "/hostedzone/Z04761903HH8T88QWE7JX", - "Name": "tipro.in." - } -} diff --git a/cdk.json b/cdk.json deleted file mode 100644 index 578c22e..0000000 --- a/cdk.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "app": "npx tsx cdk/app.ts", - "watch": { - "include": [ - "cdk/**" - ], - "exclude": [ - "README.md", - "cdk*.json", - "**/*.d.ts", - "**/*.js", - "tsconfig.json", - "package*.json", - "yarn.lock", - "node_modules", - "test" - ] - }, - "context": { - "@aws-cdk/aws-lambda:recognizeLayerVersion": true, - "@aws-cdk/core:checkSecretUsage": true, - "@aws-cdk/core:target-partitions": [ - "aws", - "aws-cn" - ], - "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true, - "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true, - "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true, - "@aws-cdk/aws-iam:minimizePolicies": true, - "@aws-cdk/core:validateSnapshotRemovalPolicy": true, - "@aws-cdk/aws-codepipeline:crossAccountKeyAliasReadAccess": true, - "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true, - "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true, - "@aws-cdk/aws-apigateway:disableCloudWatchRole": true, - "@aws-cdk/core:enablePartitionLiterals": true, - "@aws-cdk/aws-events:eventsTargetQueueSameAccount": true, - "@aws-cdk/aws-iam:standardizedServicePrincipals": true, - "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": true, - "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": true, - "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": true, - "@aws-cdk/aws-route53-patters:useCertificate": true, - "@aws-cdk/customresources:installLatestAwsSdkDefault": false, - "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": true, - "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": true, - "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": true, - "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": true, - "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachment": true, - "@aws-cdk/aws-redshift:columnId": true, - "@aws-cdk/aws-stepfunctions-tasks:invokeLambdaOutputIncludesPayload": true, - "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true, - "@aws-cdk/core:includePrefixInUniqueNameGeneration": true, - "@aws-cdk/aws-efs:denyAnonymousAccess": true, - "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true, - "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true, - "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": true, - "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": true, - "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": true, - "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": true, - "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": true, - "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": true, - "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": true, - "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true, - "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": true, - "@aws-cdk/aws-eks:nodegroupNameAttribute": true, - "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": true, - "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": true - } -} diff --git a/cdk.out/.cache/ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586.zip b/cdk.out/.cache/ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586.zip new file mode 100644 index 0000000..e6c8615 Binary files /dev/null and b/cdk.out/.cache/ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586.zip differ diff --git a/cdk.out/BetaSupplierSiteStack.assets.json b/cdk.out/BetaSupplierSiteStack.assets.json new file mode 100644 index 0000000..11a5c93 --- /dev/null +++ b/cdk.out/BetaSupplierSiteStack.assets.json @@ -0,0 +1,51 @@ +{ + "version": "54.0.0", + "files": { + "faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6": { + "displayName": "BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6", + "packaging": "zip" + }, + "destinations": { + "764709663363-ap-south-2-41ddd48c": { + "bucketName": "cdk-hnb659fds-assets-764709663363-ap-south-2", + "objectKey": "faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6.zip", + "region": "ap-south-2", + "assumeRoleArn": "arn:${AWS::Partition}:iam::764709663363:role/cdk-hnb659fds-file-publishing-role-764709663363-ap-south-2" + } + } + }, + "ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586": { + "displayName": "SiteCertificate/CertificateRequestorFunction/Code", + "source": { + "path": "asset.ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586", + "packaging": "zip" + }, + "destinations": { + "764709663363-ap-south-2-89e47e6b": { + "bucketName": "cdk-hnb659fds-assets-764709663363-ap-south-2", + "objectKey": "ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586.zip", + "region": "ap-south-2", + "assumeRoleArn": "arn:${AWS::Partition}:iam::764709663363:role/cdk-hnb659fds-file-publishing-role-764709663363-ap-south-2" + } + } + }, + "30a2cd7f0feb00e4aa485dcb99f543fe02e39d74ba056cc6e415bb422047618a": { + "displayName": "BetaSupplierSiteStack Template", + "source": { + "path": "BetaSupplierSiteStack.template.json", + "packaging": "file" + }, + "destinations": { + "764709663363-ap-south-2-6eaef7fa": { + "bucketName": "cdk-hnb659fds-assets-764709663363-ap-south-2", + "objectKey": "30a2cd7f0feb00e4aa485dcb99f543fe02e39d74ba056cc6e415bb422047618a.json", + "region": "ap-south-2", + "assumeRoleArn": "arn:${AWS::Partition}:iam::764709663363:role/cdk-hnb659fds-file-publishing-role-764709663363-ap-south-2" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/cdk.out/BetaSupplierSiteStack.metadata.json b/cdk.out/BetaSupplierSiteStack.metadata.json new file mode 100644 index 0000000..83baa31 --- /dev/null +++ b/cdk.out/BetaSupplierSiteStack.metadata.json @@ -0,0 +1,303 @@ +{ + "/BetaSupplierSiteStack": [ + { + "type": "aws:cdk:creationStack", + "data": [ + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteBucketName": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteBucketName" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:2349)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteCloudFrontDomainName": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteCloudFrontDomainName" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:2501)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/AWSCloudFrontPartitionHostedZoneIdMap": [ + { + "type": "aws:cdk:logicalId", + "data": "AWSCloudFrontPartitionHostedZoneIdMap" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new ARecord2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:2691)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...aws-cdk-lib...", + "(no user code in 10 frames, use --stack-trace-limit to capture more)" + ] + } + ], + "/BetaSupplierSiteStack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...aws-cdk-lib...", + "(no user code in 10 frames, use --stack-trace-limit to capture more)" + ] + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteBucketC3053F9A" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new Bucket2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:617)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + }, + { + "type": "aws:cdk:analytics:mixin", + "data": { + "mixin": "aws-cdk-lib.aws_s3.mixins.BucketAutoDeleteObjects" + } + } + ], + "/BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...aws-cdk-lib...", + "(no user code in 10 frames, use --stack-trace-limit to capture more)" + ] + } + ], + "/BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...aws-cdk-lib...", + "(no user code in 10 frames, use --stack-trace-limit to capture more)" + ] + } + ], + "/BetaSupplierSiteStack/ApiRecord/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiRecord15755A12" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new ARecord2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1090)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction": [ + { + "type": "aws:cdk:is-custom-resource-handler-runtime-family", + "data": 0 + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteDistribution/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteDistributionD03E58A9" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new Distribution2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1383)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/SiteAliasRecord/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SiteAliasRecord3C0AF5BF" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new ARecord2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:2691)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/CDKMetadata/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "CDKMetadata" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...aws-cdk-lib, node internals...", + "(no user code in 10 frames, use --stack-trace-limit to capture more)" + ] + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteBucketPolicy7E1C9F1E" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new Bucket2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:617)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + }, + { + "type": "aws:cdk:analytics:mixin", + "data": { + "mixin": "aws-cdk-lib.aws_s3.mixins.BucketPolicyStatements" + } + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteBucketAutoDeleteObjectsCustomResource789310C3" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...aws-cdk-lib...", + "(no user code in 10 frames, use --stack-trace-limit to capture more)" + ] + } + ], + "/BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SiteCertificateCertificateRequestorFunction7CFA7DEA" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new DnsValidatedCertificate2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1240)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/SiteCertificate/CertificateRequestorResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "SiteCertificateCertificateRequestorResource6021082A" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new DnsValidatedCertificate2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1240)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SiteCertificateCertificateRequestorFunctionServiceRole645E891D" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new DnsValidatedCertificate2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1240)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)" + ] + } + ], + "/BetaSupplierSiteStack/BetaSupplierSiteDistribution/Origin1/S3OriginAccessControl/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "BetaSupplierSiteDistributionOrigin1S3OriginAccessControlF9377C01" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new Distribution2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1383)", + "file:///home/vignesh/github/sellercentral/cdk/app.ts:2:1 (file:///home/vignesh/github/sellercentral/cdk/app.ts:2:15)", + "...node internals..." + ] + } + ], + "/BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SiteCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy96ED5C9C" + }, + { + "type": "aws:cdk:creationStack", + "data": [ + "...new DnsValidatedCertificate2 in aws-cdk-lib...", + "new BetaSupplierSiteStack (file:///home/vignesh/github/sellercentral/cdk/betasupplier-site-stack.ts:1:1240)" + ] + } + ] +} \ No newline at end of file diff --git a/cdk.out/BetaSupplierSiteStack.template.json b/cdk.out/BetaSupplierSiteStack.template.json new file mode 100644 index 0000000..10702c6 --- /dev/null +++ b/cdk.out/BetaSupplierSiteStack.template.json @@ -0,0 +1,584 @@ +{ + "Resources": { + "BetaSupplierSiteBucketC3053F9A": { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "AES256" + } + } + ] + }, + "BucketName": "betasuppliersite-764709663363-ap-south-2", + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + }, + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete", + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/BetaSupplierSiteBucket/Resource" + } + }, + "BetaSupplierSiteBucketPolicy7E1C9F1E": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "BetaSupplierSiteBucketC3053F9A" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "BetaSupplierSiteBucketC3053F9A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "BetaSupplierSiteBucketC3053F9A", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": "s3:GetObject", + "Condition": { + "StringEquals": { + "AWS:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":cloudfront::", + { + "Ref": "AWS::AccountId" + }, + ":distribution/", + { + "Ref": "BetaSupplierSiteDistributionD03E58A9" + } + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "cloudfront.amazonaws.com" + }, + "Resource": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "BetaSupplierSiteBucketC3053F9A", + "Arn" + ] + }, + "/*" + ] + ] + } + } + ], + "Version": "2012-10-17" + } + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/BetaSupplierSiteBucket/Policy/Resource" + } + }, + "BetaSupplierSiteBucketAutoDeleteObjectsCustomResource789310C3": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "BetaSupplierSiteBucketC3053F9A" + } + }, + "DependsOn": [ + "BetaSupplierSiteBucketPolicy7E1C9F1E" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete", + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/BetaSupplierSiteBucket/AutoDeleteObjectsCustomResource/Default" + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role" + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": "cdk-hnb659fds-assets-764709663363-ap-south-2", + "S3Key": "faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": "nodejs24.x", + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "BetaSupplierSiteBucketC3053F9A" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ], + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler", + "aws:asset:path": "asset.faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6", + "aws:asset:property": "Code" + } + }, + "ApiRecord15755A12": { + "Type": "AWS::Route53::RecordSet", + "Properties": { + "HostedZoneId": "Z04761903HH8T88QWE7JX", + "Name": "api.tipro.in.", + "ResourceRecords": [ + "16.113.57.127" + ], + "TTL": "1800", + "Type": "A" + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/ApiRecord/Resource" + } + }, + "SiteCertificateCertificateRequestorFunctionServiceRole645E891D": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/Resource" + } + }, + "SiteCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy96ED5C9C": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "acm:AddTagsToCertificate", + "acm:DeleteCertificate", + "acm:DescribeCertificate", + "acm:RequestCertificate", + "route53:GetChange" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": "route53:changeResourceRecordSets", + "Condition": { + "ForAllValues:StringEquals": { + "route53:ChangeResourceRecordSetsRecordTypes": [ + "CNAME" + ], + "route53:ChangeResourceRecordSetsActions": [ + "UPSERT" + ] + }, + "ForAllValues:StringLike": { + "route53:ChangeResourceRecordSetsNormalizedRecordNames": [ + "*.partners.tipro.in" + ] + } + }, + "Effect": "Allow", + "Resource": "arn:aws:route53:::hostedzone/Z04761903HH8T88QWE7JX" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "SiteCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy96ED5C9C", + "Roles": [ + { + "Ref": "SiteCertificateCertificateRequestorFunctionServiceRole645E891D" + } + ] + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/DefaultPolicy/Resource" + } + }, + "SiteCertificateCertificateRequestorFunction7CFA7DEA": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": "cdk-hnb659fds-assets-764709663363-ap-south-2", + "S3Key": "ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586.zip" + }, + "Handler": "index.certificateRequestHandler", + "Role": { + "Fn::GetAtt": [ + "SiteCertificateCertificateRequestorFunctionServiceRole645E891D", + "Arn" + ] + }, + "Runtime": "nodejs24.x", + "Timeout": 900 + }, + "DependsOn": [ + "SiteCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy96ED5C9C", + "SiteCertificateCertificateRequestorFunctionServiceRole645E891D" + ], + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/Resource", + "aws:asset:path": "asset.ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586", + "aws:asset:is-bundled": false, + "aws:asset:property": "Code" + } + }, + "SiteCertificateCertificateRequestorResource6021082A": { + "Type": "AWS::CloudFormation::CustomResource", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "SiteCertificateCertificateRequestorFunction7CFA7DEA", + "Arn" + ] + }, + "DomainName": "partners.tipro.in", + "HostedZoneId": "Z04761903HH8T88QWE7JX", + "Region": "us-east-1" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete", + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/SiteCertificate/CertificateRequestorResource/Default" + } + }, + "BetaSupplierSiteDistributionOrigin1S3OriginAccessControlF9377C01": { + "Type": "AWS::CloudFront::OriginAccessControl", + "Properties": { + "OriginAccessControlConfig": { + "Name": "BetaSupplierSiteStackBetaSupOrigin1S3OriginAccessControl50127AEA", + "OriginAccessControlOriginType": "s3", + "SigningBehavior": "always", + "SigningProtocol": "sigv4" + } + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/BetaSupplierSiteDistribution/Origin1/S3OriginAccessControl/Resource" + } + }, + "BetaSupplierSiteDistributionD03E58A9": { + "Type": "AWS::CloudFront::Distribution", + "Properties": { + "DistributionConfig": { + "Aliases": [ + "partners.tipro.in" + ], + "CacheBehaviors": [ + { + "AllowedMethods": [ + "GET", + "HEAD", + "OPTIONS", + "PUT", + "PATCH", + "POST", + "DELETE" + ], + "CachePolicyId": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad", + "Compress": true, + "OriginRequestPolicyId": "216adef6-5c7f-47e4-b989-5492eafa07d3", + "PathPattern": "/api/*", + "TargetOriginId": "BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin26FE0C2F5", + "ViewerProtocolPolicy": "redirect-to-https" + } + ], + "CustomErrorResponses": [ + { + "ErrorCachingMinTTL": 0, + "ErrorCode": 404, + "ResponseCode": 200, + "ResponsePagePath": "/index.html" + }, + { + "ErrorCachingMinTTL": 0, + "ErrorCode": 403, + "ResponseCode": 200, + "ResponsePagePath": "/index.html" + } + ], + "DefaultCacheBehavior": { + "AllowedMethods": [ + "GET", + "HEAD" + ], + "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6", + "CachedMethods": [ + "GET", + "HEAD" + ], + "Compress": true, + "TargetOriginId": "BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin118CF032F", + "ViewerProtocolPolicy": "redirect-to-https" + }, + "DefaultRootObject": "index.html", + "Enabled": true, + "HttpVersion": "http2", + "IPV6Enabled": true, + "Origins": [ + { + "DomainName": { + "Fn::GetAtt": [ + "BetaSupplierSiteBucketC3053F9A", + "RegionalDomainName" + ] + }, + "Id": "BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin118CF032F", + "OriginAccessControlId": { + "Fn::GetAtt": [ + "BetaSupplierSiteDistributionOrigin1S3OriginAccessControlF9377C01", + "Id" + ] + }, + "S3OriginConfig": { + "OriginAccessIdentity": "" + } + }, + { + "CustomOriginConfig": { + "HTTPPort": 8080, + "OriginProtocolPolicy": "http-only", + "OriginSSLProtocols": [ + "TLSv1.2" + ] + }, + "DomainName": "api.tipro.in", + "Id": "BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin26FE0C2F5" + } + ], + "ViewerCertificate": { + "AcmCertificateArn": { + "Fn::GetAtt": [ + "SiteCertificateCertificateRequestorResource6021082A", + "Arn" + ] + }, + "MinimumProtocolVersion": "TLSv1.2_2021", + "SslSupportMethod": "sni-only" + } + } + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/BetaSupplierSiteDistribution/Resource" + } + }, + "SiteAliasRecord3C0AF5BF": { + "Type": "AWS::Route53::RecordSet", + "Properties": { + "AliasTarget": { + "DNSName": { + "Fn::GetAtt": [ + "BetaSupplierSiteDistributionD03E58A9", + "DomainName" + ] + }, + "HostedZoneId": { + "Fn::FindInMap": [ + "AWSCloudFrontPartitionHostedZoneIdMap", + { + "Ref": "AWS::Partition" + }, + "zoneId" + ] + } + }, + "HostedZoneId": "Z04761903HH8T88QWE7JX", + "Name": "partners.tipro.in.", + "Type": "A" + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/SiteAliasRecord/Resource" + } + }, + "CDKMetadata": { + "Type": "AWS::CDK::Metadata", + "Properties": { + "Analytics": "v2:deflate64:H4sIAAAAAAAA/5VRwU7DMAz9lvWcBdQKhLiVTtzQplbigtCUpl7lLU2m2NlAVf4dtRFsHDhwei9+fs9Oksv8/kHeLtSZlro7LA22cmxY6YNQZ9qOVMjxKegDsKh2NrG3MRvwA232mF3bpn4q5CyRTK1lYLcCAwzrdg+aKYvvIkkbZ1B/XlLT+R/ZydCwYhjAXkc/KYIovAsMd4Ucyxq08900KrEGOAoNnnGHerIrq3rwcmXpVRnsFENXXWRh1NB2So7PwWpGZ6ekbx4FqkGOtTMwD5jwcrXEoqBiq4iASZYTCG1c6HbeWZbjCok9tmFOboq1xx5tqTUQVc6yd2ZK+qN8bY5RVIHYDTWQC16nhX74L2nj3Qk78NNTiXmnhlWPthfX5nXgY5h//kUdj2j7KKzrQO7p5pTnMs9lsdgT4tIHyziArBN+AQxOyStWAgAA" + }, + "Metadata": { + "aws:cdk:path": "BetaSupplierSiteStack/CDKMetadata/Default" + } + } + }, + "Outputs": { + "BetaSupplierSiteBucketName": { + "Description": "The name of the S3 bucket for the betasupplier site", + "Value": { + "Ref": "BetaSupplierSiteBucketC3053F9A" + } + }, + "BetaSupplierSiteCloudFrontDomainName": { + "Description": "The domain name of the CloudFront distribution for betasupplier site", + "Value": { + "Fn::GetAtt": [ + "BetaSupplierSiteDistributionD03E58A9", + "DomainName" + ] + } + } + }, + "Mappings": { + "AWSCloudFrontPartitionHostedZoneIdMap": { + "aws": { + "zoneId": "Z2FDTNDATAQYW2" + }, + "aws-cn": { + "zoneId": "Z3RFFRIM2A3IF5" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/cdk.out/asset.faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6/index.js b/cdk.out/asset.faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6/index.js new file mode 100644 index 0000000..2f92d06 --- /dev/null +++ b/cdk.out/asset.faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create,i=Object.defineProperty,I=Object.getOwnPropertyDescriptor,C=Object.getOwnPropertyNames,w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty,A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t},l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t),q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H}),module.exports=B(q);var h=require("@aws-sdk/client-s3"),y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")} diff --git a/cdk.out/asset.ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586/index.js b/cdk.out/asset.ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586/index.js new file mode 100644 index 0000000..4b42df6 --- /dev/null +++ b/cdk.out/asset.ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586/index.js @@ -0,0 +1 @@ +"use strict";var{ACM:C,waitUntilCertificateValidated:N}=require("@aws-sdk/client-acm"),{Route53:R,waitUntilResourceRecordSetsChanged:U}=require("@aws-sdk/client-route-53"),A=function(e){return new Promise(r=>setTimeout(r,e))},T,P,m=A,h=Math.random,d=10,w=function(e,r,o,t,s,i){return new Promise((a,c)=>{let u=require("https"),{URL:l}=require("url");var f=JSON.stringify({Status:o,Reason:i,PhysicalResourceId:t||r.logStreamName,StackId:e.StackId,RequestId:e.RequestId,LogicalResourceId:e.LogicalResourceId,Data:s});let n=new l(e.ResponseURL||T),g={hostname:n.hostname,port:443,path:n.pathname+n.search,method:"PUT",headers:{"Content-Type":"","Content-Length":f.length}};u.request(g).on("error",c).on("response",p=>{p.resume(),p.statusCode>=400?c(new Error(`Server returned error ${p.statusCode}: ${p.statusMessage}`)):a()}).end(f,"utf8")})},S=async function(e,r,o){let t=Array.from(Object.entries(o)).map(([i,a])=>({Key:i,Value:a}));await new C({region:r}).addTagsToCertificate({CertificateArn:e,Tags:t})},q=async function(e,r,o,t,s,i,a){let c=require("crypto"),u=new C({region:i}),l=a?new R({endpoint:a}):new R;console.log(`Requesting certificate for ${r}`);let f=await u.requestCertificate({DomainName:r,SubjectAlternativeNames:o,Options:{CertificateTransparencyLoggingPreference:t},IdempotencyToken:c.createHash("sha256").update(e).digest("hex").slice(0,32),ValidationMethod:"DNS"});console.log(`Certificate ARN: ${f.CertificateArn}`),console.log("Waiting for ACM to provide DNS records for validation...");let n=[];for(let g=0;g0&&r.every(o=>o&&!!o.ResourceRecord)){let o=r.map(t=>t.ResourceRecord).reduce((t,s)=>(t[s.Name]=s,t),{});return Object.keys(o).sort().map(t=>o[t])}return[]}async function I(e,r,o,t="UPSERT"){let s=await e.changeResourceRecordSets({ChangeBatch:{Changes:r.map(i=>(console.log(`${i.Name} ${i.Type} ${i.Value}`),{Action:t,ResourceRecordSet:{Name:i.Name,Type:i.Type,TTL:60,ResourceRecords:[{Value:i.Value}]}}))},HostedZoneId:o});console.log("Waiting for DNS records to commit..."),await U({client:e,delay:30,maxAttempts:10},{Id:s.ChangeInfo.Id})}function $(e,r,o){return!e||e.DomainName!==r.DomainName||e.SubjectAlternativeNames!==r.SubjectAlternativeNames||e.CertificateTransparencyLoggingPreference!==r.CertificateTransparencyLoggingPreference||e.HostedZoneId!==r.HostedZoneId||e.Region!==r.Region||!o||!o.startsWith("arn:")}exports.certificateRequestHandler=async function(e,r){var o={},t,s;async function i(){s=await q(e.RequestId,e.ResourceProperties.DomainName,e.ResourceProperties.SubjectAlternativeNames,e.ResourceProperties.CertificateTransparencyLoggingPreference,e.ResourceProperties.HostedZoneId,e.ResourceProperties.Region,e.ResourceProperties.Route53Endpoint),o.Arn=t=s}try{switch(e.RequestType){case"Create":await i(),e.ResourceProperties.Tags&&t.startsWith("arn:")&&await S(t,e.ResourceProperties.Region,e.ResourceProperties.Tags);break;case"Update":$(e.OldResourceProperties,e.ResourceProperties,e.PhysicalResourceId)?await i():o.Arn=t=e.PhysicalResourceId,e.ResourceProperties.Tags&&t.startsWith("arn:")&&await S(t,e.ResourceProperties.Region,e.ResourceProperties.Tags);break;case"Delete":t=e.PhysicalResourceId;let a=e.ResourceProperties.RemovalPolicy??"destroy";t.startsWith("arn:")&&a==="destroy"&&await b(t,e.ResourceProperties.Region,e.ResourceProperties.HostedZoneId,e.ResourceProperties.Route53Endpoint,e.ResourceProperties.CleanupRecords==="true");break;default:throw new Error(`Unsupported request type ${e.RequestType}`)}console.log("Uploading SUCCESS response to S3..."),await w(e,r,"SUCCESS",t,o),console.log("Done.")}catch(a){console.log(`Caught error ${a}. Uploading FAILED message to S3.`),await w(e,r,"FAILED",t,null,a.message)}},exports.withReporter=function(e){w=e},exports.withDefaultResponseURL=function(e){T=e},exports.withWaiter=function(e){P=e},exports.resetWaiter=function(){P=void 0},exports.withSleep=function(e){m=e},exports.resetSleep=function(){m=A},exports.withRandom=function(e){h=e},exports.resetRandom=function(){h=Math.random},exports.withMaxAttempts=function(e){d=e},exports.resetMaxAttempts=function(){d=10}; diff --git a/cdk.out/cdk.out b/cdk.out/cdk.out new file mode 100644 index 0000000..433ef06 --- /dev/null +++ b/cdk.out/cdk.out @@ -0,0 +1 @@ +{"version":"54.0.0"} \ No newline at end of file diff --git a/cdk.out/manifest.json b/cdk.out/manifest.json new file mode 100644 index 0000000..ec3faf4 --- /dev/null +++ b/cdk.out/manifest.json @@ -0,0 +1,547 @@ +{ + "version": "54.0.0", + "artifacts": { + "BetaSupplierSiteStack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BetaSupplierSiteStack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BetaSupplierSiteStack": { + "type": "aws:cloudformation:stack", + "environment": "aws://764709663363/ap-south-2", + "properties": { + "templateFile": "BetaSupplierSiteStack.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::764709663363:role/cdk-hnb659fds-deploy-role-764709663363-ap-south-2", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::764709663363:role/cdk-hnb659fds-cfn-exec-role-764709663363-ap-south-2", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-764709663363-ap-south-2/30a2cd7f0feb00e4aa485dcb99f543fe02e39d74ba056cc6e415bb422047618a.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BetaSupplierSiteStack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::764709663363:role/cdk-hnb659fds-lookup-role-764709663363-ap-south-2", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BetaSupplierSiteStack.assets" + ], + "additionalMetadataFile": "BetaSupplierSiteStack.metadata.json", + "displayName": "BetaSupplierSiteStack" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + }, + "aws-cdk-lib/feature-flag-report": { + "type": "cdk:feature-flag-report", + "properties": { + "module": "aws-cdk-lib", + "flags": { + "@aws-cdk/aws-signer:signingProfileNamePassedToCfn": { + "recommendedValue": true, + "explanation": "Pass signingProfileName to CfnSigningProfile" + }, + "@aws-cdk/core:newStyleStackSynthesis": { + "recommendedValue": true, + "explanation": "Switch to new stack synthesis method which enables CI/CD", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:stackRelativeExports": { + "recommendedValue": true, + "explanation": "Name exports based on the construct paths relative to the stack, rather than the global construct path", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-ecs-patterns:secGroupsDisablesImplicitOpenListener": { + "recommendedValue": true, + "explanation": "Disable implicit openListener when custom security groups are provided" + }, + "@aws-cdk/aws-rds:lowercaseDbIdentifier": { + "recommendedValue": true, + "explanation": "Force lowercasing of RDS Cluster names in CDK", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": { + "recommendedValue": true, + "explanation": "Allow adding/removing multiple UsagePlanKeys independently", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-lambda:recognizeVersionProps": { + "recommendedValue": true, + "explanation": "Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-lambda:recognizeLayerVersion": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to opt in to the updated logical id calculation for Lambda Version created using the `fn.currentVersion`." + }, + "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": { + "recommendedValue": true, + "explanation": "Enable this feature flag to have cloudfront distributions use the security policy TLSv1.2_2021 by default.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:checkSecretUsage": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this flag to make it impossible to accidentally use SecretValues in unsafe locations" + }, + "@aws-cdk/core:target-partitions": { + "userValue": [ + "aws", + "aws-cn" + ], + "recommendedValue": [ + "aws", + "aws-cn" + ], + "explanation": "What regions to include in lookup tables of environment agnostic stacks" + }, + "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": { + "userValue": true, + "recommendedValue": true, + "explanation": "ECS extensions will automatically add an `awslogs` driver if no logging is specified" + }, + "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to have Launch Templates generated by the `InstanceRequireImdsv2Aspect` use unique names." + }, + "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": { + "userValue": true, + "recommendedValue": true, + "explanation": "ARN format used by ECS. In the new ARN format, the cluster name is part of the resource ID." + }, + "@aws-cdk/aws-iam:minimizePolicies": { + "userValue": true, + "recommendedValue": true, + "explanation": "Minimize IAM policies by combining Statements" + }, + "@aws-cdk/core:validateSnapshotRemovalPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Error on snapshot removal policies on resources that do not support it." + }, + "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": { + "recommendedValue": true, + "explanation": "Generate key aliases that include the stack name" + }, + "@aws-cdk/aws-s3:createDefaultLoggingPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature flag to create an S3 bucket policy by default in cases where an AWS service would automatically create the Policy if one does not exist." + }, + "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": { + "userValue": true, + "recommendedValue": true, + "explanation": "Restrict KMS key policy for encrypted Queues a bit more" + }, + "@aws-cdk/aws-apigateway:disableCloudWatchRole": { + "userValue": true, + "recommendedValue": true, + "explanation": "Make default CloudWatch Role behavior safe for multiple API Gateways in one environment" + }, + "@aws-cdk/core:enablePartitionLiterals": { + "userValue": true, + "recommendedValue": true, + "explanation": "Make ARNs concrete if AWS partition is known" + }, + "@aws-cdk/aws-events:eventsTargetQueueSameAccount": { + "userValue": true, + "recommendedValue": true, + "explanation": "Event Rules may only push to encrypted SQS queues in the same account" + }, + "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": { + "userValue": true, + "recommendedValue": true, + "explanation": "Avoid setting the \"ECS\" deployment controller when adding a circuit breaker" + }, + "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enable this feature to create default policy names for imported roles that depend on the stack the role is in." + }, + "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use S3 Bucket Policy instead of ACLs for Server Access Logging" + }, + "@aws-cdk/aws-route53-patters:useCertificate": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use the official `Certificate` resource instead of `DnsValidatedCertificate`" + }, + "@aws-cdk/customresources:installLatestAwsSdkDefault": { + "userValue": false, + "recommendedValue": false, + "explanation": "Whether to install the latest SDK by default in AwsCustomResource" + }, + "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": { + "userValue": true, + "recommendedValue": true, + "explanation": "Use unique resource name for Database Proxy" + }, + "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": { + "userValue": true, + "recommendedValue": true, + "explanation": "Remove CloudWatch alarms from deployment group" + }, + "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Include authorizer configuration in the calculation of the API deployment logical ID." + }, + "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": { + "userValue": true, + "recommendedValue": true, + "explanation": "Define user data for a launch template by default when a machine image is provided." + }, + "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": { + "recommendedValue": true, + "explanation": "SecretTargetAttachments uses the ResourcePolicy of the attached Secret." + }, + "@aws-cdk/aws-redshift:columnId": { + "userValue": true, + "recommendedValue": true, + "explanation": "Whether to use an ID to track Redshift column changes" + }, + "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": { + "recommendedValue": true, + "explanation": "Enable AmazonEMRServicePolicy_v2 managed policies" + }, + "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": { + "recommendedValue": true, + "explanation": "Restrict access to the VPC default security group" + }, + "@aws-cdk/aws-apigateway:requestValidatorUniqueId": { + "recommendedValue": true, + "explanation": "Generate a unique id for each RequestValidator added to a method" + }, + "@aws-cdk/aws-kms:aliasNameRef": { + "recommendedValue": true, + "explanation": "KMS Alias name and keyArn will have implicit reference to KMS Key" + }, + "@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": { + "recommendedValue": true, + "explanation": "Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition" + }, + "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": { + "userValue": true, + "recommendedValue": true, + "explanation": "Generate a launch template when creating an AutoScalingGroup" + }, + "@aws-cdk/core:includePrefixInUniqueNameGeneration": { + "userValue": true, + "recommendedValue": true, + "explanation": "Include the stack prefix in the stack name generation process" + }, + "@aws-cdk/aws-efs:denyAnonymousAccess": { + "userValue": true, + "recommendedValue": true, + "explanation": "EFS denies anonymous clients accesses" + }, + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables support for Multi-AZ with Standby deployment for opensearch domains" + }, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables aws-lambda-nodejs.Function to use the latest available NodeJs runtime as the default" + }, + "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, mount targets will have a stable logicalId that is linked to the associated subnet." + }, + "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, a scope of InstanceParameterGroup for AuroraClusterInstance with each parameters will change." + }, + "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, will always use the arn for identifiers for CfnSourceApiAssociation in the GraphqlApi construct rather than id." + }, + "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, creating an RDS database cluster from a snapshot will only render credentials for snapshot credentials." + }, + "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the CodeCommit source action is using the default branch name 'main'." + }, + "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the logical ID of a Lambda permission for a Lambda action includes an alarm ID." + }, + "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables Pipeline to set the default value for crossAccountKeys to false." + }, + "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": { + "userValue": true, + "recommendedValue": true, + "explanation": "Enables Pipeline to set the default pipeline type to V2." + }, + "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, IAM Policy created from KMS key grant will reduce the resource scope to this key only." + }, + "@aws-cdk/pipelines:reduceAssetRoleTrustScope": { + "recommendedValue": true, + "explanation": "Remove the root account principal from PipelineAssetsFileRole trust policy", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-eks:nodegroupNameAttribute": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, nodegroupName attribute of the provisioned EKS NodeGroup will not have the cluster name prefix." + }, + "@aws-cdk/aws-eks:useNativeOidcProvider": { + "recommendedValue": true, + "explanation": "When enabled, EKS V2 clusters will use the native OIDC provider resource AWS::IAM::OIDCProvider instead of creating the OIDCProvider with a custom resource (iam.OpenIDConnectProvider)." + }, + "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, the default volume type of the EBS volume will be GP3" + }, + "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": { + "userValue": true, + "recommendedValue": true, + "explanation": "When enabled, remove default deployment alarm settings" + }, + "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": { + "recommendedValue": false, + "explanation": "When enabled, the custom resource used for `AwsCustomResource` will configure the `logApiResponseData` property as true by default" + }, + "@aws-cdk/aws-s3:keepNotificationInImportedBucket": { + "recommendedValue": false, + "explanation": "When enabled, Adding notifications to a bucket in the current stack will not remove notification from imported stack." + }, + "@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask": { + "recommendedValue": true, + "explanation": "When enabled, use new props for S3 URI field in task definition of state machine for bedrock invoke model.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/core:explicitStackTags": { + "recommendedValue": true, + "explanation": "When enabled, stack tags need to be assigned explicitly on a Stack." + }, + "@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions": { + "recommendedValue": true, + "explanation": "When enabled, we will only grant the necessary permissions when users specify cloudwatch log group through logConfiguration" + }, + "@aws-cdk/aws-dynamodb:resourcePolicyPerReplica": { + "recommendedValue": true, + "explanation": "When enabled will allow you to specify a resource policy per replica, and not copy the source table policy to all replicas" + }, + "@aws-cdk/aws-ec2:ec2SumTImeoutEnabled": { + "recommendedValue": true, + "explanation": "When enabled, initOptions.timeout and resourceSignalTimeout values will be summed together." + }, + "@aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission": { + "recommendedValue": true, + "explanation": "When enabled, a Lambda authorizer Permission created when using GraphqlApi will be properly scoped with a SourceArn." + }, + "@aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId": { + "recommendedValue": true, + "explanation": "When enabled, the value of property `instanceResourceId` in construct `DatabaseInstanceReadReplica` will be set to the correct value which is `DbiResourceId` instead of currently `DbInstanceArn`" + }, + "@aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics": { + "recommendedValue": true, + "explanation": "When enabled, CFN templates added with `cfn-include` will error if the template contains Resource Update or Create policies with CFN Intrinsics that include non-primitive values." + }, + "@aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages": { + "recommendedValue": true, + "explanation": "When enabled, both `@aws-sdk` and `@smithy` packages will be excluded from the Lambda Node.js 18.x runtime to prevent version mismatches in bundled applications." + }, + "@aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy": { + "recommendedValue": true, + "explanation": "When enabled, the resource of IAM Run Ecs policy generated by SFN EcsRunTask will reference the definition, instead of constructing ARN." + }, + "@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault": { + "recommendedValue": true, + "explanation": "When enabled, the BastionHost construct will use the latest Amazon Linux 2023 AMI, instead of Amazon Linux 2." + }, + "@aws-cdk/core:aspectStabilization": { + "recommendedValue": true, + "explanation": "When enabled, a stabilization loop will be run when invoking Aspects during synthesis.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource": { + "recommendedValue": true, + "explanation": "When enabled, use a new method for DNS Name of user pool domain target without creating a custom resource." + }, + "@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault": { + "recommendedValue": true, + "explanation": "When enabled, the default security group ingress rules will allow IPv6 ingress from anywhere" + }, + "@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections": { + "recommendedValue": true, + "explanation": "When enabled, the default behaviour of OIDC provider will reject unauthorized connections" + }, + "@aws-cdk/core:enableAdditionalMetadataCollection": { + "recommendedValue": true, + "explanation": "When enabled, CDK will expand the scope of usage data collected to better inform CDK development and improve communication for security concerns and emerging issues." + }, + "@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy": { + "recommendedValue": false, + "explanation": "[Deprecated] When enabled, Lambda will create new inline policies with AddToRolePolicy instead of adding to the Default Policy Statement" + }, + "@aws-cdk/aws-s3:setUniqueReplicationRoleName": { + "recommendedValue": true, + "explanation": "When enabled, CDK will automatically generate a unique role name that is used for s3 object replication." + }, + "@aws-cdk/pipelines:reduceStageRoleTrustScope": { + "recommendedValue": true, + "explanation": "Remove the root account principal from Stage addActions trust policy", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-events:requireEventBusPolicySid": { + "recommendedValue": true, + "explanation": "When enabled, grantPutEventsTo() will use resource policies with Statement IDs for service principals." + }, + "@aws-cdk/core:aspectPrioritiesMutating": { + "recommendedValue": true, + "explanation": "When set to true, Aspects added by the construct library on your behalf will be given a priority of MUTATING." + }, + "@aws-cdk/aws-dynamodb:retainTableReplica": { + "recommendedValue": true, + "explanation": "When enabled, table replica will be default to the removal policy of source table unless specified otherwise." + }, + "@aws-cdk/cognito:logUserPoolClientSecretValue": { + "recommendedValue": false, + "explanation": "When disabled, the value of the user pool client secret will not be logged in the custom resource lambda function logs." + }, + "@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope": { + "recommendedValue": true, + "explanation": "When enabled, scopes down the trust policy for the cross-account action role", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": { + "recommendedValue": true, + "explanation": "When enabled, the resultWriterV2 property of DistributedMap will be used insted of resultWriter" + }, + "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": { + "recommendedValue": true, + "explanation": "Add an S3 trust policy to a KMS key resource policy for SNS subscriptions." + }, + "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": { + "recommendedValue": true, + "explanation": "When enabled, the EgressOnlyGateway resource is only created if private subnets are defined in the dual-stack VPC." + }, + "@aws-cdk/aws-ec2-alpha:useResourceIdForVpcV2Migration": { + "recommendedValue": false, + "explanation": "When enabled, use resource IDs for VPC V2 migration" + }, + "@aws-cdk/aws-s3:publicAccessBlockedByDefault": { + "recommendedValue": true, + "explanation": "When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined." + }, + "@aws-cdk/aws-lambda:useCdkManagedLogGroup": { + "recommendedValue": true, + "explanation": "When enabled, CDK creates and manages loggroup for the lambda function" + }, + "@aws-cdk/aws-elasticloadbalancingv2:networkLoadBalancerWithSecurityGroupByDefault": { + "recommendedValue": true, + "explanation": "When enabled, Network Load Balancer will be created with a security group by default." + }, + "@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint": { + "recommendedValue": true, + "explanation": "When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks.", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId": { + "recommendedValue": true, + "explanation": "When enabled, ECS patterns will generate unique target group IDs to prevent conflicts during load balancer replacement" + }, + "@aws-cdk/aws-route53-patterns:useDistribution": { + "recommendedValue": true, + "explanation": "Use the `Distribution` resource instead of `CloudFrontWebDistribution`" + }, + "@aws-cdk/aws-cloudfront:defaultFunctionRuntimeV2_0": { + "recommendedValue": true, + "explanation": "Use cloudfront-js-2.0 as the default runtime for CloudFront Functions" + }, + "@aws-cdk/aws-elasticloadbalancingv2:usePostQuantumTlsPolicy": { + "recommendedValue": true, + "explanation": "When enabled, HTTPS/TLS listeners use post-quantum TLS policy by default" + }, + "@aws-cdk/core:automaticL1Traits": { + "recommendedValue": true, + "explanation": "Automatically use the default L1 traits for L1 constructs`", + "unconfiguredBehavesLike": { + "v2": true + } + }, + "@aws-cdk/aws-batch:defaultToAL2023": { + "recommendedValue": true, + "explanation": "Use AL2023 as the default imageType for EC2 Batch compute environments instead of the deprecated AL2" + }, + "@aws-cdk/aws-eks:defaultToAL2023": { + "recommendedValue": true, + "explanation": "Use AL2023 as the default AMI type for EKS managed node groups using non-GPU instance types instead of the deprecated AL2" + }, + "@aws-cdk/core:annotationsInValidationReport": { + "recommendedValue": true, + "explanation": "Include construct annotations (warnings and errors) in the policy validation report" + }, + "@aws-cdk/core:defaultCrossStackReferences": { + "recommendedValue": "weak", + "explanation": "Controls whether cross-stack references are strong, weak, or both", + "unconfiguredBehavesLike": { + "v2": "strong" + } + }, + "@aws-cdk/core:validateAgainstDefaultRules": { + "recommendedValue": true, + "explanation": "Treat CloudFormation Validate findings as errors" + } + } + } + } + }, + "minimumCliVersion": "2.1140.0" +} \ No newline at end of file diff --git a/cdk.out/tree.json b/cdk.out/tree.json new file mode 100644 index 0000000..79e8142 --- /dev/null +++ b/cdk.out/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"2.268.0"},"children":{"BetaSupplierSiteStack":{"id":"BetaSupplierSiteStack","path":"BetaSupplierSiteStack","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"2.268.0"},"children":{"BetaSupplierSiteBucket":{"id":"BetaSupplierSiteBucket","path":"BetaSupplierSiteStack/BetaSupplierSiteBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/BetaSupplierSiteBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:logicalId":"BetaSupplierSiteBucketC3053F9A","aws:cdk:cloudformation:props":{"bucketEncryption":{"serverSideEncryptionConfiguration":[{"serverSideEncryptionByDefault":{"sseAlgorithm":"AES256"}}]},"bucketName":"betasuppliersite-764709663363-ap-south-2","publicAccessBlockConfiguration":{"blockPublicAcls":true,"blockPublicPolicy":true,"ignorePublicAcls":true,"restrictPublicBuckets":true},"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"}]}}},"Policy":{"id":"Policy","path":"BetaSupplierSiteStack/BetaSupplierSiteBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/BetaSupplierSiteBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:logicalId":"BetaSupplierSiteBucketPolicy7E1C9F1E","aws:cdk:cloudformation:props":{"bucket":{"Ref":"BetaSupplierSiteBucketC3053F9A"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["BetaSupplierSiteBucketC3053F9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["BetaSupplierSiteBucketC3053F9A","Arn"]},"/*"]]}]},{"Action":"s3:GetObject","Condition":{"StringEquals":{"AWS:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":cloudfront::",{"Ref":"AWS::AccountId"},":distribution/",{"Ref":"BetaSupplierSiteDistributionD03E58A9"}]]}}},"Effect":"Allow","Principal":{"Service":"cloudfront.amazonaws.com"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["BetaSupplierSiteBucketC3053F9A","Arn"]},"/*"]]}}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"BetaSupplierSiteStack/BetaSupplierSiteBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.268.0"},"children":{"Default":{"id":"Default","path":"BetaSupplierSiteStack/BetaSupplierSiteBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.268.0"}}}}}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"2.268.0"},"children":{"Staging":{"id":"Staging","path":"BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.268.0"}},"Role":{"id":"Role","path":"BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.268.0"}},"Handler":{"id":"Handler","path":"BetaSupplierSiteStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.268.0"}}}},"TiproZone":{"id":"TiproZone","path":"BetaSupplierSiteStack/TiproZone","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"2.268.0"}},"ApiRecord":{"id":"ApiRecord","path":"BetaSupplierSiteStack/ApiRecord","constructInfo":{"fqn":"aws-cdk-lib.aws_route53.ARecord","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/ApiRecord/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:logicalId":"ApiRecord15755A12","aws:cdk:cloudformation:props":{"hostedZoneId":"Z04761903HH8T88QWE7JX","name":"api.tipro.in.","resourceRecords":["16.113.57.127"],"ttl":"1800","type":"A"}}}}},"SiteCertificate":{"id":"SiteCertificate","path":"BetaSupplierSiteStack/SiteCertificate","constructInfo":{"fqn":"aws-cdk-lib.aws_certificatemanager.DnsValidatedCertificate","version":"2.268.0"},"children":{"CertificateRequestorFunction":{"id":"CertificateRequestorFunction","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"2.268.0"},"children":{"ServiceRole":{"id":"ServiceRole","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:logicalId":"SiteCertificateCertificateRequestorFunctionServiceRole645E891D","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:logicalId":"SiteCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy96ED5C9C","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["acm:AddTagsToCertificate","acm:DeleteCertificate","acm:DescribeCertificate","acm:RequestCertificate","route53:GetChange"],"Effect":"Allow","Resource":"*"},{"Action":"route53:changeResourceRecordSets","Condition":{"ForAllValues:StringEquals":{"route53:ChangeResourceRecordSetsRecordTypes":["CNAME"],"route53:ChangeResourceRecordSetsActions":["UPSERT"]},"ForAllValues:StringLike":{"route53:ChangeResourceRecordSetsNormalizedRecordNames":["*.partners.tipro.in"]}},"Effect":"Allow","Resource":"arn:aws:route53:::hostedzone/Z04761903HH8T88QWE7JX"}],"Version":"2012-10-17"},"policyName":"SiteCertificateCertificateRequestorFunctionServiceRoleDefaultPolicy96ED5C9C","roles":[{"Ref":"SiteCertificateCertificateRequestorFunctionServiceRole645E891D"}]}}}}}}},"Code":{"id":"Code","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"2.268.0"},"children":{"Stage":{"id":"Stage","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"2.268.0"}},"AssetBucket":{"id":"AssetBucket","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"2.268.0"}}}},"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:logicalId":"SiteCertificateCertificateRequestorFunction7CFA7DEA","aws:cdk:cloudformation:props":{"code":{"s3Bucket":"cdk-hnb659fds-assets-764709663363-ap-south-2","s3Key":"ffb21b7e396cc684c46812aea1d2ff7ea22401e05038c047ae9f071082c68586.zip"},"handler":"index.certificateRequestHandler","role":{"Fn::GetAtt":["SiteCertificateCertificateRequestorFunctionServiceRole645E891D","Arn"]},"runtime":"nodejs24.x","timeout":900}}}}},"CertificateRequestorResource":{"id":"CertificateRequestorResource","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"2.268.0"},"children":{"Default":{"id":"Default","path":"BetaSupplierSiteStack/SiteCertificate/CertificateRequestorResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.268.0"}}}}}},"BetaSupplierSiteDistribution":{"id":"BetaSupplierSiteDistribution","path":"BetaSupplierSiteStack/BetaSupplierSiteDistribution","constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.Distribution","version":"2.268.0"},"children":{"Origin1":{"id":"Origin1","path":"BetaSupplierSiteStack/BetaSupplierSiteDistribution/Origin1","constructInfo":{"fqn":"constructs.Construct","version":"10.8.1"},"children":{"S3OriginAccessControl":{"id":"S3OriginAccessControl","path":"BetaSupplierSiteStack/BetaSupplierSiteDistribution/Origin1/S3OriginAccessControl","constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.S3OriginAccessControl","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/BetaSupplierSiteDistribution/Origin1/S3OriginAccessControl/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CfnOriginAccessControl","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CloudFront::OriginAccessControl","aws:cdk:cloudformation:logicalId":"BetaSupplierSiteDistributionOrigin1S3OriginAccessControlF9377C01","aws:cdk:cloudformation:props":{"originAccessControlConfig":{"name":"BetaSupplierSiteStackBetaSupOrigin1S3OriginAccessControl50127AEA","signingBehavior":"always","signingProtocol":"sigv4","originAccessControlOriginType":"s3"}}}}}}}},"Origin2":{"id":"Origin2","path":"BetaSupplierSiteStack/BetaSupplierSiteDistribution/Origin2","constructInfo":{"fqn":"constructs.Construct","version":"10.8.1"}},"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/BetaSupplierSiteDistribution/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_cloudfront.CfnDistribution","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::CloudFront::Distribution","aws:cdk:cloudformation:logicalId":"BetaSupplierSiteDistributionD03E58A9","aws:cdk:cloudformation:props":{"distributionConfig":{"enabled":true,"origins":[{"domainName":{"Fn::GetAtt":["BetaSupplierSiteBucketC3053F9A","RegionalDomainName"]},"id":"BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin118CF032F","s3OriginConfig":{"originAccessIdentity":""},"originAccessControlId":{"Fn::GetAtt":["BetaSupplierSiteDistributionOrigin1S3OriginAccessControlF9377C01","Id"]}},{"domainName":"api.tipro.in","id":"BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin26FE0C2F5","customOriginConfig":{"originSslProtocols":["TLSv1.2"],"originProtocolPolicy":"http-only","httpPort":8080}}],"defaultCacheBehavior":{"pathPattern":"*","targetOriginId":"BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin118CF032F","allowedMethods":["GET","HEAD"],"cachedMethods":["GET","HEAD"],"cachePolicyId":"658327ea-f89d-4fab-a63d-7e88639e58f6","compress":true,"viewerProtocolPolicy":"redirect-to-https"},"aliases":["partners.tipro.in"],"cacheBehaviors":[{"pathPattern":"/api/*","targetOriginId":"BetaSupplierSiteStackBetaSupplierSiteDistributionOrigin26FE0C2F5","allowedMethods":["GET","HEAD","OPTIONS","PUT","PATCH","POST","DELETE"],"cachePolicyId":"4135ea2d-6df8-44a3-9df3-4b5a84be39ad","compress":true,"originRequestPolicyId":"216adef6-5c7f-47e4-b989-5492eafa07d3","viewerProtocolPolicy":"redirect-to-https"}],"customErrorResponses":[{"errorCachingMinTtl":0,"errorCode":404,"responseCode":200,"responsePagePath":"/index.html"},{"errorCachingMinTtl":0,"errorCode":403,"responseCode":200,"responsePagePath":"/index.html"}],"defaultRootObject":"index.html","httpVersion":"http2","ipv6Enabled":true,"viewerCertificate":{"acmCertificateArn":{"Fn::GetAtt":["SiteCertificateCertificateRequestorResource6021082A","Arn"]},"minimumProtocolVersion":"TLSv1.2_2021","sslSupportMethod":"sni-only"}}}}}}},"BetaSupplierSiteBucketName":{"id":"BetaSupplierSiteBucketName","path":"BetaSupplierSiteStack/BetaSupplierSiteBucketName","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.268.0"}},"BetaSupplierSiteCloudFrontDomainName":{"id":"BetaSupplierSiteCloudFrontDomainName","path":"BetaSupplierSiteStack/BetaSupplierSiteCloudFrontDomainName","constructInfo":{"fqn":"aws-cdk-lib.CfnOutput","version":"2.268.0"}},"SiteAliasRecord":{"id":"SiteAliasRecord","path":"BetaSupplierSiteStack/SiteAliasRecord","constructInfo":{"fqn":"aws-cdk-lib.aws_route53.ARecord","version":"2.268.0"},"children":{"Resource":{"id":"Resource","path":"BetaSupplierSiteStack/SiteAliasRecord/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_route53.CfnRecordSet","version":"2.268.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Route53::RecordSet","aws:cdk:cloudformation:logicalId":"SiteAliasRecord3C0AF5BF","aws:cdk:cloudformation:props":{"aliasTarget":{"hostedZoneId":{"Fn::FindInMap":["AWSCloudFrontPartitionHostedZoneIdMap",{"Ref":"AWS::Partition"},"zoneId"]},"dnsName":{"Fn::GetAtt":["BetaSupplierSiteDistributionD03E58A9","DomainName"]}},"hostedZoneId":"Z04761903HH8T88QWE7JX","name":"partners.tipro.in.","type":"A"}}}}},"AWSCloudFrontPartitionHostedZoneIdMap":{"id":"AWSCloudFrontPartitionHostedZoneIdMap","path":"BetaSupplierSiteStack/AWSCloudFrontPartitionHostedZoneIdMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"2.268.0"}},"CDKMetadata":{"id":"CDKMetadata","path":"BetaSupplierSiteStack/CDKMetadata","constructInfo":{"fqn":"constructs.Construct","version":"10.8.1"},"children":{"Default":{"id":"Default","path":"BetaSupplierSiteStack/CDKMetadata/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"2.268.0"}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"BetaSupplierSiteStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"2.268.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BetaSupplierSiteStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"2.268.0"}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.8.1"}}}}} \ No newline at end of file diff --git a/cdk.out/validation-report.json b/cdk.out/validation-report.json new file mode 100644 index 0000000..6592032 --- /dev/null +++ b/cdk.out/validation-report.json @@ -0,0 +1,5 @@ +{ + "version": "54.0.0", + "title": "Validation Report", + "pluginReports": [] +} \ No newline at end of file diff --git a/cypress.config.ts b/cypress.config.ts deleted file mode 100644 index c200290..0000000 --- a/cypress.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from "cypress"; - -export default defineConfig({ - e2e: { - baseUrl: "http://localhost:5173", - supportFile: false, - specPattern: "cypress/e2e/**/*.cy.{js,jsx,ts,tsx}" - }, -}); diff --git a/cypress/downloads/seller_product_template.csv b/cypress/downloads/seller_product_template.csv deleted file mode 100644 index 6ade7ad..0000000 --- a/cypress/downloads/seller_product_template.csv +++ /dev/null @@ -1,3 +0,0 @@ -Title,SKU,Category,Price,Stock,Description -Silk Banarasi Saree,SAR-BAN-101,Apparel,120.00,15,Pure handloom zardozi border -Wooden Carved Ganesha,GAN-302,Home Decor,85.00,5,Premium teak wood hand carved \ No newline at end of file diff --git a/cypress/e2e/api.cy.ts b/cypress/e2e/api.cy.ts deleted file mode 100644 index 9a699c7..0000000 --- a/cypress/e2e/api.cy.ts +++ /dev/null @@ -1,62 +0,0 @@ -describe('Seller Central Django Backend API E2E Tests', () => { - const backendUrl = 'http://16.113.57.127:8080/api'; - - it('verifies product list', () => { - cy.request(`${backendUrl}/products/`).then((response) => { - expect(response.status).to.eq(200); - expect(response.body).to.be.an('array'); - }); - }); - - it('creates and deletes a product', () => { - const uniqueSku = `SKU-CY-${Date.now()}`; - cy.request('POST', `${backendUrl}/products/`, { - title: 'Cypress Test Silk Scarf', - category: 'Apparel', - price: '55.00', - stock: 20, - sku: uniqueSku - }).then((response) => { - expect(response.status).to.eq(201); - expect(response.body.sku).to.eq(uniqueSku); - const prodId = response.body.id; - - // Delete the created product - cy.request('DELETE', `${backendUrl}/products/${prodId}/`).then((delRes) => { - expect(delRes.status).to.eq(204); // django rest framework delete returns 204 No Content - }); - }); - }); - - it('verifies order list and acceptance', () => { - cy.request(`${backendUrl}/orders/`).then((response) => { - expect(response.status).to.eq(200); - expect(response.body).to.be.an('array'); - expect(response.body.length).to.be.greaterThan(0); - - const pendingOrder = response.body.find((o: any) => o.status === 'Pending Acceptance'); - if (pendingOrder) { - cy.request('POST', `${backendUrl}/orders/${pendingOrder.id}/accept/`).then((acceptRes) => { - expect(acceptRes.status).to.eq(200); - expect(acceptRes.body.status).to.eq('Ready to Ship'); - }); - } - }); - }); - - it('verifies wallet summary and payout withdrawal', () => { - cy.request(`${backendUrl}/wallet/`).then((response) => { - expect(response.status).to.eq(200); - expect(response.body).to.have.property('outstanding'); - expect(response.body).to.have.property('withdrawn'); - - const currentOutstanding = parseFloat(response.body.outstanding); - if (currentOutstanding > 10) { - cy.request('POST', `${backendUrl}/wallet/withdraw/`, { amount: '10.00' }).then((withdrawRes) => { - expect(withdrawRes.status).to.eq(200); - expect(parseFloat(withdrawRes.body.outstanding)).to.eq(currentOutstanding - 10); - }); - } - }); - }); -}); diff --git a/cypress/e2e/onboarding.cy.ts b/cypress/e2e/onboarding.cy.ts deleted file mode 100644 index a520ec2..0000000 --- a/cypress/e2e/onboarding.cy.ts +++ /dev/null @@ -1,154 +0,0 @@ -describe('Supplier Portal Onboarding & Feature E2E Flow', () => { - it('completes the registration, contact verification, document upload, location pinning, welcome tour, order acceptance, and barcode generation', () => { - // 1. Visit Landing Page - cy.visit('/'); - cy.contains('Sell Globally.').should('be.visible'); - - // 2. Registration Page - cy.contains('Get Started Today').click(); - const randUser = `test_seller_${Date.now()}@example.com`; - cy.get('input#reg-email').type(randUser); - cy.get('input#reg-phone').type('9876543210'); - cy.get('input#reg-pass').type('super_secure_pass_123'); - cy.get('input#reg-confirm-pass').type('super_secure_pass_123'); - cy.get('input#reg-policy').check(); - cy.get('button').contains('Register Business').click(); - - // 3. Step 1: Contact Verification - cy.contains('Step 1 of 3: Contact Verification').should('be.visible'); - cy.contains('Send WhatsApp OTP').click(); - cy.get('input[placeholder="Enter 123456"]').first().type('123456'); - cy.contains('Verify Code').first().click(); - cy.contains('✓ Mobile & WhatsApp Verified').should('be.visible'); - - cy.contains('Send Email OTP').click(); - cy.get('input[placeholder="Enter 123456"]').last().type('123456'); - cy.contains('Verify Code').last().click(); - cy.contains('✓ Email Verified').should('be.visible'); - cy.contains('Next Step: Identity Verification').click(); - - // 4. Step 2: Tax & Identity Verification - cy.contains('Step 2 of 3: Tax & Identity Verification').should('be.visible'); - cy.get('input#verify-gst').clear().type('29AAAAA1111A1Z1'); - cy.contains('Submit GSTIN').click(); - cy.contains('verification will be completed within next 24 hrs').should('be.visible'); - - // Upload mock Aadhaar & PAN files - cy.get('input#aadhar-upload').selectFile({ - contents: Cypress.Buffer.from('mock aadhaar pdf'), - fileName: 'aadhar_card.pdf', - mimeType: 'application/pdf', - }, { force: true }); - cy.contains('Selected: aadhar_card.pdf').should('be.visible'); - - cy.get('input#pan-upload').selectFile({ - contents: Cypress.Buffer.from('mock pan pdf'), - fileName: 'pan_card.pdf', - mimeType: 'application/pdf', - }, { force: true }); - cy.contains('Selected: pan_card.pdf').should('be.visible'); - - cy.contains('Next Step: Store & Location').click(); - - // 5. Step 3: Store & Pickup Location Setup - cy.contains('Step 3 of 3: Store & Pickup Location').should('be.visible'); - cy.get('input#store-name').clear().type('Teak Wood Craft Store'); - cy.get('textarea#store-bio').clear().type('Teak wood hand-carved home decor elements.'); - - // Test interactive map coordinate pinning - cy.contains('Store Location on Map *').should('be.visible'); - cy.get('span').contains('Click anywhere on the map grid to pin location').parent().click(100, 80); - cy.contains('Coordinates: Lat').should('be.visible'); - - cy.get('input#location-text').should('not.have.value', ''); - cy.get('input#loc-city').clear().type('Bangalore'); - cy.get('input#loc-pincode').clear().type('560001'); - cy.contains('Submit Supplier Profile').click(); - - // 6. Setup Welcome Tour Stepper - cy.contains('Supplier Account Under Review ⏳').should('be.visible'); - cy.contains('Start Guided Tour 🎬').click(); - cy.contains('📦 Products & Inventory Management').should('be.visible'); - cy.contains('Next: Order Management').click(); - cy.contains('🚚 Order Acceptance Control').should('be.visible'); - cy.contains('Next: Barcode Generation').click(); - cy.contains('🏷️ Barcode Identification & Tracking').should('be.visible'); - cy.contains('Next: Earnings & Wallet').click(); - cy.contains('💼 Wallet & Payout Withdrawals').should('be.visible'); - cy.contains('Explore Dashboard 🚀').click(); - - // 7. Check Active Dashboard Tab - cy.contains('Performance Analytics').should('be.visible'); - - // 8. Manage Products tab & Bulk template download - cy.contains('Manage Products').click(); - cy.contains('Active Inventory').should('be.visible'); - cy.contains('📥 Download Sample Excel Template').click(); - - // 9. Orders Acceptance Flow - cy.contains('Orders & Transit').click(); - cy.contains('Active Orders & Payout status').should('be.visible'); - cy.contains('Pending Acceptance').should('be.visible'); - cy.get('button').contains('Accept').first().click(); - cy.contains('Ready to Ship').should('be.visible'); - - // 10. Barcode Generator - cy.contains('Barcode Generator').click(); - cy.contains('Product Barcode Generator').should('be.visible'); - cy.get('select#barcode-product').select(1); - cy.contains('Generate Barcode Graphic').click(); - cy.contains('Generated Barcode Preview').should('be.visible'); - cy.contains('Print Label').should('be.visible'); - cy.contains('Download SVG').should('be.visible'); - }); - - it('enforces security constraints and validation rules (negative test cases)', () => { - // 1. Visit Home and verify dashboard components are not in DOM (route guarding) - cy.visit('/'); - cy.get('.dashboard-container').should('not.exist'); - cy.get('.sidebar-menu').should('not.exist'); - - // 2. Go to Registration - cy.contains('Get Started Today').click(); - const randSecurityUser = `security_test_${Date.now()}@example.com`; - cy.get('input#reg-email').type(randSecurityUser); - cy.get('input#reg-phone').type('9000000000'); - cy.get('input#reg-pass').type('password123'); - cy.get('input#reg-confirm-pass').type('password123'); - cy.get('input#reg-policy').check(); - cy.get('button').contains('Register Business').click(); - - // 3. Step 1: Negative OTP validations - cy.contains('Step 1 of 3: Contact Verification').should('be.visible'); - - // Proceed button must be disabled initially - cy.get('button').contains('Next Step: Identity Verification').should('be.disabled'); - - // Submit invalid WhatsApp OTP - cy.contains('Send WhatsApp OTP').click(); - cy.get('input[placeholder="Enter 123456"]').first().type('000000'); - - // Capture alert for incorrect OTP - const alertStub = cy.stub(); - cy.on('window:alert', alertStub); - - cy.contains('Verify Code').first().click().then(() => { - expect(alertStub).to.have.been.calledWith('Incorrect code. Enter 123456'); - }); - cy.contains('✓ Mobile & WhatsApp Verified').should('not.exist'); - - // Correct the code to enable proceed - cy.get('input[placeholder="Enter 123456"]').first().clear().type('123456'); - cy.contains('Verify Code').first().click(); - cy.contains('✓ Mobile & WhatsApp Verified').should('be.visible'); - - // Submit invalid Email OTP - cy.contains('Send Email OTP').click(); - cy.get('input[placeholder="Enter 123456"]').last().type('999999'); - cy.contains('Verify Code').last().click().then(() => { - expect(alertStub).to.have.been.calledWith('Incorrect code. Enter 123456'); - }); - cy.contains('✓ Email Verified').should('not.exist'); - cy.get('button').contains('Next Step: Identity Verification').should('be.disabled'); - }); -}); diff --git a/fix.py b/fix.py deleted file mode 100644 index 1f80a3b..0000000 --- a/fix.py +++ /dev/null @@ -1,5 +0,0 @@ -with open('/home/vignesh/github/Tiproemail/aws_cdk/lib/betasupplier-site-stack.ts', 'r') as f: - content = f.read() -content = content.replace(' }\n errorResponses: [', ' },\n errorResponses: [') -with open('/home/vignesh/github/Tiproemail/aws_cdk/lib/betasupplier-site-stack.ts', 'w') as f: - f.write(content) diff --git a/guide.md b/guide.md deleted file mode 100644 index fa71627..0000000 --- a/guide.md +++ /dev/null @@ -1,86 +0,0 @@ -# Supplier Portal - View & Navigation Guide - -This guide explains how to start the development server, navigate the screens, and view the onboarding flows and simulated dashboard preview. - -## 1. Running the Portal Locally - -To start the Vite development server, run the following command in the project root: - -```bash -npm run dev -``` - -By default, the server runs at **[http://localhost:5173/](http://localhost:5173/)** (or the port specified in your console). - ---- - -## 2. Page Routing & State Mapping - -The portal uses a client-side state router mapping component views to logical routes: - -| Route State | Component/View Description | Navigable Via | -| :--- | :--- | :--- | -| `home` | **Landing Page**: Brand value proposition, hero banner, primary action CTAs. | Logo click, "Platform" header link. | -| `about` | **About Us**: Organization mission details and team profiles. | "Success Stories" header link. | -| `contact` | **Contact Support**: "Get in Touch" inquiry form and help desk coordinates. | "Support" header link. | -| `login` | **Supplier Login**: Account login via password credentials or OTP mock. | "Login" header button. | -| `signup` | **Supplier Registration**: Fields for business email, password, and GSTIN. | "Get Started" header button. | -| `profile-completion` | **Profile Wizard (Step 2)**: Logo picker, bio, and interactive GSTIN validation. | Auto-redirect on Signup form submit. | -| `confirmation` | **Dashboard Preview (Step 3)**: Payout status notifications and mock graphs. | Auto-redirect on Profile Completion save. | -| `dashboard` | **Seller Dashboard & Tools**: Overview performance metrics, single/bulk product uploads, orders tracking log, returns approvals, wallet payouts, and settings configuration. | Click "Go to Dashboard" button in confirmation, or submit Login form. | - ---- te - -## 3. Navigating the Phase 1 Onboarding Flow ) - -You can step through the interactive onboarding flow sequentially to experience the full walkthrough: - -### Step A: The Landing Page -- Open the application. You will see the **Global Artisans Hub** landing page with the primary theme (Deep Navy Blue headers/footers, Amber Gold accents, and Warm Cream backgrounds). -- Click **Platform**, **Success Stories** (About Us), or **Support** (Contact Us) in the header navigation to view the respective information layouts. - -### Step B: Account Registration -1. Click **Get Started** in the header. -2. The view will switch to the **Register** tab. -3. Fill in the required fields: - - **Business Email** - - **Mobile Number** - - **Create Password** - - **GSTIN / Tax ID** -4. Click **Register Business**. - -### Step C: Profile Completion (Step 2 of 3) -1. You will be taken to the **Complete Your Supplier Profile** wizard. -2. Enter a **Store Display Name**. -3. (Optional) Choose an image file to upload. It will immediately show an avatar logo preview. -4. Enter an **About Your Craft / Business** description. -5. Fill in the **Business Address for Pickup** fields (Street Address, City, State, Pincode). -6. Enter a GSTIN, and click **Verify GSTIN**. The button will show a loading spinner, then update to **Verified ✓** status. -7. Click **Save & Continue**. - -### Step D: Onboarding Confirmation (Step 3 of 3) -- You will arrive at the **Welcome to Global Artisans Hub!** confirmation view. -- Click **Go to Dashboard (Preview Only)** to go to the live seller portal dashboard page. -- Alternatively, you can directly access the dashboard page by going to **Login** -> enter credentials -> click **Secure Login**. - -### Step E: Navigating the Seller Dashboard & Tools -Once inside the active dashboard (`/dashboard`), use the left sidebar menu to navigate the tools: -1. **Overview & Analytics**: View Sales, net margins, stock, and returns. Toggle the date filters (Year, Week, Day, Custom Date) to see the metrics update dynamically. -2. **Manage Products**: - - View your active inventory listing. - - Fill out the **Upload Product** form on the right to add a product or click **Edit** on a row to modify it. - - Click the bulk upload zone to simulate importing products via CSV files. -3. **Orders & Transit**: Track active orders, status (Ready to Ship, Shipped, Delivered), carriers, and tracking coordinates. -4. **Returns Management**: View buyer return requests. Click **Approve** or **Reject** to update their logistics status in the warehouse transit log. -5. **Wallet & Payouts**: Enter an amount to process a withdrawal from your outstanding ready balance. -6. **Store Settings**: Update your store name, logo file, bio, and pickup coordinates. - ---- - -## 4. Run Automated Component Tests - -To run the Vitest unit tests verifying these navigation flows and tools, execute: - -```bash -npm run test -``` diff --git a/index.html b/index.html deleted file mode 100644 index adad790..0000000 --- a/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - sellercentral - - - - - - - - - - -
- - - diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 890f2ea..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6601 +0,0 @@ -{ - "name": "sellercentral", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "sellercentral", - "version": "0.0.0", - "dependencies": { - "bulma": "^1.0.4", - "react": "^19.2.8", - "react-dom": "^19.2.8", - "recharts": "^3.10.1" - }, - "devDependencies": { - "@playwright/test": "^1.49.0", - "@tailwindcss/postcss": "^4.3.3", - "@testing-library/dom": "^10.4.1", - "@testing-library/jest-dom": "^7.0.0", - "@testing-library/react": "^16.3.2", - "@types/node": "^24.13.3", - "@types/react": "^19.2.17", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.4", - "@vitest/ui": "^4.1.10", - "aws-cdk": "^2.1140.0", - "aws-cdk-lib": "^2.268.0", - "constructs": "^10.8.1", - "cypress": "^15.20.0", - "jsdom": "^30.0.1", - "oxlint": "^1.75.0", - "source-map-support": "^0.5.21", - "tsx": "^4.23.13", - "typescript": "~6.0.2", - "vite": "^8.2.0", - "vitest": "^4.1.10" - } - }, - "node_modules/@adobe/css-tools": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", - "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@asamuzakjp/css-color": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-6.0.7.tgz", - "integrity": "sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^3.3.0", - "@csstools/css-color-parser": "^4.1.10", - "@csstools/css-parser-algorithms": "^4.0.0", - "@csstools/css-tokenizer": "^4.0.0", - "lru-cache": "^11.5.2" - }, - "engines": { - "node": "^22.13.0 || >=24.0.0" - } - }, - "node_modules/@asamuzakjp/dom-selector": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-8.3.2.tgz", - "integrity": "sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bidi-js": "^1.0.3", - "css-tree": "^3.2.1", - "is-potential-custom-element-name": "^1.0.1", - "lru-cache": "^11.5.2" - }, - "engines": { - "node": "^22.13.0 || >=24.0.0" - } - }, - "node_modules/@aws-cdk/asset-awscli-v1": { - "version": "2.2.292", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.292.tgz", - "integrity": "sha512-d4aMFsAFj19FtxVyw8IzlUKv5Zu4sIvgnEjI2IU6IWBJgVbJ4aFnadANqYa+6MwB1CQbGOg0jh8WE77M+Nb/9A==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.2.tgz", - "integrity": "sha512-pDiuqH+qY3zM9lhhLjbKJ1tnKOHzQ2V4Wr/3qsxyKeKAkuPMI/BVGvZG1PbrikUw949cGVTfVEt4ETKKYnrj0Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@aws-cdk/cloud-assembly-schema": { - "version": "54.22.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-54.22.0.tgz", - "integrity": "sha512-vsOuFw4+UC5+m2YZLhCecxt6wibIOmXCszA4uXaBcde2tZWx06vp1z5ByHnJeLS83A11XpAkW/TiIBGCL6jxuQ==", - "bundleDependencies": [ - "jsonschema", - "semver" - ], - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jsonschema": "^1.5.0", - "semver": "^7.8.5" - }, - "engines": { - "node": ">= 18.0.0" - } - }, - "node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver": { - "version": "7.8.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bramus/specificity": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", - "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "^3.0.0" - }, - "bin": { - "specificity": "bin/cli.js" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.0.tgz", - "integrity": "sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/@csstools/css-calc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.3.0.tgz", - "integrity": "sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=20.19.0" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^4.0.0", - "@csstools/css-tokenizer": "^4.0.0" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.10.tgz", - "integrity": "sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^6.1.0", - "@csstools/css-calc": "^3.3.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^4.0.0", - "@csstools/css-tokenizer": "^4.0.0" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", - "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=20.19.0" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^4.0.0" - } - }, - "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.7.tgz", - "integrity": "sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "peerDependencies": { - "css-tree": "^3.2.1" - }, - "peerDependenciesMeta": { - "css-tree": { - "optional": true - } - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", - "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/@cypress/request": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-4.0.1.tgz", - "integrity": "sha512-y20e+e6dFYkOUUJLVUZTsJRuTiXZaUQ32WD+R/ux/HBybbTx4ge7cNINcua0pU8+SNkKuRbOF12mBmzuzM8n5w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~4.0.4", - "http-signature": "~1.4.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "^6.15.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "^5.0.0", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">= 14.17.0" - } - }, - "node_modules/@cypress/request/node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/@cypress/request/node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@cypress/request/node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", - "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", - "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", - "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", - "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", - "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", - "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", - "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", - "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", - "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", - "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", - "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", - "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", - "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", - "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", - "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", - "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", - "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", - "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", - "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", - "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", - "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", - "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", - "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", - "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", - "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", - "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@exodus/bytes": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.1.tgz", - "integrity": "sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - }, - "peerDependencies": { - "@noble/hashes": "^1.8.0 || ^2.0.0" - }, - "peerDependenciesMeta": { - "@noble/hashes": { - "optional": true - } - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.143.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz", - "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.77.0.tgz", - "integrity": "sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-android-arm64": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.77.0.tgz", - "integrity": "sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.77.0.tgz", - "integrity": "sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.77.0.tgz", - "integrity": "sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.77.0.tgz", - "integrity": "sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.77.0.tgz", - "integrity": "sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.77.0.tgz", - "integrity": "sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.77.0.tgz", - "integrity": "sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.77.0.tgz", - "integrity": "sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.77.0.tgz", - "integrity": "sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.77.0.tgz", - "integrity": "sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.77.0.tgz", - "integrity": "sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.77.0.tgz", - "integrity": "sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.77.0.tgz", - "integrity": "sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.77.0.tgz", - "integrity": "sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.77.0.tgz", - "integrity": "sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.77.0.tgz", - "integrity": "sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.77.0.tgz", - "integrity": "sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.77.0.tgz", - "integrity": "sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@playwright/test": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz", - "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.62.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@reduxjs/toolkit": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.12.0.tgz", - "integrity": "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==", - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@standard-schema/utils": "^0.3.0", - "immer": "^11.0.0", - "redux": "^5.0.1", - "redux-thunk": "^3.1.0", - "reselect": "^5.1.0" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", - "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz", - "integrity": "sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", - "integrity": "sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz", - "integrity": "sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz", - "integrity": "sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", - "integrity": "sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", - "integrity": "sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz", - "integrity": "sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz", - "integrity": "sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", - "integrity": "sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", - "integrity": "sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz", - "integrity": "sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", - "integrity": "sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", - "integrity": "sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "license": "MIT" - }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" - }, - "node_modules/@tailwindcss/node": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", - "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "enhanced-resolve": "^5.24.1", - "jiti": "^2.7.0", - "lightningcss": "1.32.0", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.3.3" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", - "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.3.3", - "@tailwindcss/oxide-darwin-arm64": "4.3.3", - "@tailwindcss/oxide-darwin-x64": "4.3.3", - "@tailwindcss/oxide-freebsd-x64": "4.3.3", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", - "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", - "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", - "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", - "@tailwindcss/oxide-linux-x64-musl": "4.3.3", - "@tailwindcss/oxide-wasm32-wasi": "4.3.3", - "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", - "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", - "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", - "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", - "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", - "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", - "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", - "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", - "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", - "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", - "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", - "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.11.1", - "@emnapi/runtime": "^1.11.1", - "@emnapi/wasi-threads": "^1.2.2", - "@napi-rs/wasm-runtime": "^1.1.4", - "@tybys/wasm-util": "^0.10.2", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", - "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", - "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.3.tgz", - "integrity": "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.3.3", - "@tailwindcss/oxide": "4.3.3", - "postcss": "^8.5.16", - "tailwindcss": "4.3.3" - } - }, - "node_modules/@testing-library/dom": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", - "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "picocolors": "1.1.1", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-7.0.0.tgz", - "integrity": "sha512-HKAH9C6mBo5yBG6yRO5i43L2iisencAo5z+o5P/saHUoY+miC5ivXRxHBJcFyB5ypPNxHJdK3BoF/3O4DIptMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.4.0", - "aria-query": "^5.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "picocolors": "^1.1.1", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=22", - "npm": ">=6", - "yarn": ">=1" - }, - "peerDependencies": { - "@testing-library/dom": ">=10 <11" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/react": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", - "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@testing-library/dom": "^10.0.0", - "@types/react": "^18.0.0 || ^19.0.0", - "@types/react-dom": "^18.0.0 || ^19.0.0", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-shape": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", - "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", - "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.18.0" - } - }, - "node_modules/@types/react": { - "version": "19.2.18", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", - "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.4.tgz", - "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sizzle": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", - "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", - "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", - "license": "MIT" - }, - "node_modules/@vitejs/plugin-react": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz", - "integrity": "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rolldown/pluginutils": "^1.0.1" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", - "babel-plugin-react-compiler": "^1.0.0", - "vite": "^8.0.0" - }, - "peerDependenciesMeta": { - "@rolldown/plugin-babel": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", - "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.1.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", - "chai": "^6.2.2", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", - "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.1.10", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", - "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", - "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.10", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", - "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.10", - "@vitest/utils": "4.1.10", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", - "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/ui": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.1.10.tgz", - "integrity": "sha512-EOUqfXHTXtpSHsyLHH40ts3Ue+hRhSGwzwzMlK0dTEOLSDYyOXLyr5JDGmHQWhN2DYI30gw6dVx3cdgM9FZl+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.10", - "fflate": "^0.8.2", - "flatted": "^3.4.2", - "pathe": "^2.0.3", - "sirv": "^3.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "4.1.10" - } - }, - "node_modules/@vitest/utils": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", - "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.10", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/ansi-escapes": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", - "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/arch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz", - "integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-cdk": { - "version": "2.1140.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1140.0.tgz", - "integrity": "sha512-myrqWFEby3w+athNRM5EcnKXpby8shR7WwhxtAE853qDPmCggvIZe0wwkUzyuWJdFVD3zP5rzRuATxnnapeXig==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "cdk": "bin/cdk" - }, - "engines": { - "node": ">= 18.0.0" - } - }, - "node_modules/aws-cdk-lib": { - "version": "2.268.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.268.0.tgz", - "integrity": "sha512-bm0mWG0xxIJtV0vhkmnFy6TFgwqBowvXeRKudhAsjM0TMOEcyFPBbwjUNlAA6S1+AjUwEt5yaMrT0A/P97lUqg==", - "bundleDependencies": [ - "@aws/cloudformation-validate", - "@balena/dockerignore", - "@aws-cdk/cloud-assembly-api", - "case", - "fs-extra", - "ignore", - "jsonschema", - "minimatch", - "punycode", - "semver", - "yaml", - "mime-types" - ], - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-cdk/asset-awscli-v1": "2.2.292", - "@aws-cdk/asset-node-proxy-agent-v6": "^2.1.2", - "@aws-cdk/cloud-assembly-api": "^2.2.6", - "@aws-cdk/cloud-assembly-schema": "^54.11.0", - "@aws/cloudformation-validate": "1.8.0-beta", - "@balena/dockerignore": "^1.0.2", - "case": "1.6.3", - "fs-extra": "^11.3.6", - "ignore": "^5.3.2", - "jsonschema": "^1.5.0", - "mime-types": "^2.1.35", - "minimatch": "^10.2.5", - "punycode": "^2.3.1", - "semver": "^7.8.5", - "yaml": "1.10.3" - }, - "engines": { - "node": ">= 20.0.0" - }, - "peerDependencies": { - "constructs": "^10.5.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/@aws-cdk/cloud-assembly-api": { - "version": "2.2.6", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "jsonschema": "^1.5.0", - "semver": "^7.8.4" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "@aws-cdk/cloud-assembly-schema": ">=54.5.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/@aws/cloudformation-validate": { - "version": "1.8.0-beta", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/aws-cdk-lib/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/aws-cdk-lib/node_modules/brace-expansion": { - "version": "5.0.9", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/aws-cdk-lib/node_modules/case": { - "version": "1.6.3", - "dev": true, - "inBundle": true, - "license": "(MIT OR GPL-3.0-or-later)", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/fs-extra": { - "version": "11.3.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/aws-cdk-lib/node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/aws-cdk-lib/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/aws-cdk-lib/node_modules/jsonfile": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/aws-cdk-lib/node_modules/jsonschema": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/aws-cdk-lib/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/aws-cdk-lib/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/aws-cdk-lib/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/aws-cdk-lib/node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/aws-cdk-lib/node_modules/semver": { - "version": "7.8.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aws-cdk-lib/node_modules/universalify": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/yaml": { - "version": "1.10.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bidi-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "require-from-string": "^2.0.2" - } - }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bulma": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-1.0.4.tgz", - "integrity": "sha512-Ffb6YGXDiZYX3cqvSbHWqQ8+LkX6tVoTcZuVB3lm93sbAVXlO0D6QlOTMnV6g18gILpAXqkG2z9hf9z4hCjz2g==", - "license": "MIT" - }, - "node_modules/cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "1.4.0" - } - }, - "node_modules/cli-truncate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", - "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^8.0.0", - "string-width": "^8.2.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", - "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/constructs": { - "version": "10.8.1", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.8.1.tgz", - "integrity": "sha512-98yGXYyhePqPYh3cYu8nzBERmAhC0DONe3UD03okK0nehZ7hYP4wgZuf02a04+uOWxnTJ5Rpp5m0GRNpwyLGGA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-tree": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", - "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.27.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/cypress": { - "version": "15.20.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.20.0.tgz", - "integrity": "sha512-yrt6z9YERlggq5FReDx+PkbjrNoEQPeM03MQC1GvLlFGItk8ervC0A/7fjzWoWVRRXjsem+Pj3cunknARl/37g==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@cypress/request": "^4.0.0", - "@cypress/xvfb": "^1.2.4", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "@types/tmp": "^0.2.3", - "arch": "^3.0.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.7.1", - "cachedir": "^2.4.0", - "chalk": "^4.1.0", - "ci-info": "^4.1.0", - "cli-table3": "0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "fs-extra": "^9.1.0", - "hasha": "5.2.2", - "is-installed-globally": "~0.4.0", - "listr2": "^9.0.5", - "lodash": "^4.17.23", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "supports-color": "^8.1.1", - "systeminformation": "^5.31.1", - "tmp": "~0.2.4", - "tree-kill": "1.2.2", - "untildify": "^4.0.0", - "yauzl": "^3.3.1" - }, - "bin": { - "cypress": "bin/cypress" - }, - "engines": { - "node": "^20.1.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", - "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", - "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^5.0.0", - "whatwg-url": "^16.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", - "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@exodus/bytes": "^1.11.0", - "tr46": "^6.0.0", - "webidl-conversions": "^8.0.1" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/dayjs": { - "version": "1.11.21", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", - "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", - "license": "MIT" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.24.5", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", - "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", - "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", - "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-toolkit": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.51.0.tgz", - "integrity": "sha512-zC2lQGkM7QX+Gm6iM3+WIdZJzthsEd14LvRNJneSO2hzyz/zNBENR8+YXWo1cKxgPBtV6ksPYHELbcwBRzmdCw==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks", - "tests/types", - "tests/browser-compat" - ] - }, - "node_modules/esbuild": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", - "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.2", - "@esbuild/android-arm": "0.28.2", - "@esbuild/android-arm64": "0.28.2", - "@esbuild/android-x64": "0.28.2", - "@esbuild/darwin-arm64": "0.28.2", - "@esbuild/darwin-x64": "0.28.2", - "@esbuild/freebsd-arm64": "0.28.2", - "@esbuild/freebsd-x64": "0.28.2", - "@esbuild/linux-arm": "0.28.2", - "@esbuild/linux-arm64": "0.28.2", - "@esbuild/linux-ia32": "0.28.2", - "@esbuild/linux-loong64": "0.28.2", - "@esbuild/linux-mips64el": "0.28.2", - "@esbuild/linux-ppc64": "0.28.2", - "@esbuild/linux-riscv64": "0.28.2", - "@esbuild/linux-s390x": "0.28.2", - "@esbuild/linux-x64": "0.28.2", - "@esbuild/netbsd-arm64": "0.28.2", - "@esbuild/netbsd-x64": "0.28.2", - "@esbuild/openbsd-arm64": "0.28.2", - "@esbuild/openbsd-x64": "0.28.2", - "@esbuild/openharmony-arm64": "0.28.2", - "@esbuild/sunos-x64": "0.28.2", - "@esbuild/win32-arm64": "0.28.2", - "@esbuild/win32-ia32": "0.28.2", - "@esbuild/win32-x64": "0.28.2" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", - "license": "MIT" - }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expect-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", - "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fflate": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", - "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", - "dev": true, - "license": "MIT" - }, - "node_modules/flatted": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", - "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", - "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@exodus/bytes": "^1.6.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/http-signature": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", - "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.18.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/immer": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.18.tgz", - "integrity": "sha512-EQyQtLiYW029lyoczMl/Hh4Xu7cDecSc58JRYpHyL4tIAu3eqd1yJzQX04d2BZHDkzFFvm6qJEJWOtfDSWAXbQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsdom": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-30.0.1.tgz", - "integrity": "sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^6.0.5", - "@asamuzakjp/dom-selector": "^8.3.0", - "@bramus/specificity": "^2.4.2", - "@csstools/css-syntax-patches-for-csstree": "^1.1.7", - "@exodus/bytes": "^1.15.1", - "css-tree": "^3.2.1", - "data-urls": "^7.0.0", - "decimal.js": "^10.6.0", - "html-encoding-sniffer": "^6.0.0", - "is-potential-custom-element-name": "^1.0.1", - "lru-cache": "^11.5.2", - "parse5": "^8.0.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^6.0.2", - "undici": "^8.9.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^8.0.1", - "whatwg-mimetype": "^5.0.0", - "whatwg-url": "^17.1.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": "^22.22.2 || ^24.15.0 || >=26.0.0" - }, - "peerDependencies": { - "canvas": "^3.2.3" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/lightningcss": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", - "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.33.0", - "lightningcss-darwin-arm64": "1.33.0", - "lightningcss-darwin-x64": "1.33.0", - "lightningcss-freebsd-x64": "1.33.0", - "lightningcss-linux-arm-gnueabihf": "1.33.0", - "lightningcss-linux-arm64-gnu": "1.33.0", - "lightningcss-linux-arm64-musl": "1.33.0", - "lightningcss-linux-x64-gnu": "1.33.0", - "lightningcss-linux-x64-musl": "1.33.0", - "lightningcss-win32-arm64-msvc": "1.33.0", - "lightningcss-win32-x64-msvc": "1.33.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", - "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", - "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", - "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", - "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", - "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", - "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", - "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", - "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", - "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", - "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", - "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/listr2": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", - "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^5.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdn-data": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", - "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.17", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", - "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obug": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz", - "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT", - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true, - "license": "MIT" - }, - "node_modules/oxlint": { - "version": "1.77.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.77.0.tgz", - "integrity": "sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==", - "dev": true, - "license": "MIT", - "bin": { - "oxlint": "bin/oxlint" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/sponsors/Boshen" - }, - "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.77.0", - "@oxlint/binding-android-arm64": "1.77.0", - "@oxlint/binding-darwin-arm64": "1.77.0", - "@oxlint/binding-darwin-x64": "1.77.0", - "@oxlint/binding-freebsd-x64": "1.77.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.77.0", - "@oxlint/binding-linux-arm-musleabihf": "1.77.0", - "@oxlint/binding-linux-arm64-gnu": "1.77.0", - "@oxlint/binding-linux-arm64-musl": "1.77.0", - "@oxlint/binding-linux-ppc64-gnu": "1.77.0", - "@oxlint/binding-linux-riscv64-gnu": "1.77.0", - "@oxlint/binding-linux-riscv64-musl": "1.77.0", - "@oxlint/binding-linux-s390x-gnu": "1.77.0", - "@oxlint/binding-linux-x64-gnu": "1.77.0", - "@oxlint/binding-linux-x64-musl": "1.77.0", - "@oxlint/binding-openharmony-arm64": "1.77.0", - "@oxlint/binding-win32-arm64-msvc": "1.77.0", - "@oxlint/binding-win32-ia32-msvc": "1.77.0", - "@oxlint/binding-win32-x64-msvc": "1.77.0" - }, - "peerDependencies": { - "oxlint-tsgolint": ">=7.0.2001", - "vite-plus": "*" - }, - "peerDependenciesMeta": { - "oxlint-tsgolint": { - "optional": true - }, - "vite-plus": { - "optional": true - } - } - }, - "node_modules/parse5": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", - "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^8.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, - "license": "MIT" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/playwright": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", - "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.62.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", - "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/postcss": { - "version": "8.5.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", - "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.17", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true, - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.15.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", - "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "es-define-property": "^1.0.1", - "side-channel": "^1.1.1" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/react": { - "version": "19.2.8", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", - "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.2.8", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", - "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.8" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "license": "MIT" - }, - "node_modules/react-redux": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.3.0.tgz", - "integrity": "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==", - "license": "MIT", - "dependencies": { - "@types/use-sync-external-store": "^0.0.6", - "use-sync-external-store": "^1.4.0" - }, - "peerDependencies": { - "@types/react": "^18.2.25 || ^19", - "react": "^18.0 || ^19", - "redux": "^5.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, - "node_modules/recharts": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.10.1.tgz", - "integrity": "sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==", - "license": "MIT", - "workspaces": [ - "www" - ], - "dependencies": { - "@reduxjs/toolkit": "^1.9.0 || 2.x.x", - "clsx": "^2.1.1", - "decimal.js-light": "^2.5.1", - "es-toolkit": "^1.39.3", - "eventemitter3": "^5.0.1", - "immer": "^11.1.8", - "react-redux": "8.x.x || 9.x.x", - "reselect": "5.2.0", - "tiny-invariant": "^1.3.3", - "use-sync-external-store": "^1.2.2", - "victory-vendor": "^37.0.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redux": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" - }, - "node_modules/redux-thunk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", - "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", - "license": "MIT", - "peerDependencies": { - "redux": "^5.0.0" - } - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reselect": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.2.0.tgz", - "integrity": "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==", - "license": "MIT" - }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rolldown": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.3.tgz", - "integrity": "sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.143.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.2.3", - "@rolldown/binding-darwin-arm64": "1.2.3", - "@rolldown/binding-darwin-x64": "1.2.3", - "@rolldown/binding-freebsd-x64": "1.2.3", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.3", - "@rolldown/binding-linux-arm64-gnu": "1.2.3", - "@rolldown/binding-linux-arm64-musl": "1.2.3", - "@rolldown/binding-linux-ppc64-gnu": "1.2.3", - "@rolldown/binding-linux-s390x-gnu": "1.2.3", - "@rolldown/binding-linux-x64-gnu": "1.2.3", - "@rolldown/binding-linux-x64-musl": "1.2.3", - "@rolldown/binding-openharmony-arm64": "1.2.3", - "@rolldown/binding-win32-arm64-msvc": "1.2.3", - "@rolldown/binding-win32-x64-msvc": "1.2.3" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", - "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4", - "side-channel-list": "^1.0.1", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sirv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", - "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/systeminformation": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.33.1.tgz", - "integrity": "sha512-DEN6ICHk3Tk0Uf/hrAHh7xlt7iL5CJFBtPZinA0H62DrGG/KPKqq/Nzj6lCXPS4Ay/sf/14zNnk9LpqKzBIc+w==", - "dev": true, - "license": "MIT", - "os": [ - "darwin", - "linux", - "win32", - "freebsd", - "openbsd", - "netbsd", - "sunos", - "android" - ], - "bin": { - "systeminformation": "lib/cli.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "funding": { - "type": "Buy me a coffee", - "url": "https://www.buymeacoffee.com/systeminfo" - } - }, - "node_modules/tailwindcss": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", - "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/throttleit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", - "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", - "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyrainbow": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz", - "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tldts": { - "version": "7.4.10", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.10.tgz", - "integrity": "sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^7.4.10" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "7.4.10", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.10.tgz", - "integrity": "sha512-KnQjp53ZekKgm/r3l+u8kJGGzYgrWdP8+Mql7a4vijh2WE0IrZWspQj/TpTxDho/YxO+AnOZnIjQcCD+q6iJsw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", - "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.2.tgz", - "integrity": "sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^7.0.5" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", - "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tsx": { - "version": "4.23.13", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.13.tgz", - "integrity": "sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.28.0" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz", - "integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=22.19.0" - } - }, - "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/victory-vendor": { - "version": "37.3.6", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", - "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", - "license": "MIT AND ISC", - "dependencies": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", - "@types/d3-scale": "^4.0.2", - "@types/d3-shape": "^3.1.0", - "@types/d3-time": "^3.0.0", - "@types/d3-timer": "^3.0.0", - "d3-array": "^3.1.6", - "d3-ease": "^3.0.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.1.0", - "d3-time": "^3.0.0", - "d3-timer": "^3.0.1" - } - }, - "node_modules/vite": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", - "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lightningcss": "^1.33.0", - "picomatch": "^4.0.5", - "postcss": "^8.5.25", - "rolldown": "~1.2.1", - "tinyglobby": "^0.2.17" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.4.0", - "esbuild": "^0.27.0 || ^0.28.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", - "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "4.1.10", - "@vitest/mocker": "4.1.10", - "@vitest/pretty-format": "4.1.10", - "@vitest/runner": "4.1.10", - "@vitest/snapshot": "4.1.10", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", - "es-module-lexer": "^2.0.0", - "expect-type": "^1.3.0", - "magic-string": "^0.30.21", - "obug": "^2.1.1", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^4.0.0-rc.1", - "tinybench": "^2.9.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.1.0", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@opentelemetry/api": "^1.9.0", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.10", - "@vitest/browser-preview": "4.1.10", - "@vitest/browser-webdriverio": "4.1.10", - "@vitest/coverage-istanbul": "4.1.10", - "@vitest/coverage-v8": "4.1.10", - "@vitest/ui": "4.1.10", - "happy-dom": "*", - "jsdom": "*", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser-playwright": { - "optional": true - }, - "@vitest/browser-preview": { - "optional": true - }, - "@vitest/browser-webdriverio": { - "optional": true - }, - "@vitest/coverage-istanbul": { - "optional": true - }, - "@vitest/coverage-v8": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "vite": { - "optional": false - } - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/webidl-conversions": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", - "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=20" - } - }, - "node_modules/whatwg-mimetype": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", - "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - } - }, - "node_modules/whatwg-url": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-17.1.0.tgz", - "integrity": "sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@exodus/bytes": "^1.15.1", - "tr46": "^6.0.0", - "webidl-conversions": "^8.0.1" - }, - "engines": { - "node": "^22.14.0 || >=24.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/yauzl": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz", - "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - }, - "engines": { - "node": ">=12" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 1edadfd..0000000 --- a/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "sellercentral", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "lint": "oxlint", - "test": "vitest run", - "preview": "vite preview", - "cypress:run": "cypress run --headed", - "cypress:open": "cypress open", - "test:playwright": "playwright test --project=chromium" - }, - "dependencies": { - "bulma": "^1.0.4", - "react": "^19.2.8", - "react-dom": "^19.2.8", - "recharts": "^3.10.1" - }, - "devDependencies": { - "@playwright/test": "^1.49.0", - "@tailwindcss/postcss": "^4.3.3", - "@testing-library/dom": "^10.4.1", - "@testing-library/jest-dom": "^7.0.0", - "@testing-library/react": "^16.3.2", - "@types/node": "^24.13.3", - "@types/react": "^19.2.17", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.4", - "@vitest/ui": "^4.1.10", - "aws-cdk": "^2.1140.0", - "aws-cdk-lib": "^2.268.0", - "constructs": "^10.8.1", - "cypress": "^15.20.0", - "jsdom": "^30.0.1", - "oxlint": "^1.75.0", - "source-map-support": "^0.5.21", - "tsx": "^4.23.13", - "typescript": "~6.0.2", - "vite": "^8.2.0", - "vitest": "^4.1.10" - } -} diff --git a/patch.diff b/patch.diff deleted file mode 100644 index acbc42f..0000000 --- a/patch.diff +++ /dev/null @@ -1,30 +0,0 @@ ---- /home/vignesh/github/Tiproemail/aws_cdk/lib/betasupplier-site-stack.ts -+++ /home/vignesh/github/Tiproemail/aws_cdk/lib/betasupplier-site-stack.ts -@@ -19,13 +19,25 @@ - -+ const ec2Origin = new origins.HttpOrigin('ec2-16-113-57-127.ap-south-2.compute.amazonaws.com', { -+ protocolPolicy: cloudfront.OriginProtocolPolicy.HTTPS_ONLY, -+ }); -+ - // 2. Create CloudFront Distribution - // origins.S3Origin will automatically create an Origin Access Identity (OAI) - // and update the S3 bucket policy to allow access only from this CloudFront distribution. - const distribution = new cloudfront.Distribution(this, 'BetaSupplierSiteDistribution', { - defaultRootObject: 'index.html', - defaultBehavior: { - origin: new origins.S3Origin(websiteBucket), - viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, - allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD, - cachedMethods: cloudfront.CachedMethods.CACHE_GET_HEAD, - cachePolicy: cloudfront.CachePolicy.CACHING_OPTIMIZED, - }, -+ additionalBehaviors: { -+ '/api/*': { -+ origin: ec2Origin, -+ viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, -+ allowedMethods: cloudfront.AllowedMethods.ALLOW_ALL, -+ cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED, -+ originRequestPolicy: cloudfront.OriginRequestPolicy.ALL_VIEWER, -+ } -+ }, - errorResponses: [ diff --git a/playwright-report/data/024c827905a170f7d40723e32cef4b24e4d8aae4.zip b/playwright-report/data/024c827905a170f7d40723e32cef4b24e4d8aae4.zip deleted file mode 100644 index ecab606..0000000 Binary files a/playwright-report/data/024c827905a170f7d40723e32cef4b24e4d8aae4.zip and /dev/null differ diff --git a/playwright-report/data/0c441ca7124c7c20040735518e332319ecba77b7.webm b/playwright-report/data/0c441ca7124c7c20040735518e332319ecba77b7.webm deleted file mode 100644 index 41e71af..0000000 Binary files a/playwright-report/data/0c441ca7124c7c20040735518e332319ecba77b7.webm and /dev/null differ diff --git a/playwright-report/data/556f7bd08dc53feb41bb150580f30939bf6a59c3.png b/playwright-report/data/556f7bd08dc53feb41bb150580f30939bf6a59c3.png deleted file mode 100644 index 2e0f968..0000000 Binary files a/playwright-report/data/556f7bd08dc53feb41bb150580f30939bf6a59c3.png and /dev/null differ diff --git a/playwright-report/data/76ab6c5bea3f19b2a3ae8a4051b7dfb3bd599694.zip b/playwright-report/data/76ab6c5bea3f19b2a3ae8a4051b7dfb3bd599694.zip deleted file mode 100644 index 70856b3..0000000 Binary files a/playwright-report/data/76ab6c5bea3f19b2a3ae8a4051b7dfb3bd599694.zip and /dev/null differ diff --git a/playwright-report/data/863e89aa6c43df86c94606bf04bc69c72959c4e6.png b/playwright-report/data/863e89aa6c43df86c94606bf04bc69c72959c4e6.png deleted file mode 100644 index 4cbd2cb..0000000 Binary files a/playwright-report/data/863e89aa6c43df86c94606bf04bc69c72959c4e6.png and /dev/null differ diff --git a/playwright-report/data/9c1e798185e02e4a274662e475edc3f2b5801da0.webm b/playwright-report/data/9c1e798185e02e4a274662e475edc3f2b5801da0.webm deleted file mode 100644 index 6db48d7..0000000 Binary files a/playwright-report/data/9c1e798185e02e4a274662e475edc3f2b5801da0.webm and /dev/null differ diff --git a/playwright-report/data/9e586c90528aff9cf023ecd81f71abea7a041564.png b/playwright-report/data/9e586c90528aff9cf023ecd81f71abea7a041564.png deleted file mode 100644 index cd64d0a..0000000 Binary files a/playwright-report/data/9e586c90528aff9cf023ecd81f71abea7a041564.png and /dev/null differ diff --git a/playwright-report/data/9f07a3b065a2908b2f366ba7481ecc6662a34ef2.zip b/playwright-report/data/9f07a3b065a2908b2f366ba7481ecc6662a34ef2.zip deleted file mode 100644 index aca3049..0000000 Binary files a/playwright-report/data/9f07a3b065a2908b2f366ba7481ecc6662a34ef2.zip and /dev/null differ diff --git a/playwright-report/data/b152eb277cb67f39c8daf7984bba2cab5e3dd11a.png b/playwright-report/data/b152eb277cb67f39c8daf7984bba2cab5e3dd11a.png deleted file mode 100644 index 6572a42..0000000 Binary files a/playwright-report/data/b152eb277cb67f39c8daf7984bba2cab5e3dd11a.png and /dev/null differ diff --git a/playwright-report/data/b7ecf93b1baa8be792c5c044505963d952ad6fc0.webm b/playwright-report/data/b7ecf93b1baa8be792c5c044505963d952ad6fc0.webm deleted file mode 100644 index 26912a7..0000000 Binary files a/playwright-report/data/b7ecf93b1baa8be792c5c044505963d952ad6fc0.webm and /dev/null differ diff --git a/playwright-report/data/e1ad354ada4e6c805183313cb0b076188d60022e.webm b/playwright-report/data/e1ad354ada4e6c805183313cb0b076188d60022e.webm deleted file mode 100644 index a348cd8..0000000 Binary files a/playwright-report/data/e1ad354ada4e6c805183313cb0b076188d60022e.webm and /dev/null differ diff --git a/playwright-report/data/fe9a68b0f7e68beeaeac3260c0844e10131bed3a.zip b/playwright-report/data/fe9a68b0f7e68beeaeac3260c0844e10131bed3a.zip deleted file mode 100644 index 98e0134..0000000 Binary files a/playwright-report/data/fe9a68b0f7e68beeaeac3260c0844e10131bed3a.zip and /dev/null differ diff --git a/playwright-report/index.html b/playwright-report/index.html deleted file mode 100644 index 33fc204..0000000 --- a/playwright-report/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - Playwright Test Report - - - - -
- - - \ No newline at end of file diff --git a/playwright-report/trace/assets/codeMirrorModule-rXmQmLUY.js b/playwright-report/trace/assets/codeMirrorModule-rXmQmLUY.js deleted file mode 100644 index e3526e1..0000000 --- a/playwright-report/trace/assets/codeMirrorModule-rXmQmLUY.js +++ /dev/null @@ -1,32 +0,0 @@ -import{O as e,k as t}from"./defaultSettingsView-B-dXF5JN.js";var n=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n||=self,n.CodeMirror=r())})(e,(function(){var e=navigator.userAgent,t=navigator.platform,n=/gecko\/\d/i.test(e),r=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),a=/Edge\/(\d+)/.exec(e),o=r||i||a,s=o&&(r?document.documentMode||6:+(a||i)[1]),c=!a&&/WebKit\//.test(e),l=c&&/Qt\/\d+\.\d+/.test(e),u=!a&&/Chrome\/(\d+)/.exec(e),d=u&&+u[1],f=/Opera\//.test(e),p=/Apple Computer/.test(navigator.vendor),m=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),h=/PhantomJS/.test(e),g=p&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),_=/Android/.test(e),v=g||_||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\bCrOS\b/.test(e),x=/win/i.test(t),S=f&&e.match(/Version\/(\d*\.\d*)/);S&&=Number(S[1]),S&&S>=15&&(f=!1,c=!0);var C=y&&(l||f&&(S==null||S<12.11)),w=n||o&&s>=9;function T(e){return RegExp(`(^|\\s)`+e+`(?:$|\\s)\\s*`)}var E=function(e,t){var n=e.className,r=T(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:``)}};function D(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function O(e,t){return D(e).appendChild(t)}function k(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),typeof t==`string`)i.appendChild(document.createTextNode(t));else if(t)for(var a=0;a=t)return o+(t-a);o+=s-a,o+=n-o%n,a=s+1}}var ie=function(){this.id=null,this.f=null,this.time=0,this.handler=L(this.onTimeout,this)};ie.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},ie.prototype.set=function(e,t){this.f=t;var n=+new Date+e;(!this.id||n=t)return r+Math.min(o,t-i);if(i+=a-r,i+=n-i%n,r=a+1,i>=t)return r}}var de=[``];function fe(e){for(;de.length<=e;)de.push(V(de)+` `);return de[e]}function V(e){return e[e.length-1]}function pe(e,t){for(var n=[],r=0;r`€`&&(e.toUpperCase()!=e.toLowerCase()||_e.test(e))}function ye(e,t){return t?t.source.indexOf(`\\w`)>-1&&ve(e)?!0:t.test(e):ve(e)}function be(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var xe=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Se(e){return e.charCodeAt(0)>=768&&xe.test(e)}function Ce(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,a=r<0?Math.ceil(i):Math.floor(i);if(a==t)return e(a)?t:n;e(a)?n=a:t=a+r}}function Te(e,t,n,r){if(!e)return r(t,n,`ltr`,0);for(var i=!1,a=0;at||t==n&&o.to==t)&&(r(Math.max(o.from,t),Math.min(o.to,n),o.level==1?`rtl`:`ltr`,a),i=!0)}i||r(t,n,`ltr`)}var Ee=null;function De(e,t,n){var r;Ee=null;for(var i=0;it)return i;a.to==t&&(a.from!=a.to&&n==`before`?r=i:Ee=i),a.from==t&&(a.from!=a.to&&n!=`before`?r=i:Ee=i)}return r??Ee}var Oe=(function(){function e(e){return e<=247?`bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN`.charAt(e):1424<=e&&e<=1524?`R`:1536<=e&&e<=1785?`nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111`.charAt(e-1536):1774<=e&&e<=2220?`r`:8192<=e&&e<=8203?`w`:e==8204?`b`:`L`}var t=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,r=/[LRr]/,i=/[Lb1n]/,a=/[1n]/;function o(e,t,n){this.level=e,this.from=t,this.to=n}return function(s,c){var l=c==`ltr`?`L`:`R`;if(s.length==0||c==`ltr`&&!t.test(s))return!1;for(var u=s.length,d=[],f=0;f-1&&(r[t]=i.slice(0,a).concat(i.slice(a+1)))}}}function W(e,t){var n=Ae(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function Pe(e){e.prototype.on=function(e,t){U(this,e,t)},e.prototype.off=function(e,t){je(this,e,t)}}function Fe(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Ie(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Le(e){return e.defaultPrevented==null?e.returnValue==0:e.defaultPrevented}function Re(e){Fe(e),Ie(e)}function ze(e){return e.target||e.srcElement}function Be(e){var t=e.which;return t??(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),y&&e.ctrlKey&&t==1&&(t=3),t}var Ve=function(){if(o&&s<9)return!1;var e=k(`div`);return`draggable`in e||`dragDrop`in e}(),He;function Ue(e){if(He==null){var t=k(`span`,`​`);O(e,k(`span`,[t,document.createTextNode(`x`)])),e.firstChild.offsetHeight!=0&&(He=t.offsetWidth<=1&&t.offsetHeight>2&&!(o&&s<8))}var n=He?k(`span`,`​`):k(`span`,`\xA0`,null,`display: inline-block; width: 1px; margin-right: -1px`);return n.setAttribute(`cm-text`,``),n}var We;function Ge(e){if(We!=null)return We;var t=O(e,document.createTextNode(`AخA`)),n=j(t,0,1).getBoundingClientRect(),r=j(t,1,2).getBoundingClientRect();return D(e),!n||n.left==n.right?!1:We=r.right-n.right<3}var Ke=` - -b`.split(/\n/).length==3?function(e){return e.split(/\r\n?|\n/)}:function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf(` -`,t);i==-1&&(i=e.length);var a=e.slice(t,e.charAt(i-1)==`\r`?i-1:i),o=a.indexOf(`\r`);o==-1?(n.push(a),t=i+1):(n.push(a.slice(0,o)),t+=o+1)}return n},qe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints(`StartToEnd`,t)!=0},Je=(function(){var e=k(`div`);return`oncopy`in e?!0:(e.setAttribute(`oncopy`,`return;`),typeof e.oncopy==`function`)})(),Ye=null;function Xe(e){if(Ye!=null)return Ye;var t=O(e,k(`span`,`x`)),n=t.getBoundingClientRect(),r=j(t,0,1).getBoundingClientRect();return Ye=Math.abs(n.left-r.left)>1}var Ze={},Qe={};function $e(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Ze[e]=t}function et(e,t){Qe[e]=t}function tt(e){if(typeof e==`string`&&Qe.hasOwnProperty(e))e=Qe[e];else if(e&&typeof e.name==`string`&&Qe.hasOwnProperty(e.name)){var t=Qe[e.name];typeof t==`string`&&(t={name:t}),e=ge(t,e),e.name=t.name}else if(typeof e==`string`&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return tt(`application/xml`);else if(typeof e==`string`&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return tt(`application/json`);return typeof e==`string`?{name:e}:e||{name:`null`}}function nt(e,t){t=tt(t);var n=Ze[t.name];if(!n)return nt(e,`text/plain`);var r=n(e,t);if(rt.hasOwnProperty(t.name)){var i=rt[t.name];for(var a in i)i.hasOwnProperty(a)&&(r.hasOwnProperty(a)&&(r[`_`+a]=r[a]),r[a]=i[a])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var o in t.modeProps)r[o]=t.modeProps[o];return r}var rt={};function it(e,t){R(t,rt.hasOwnProperty(e)?rt[e]:rt[e]={})}function at(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function ot(e,t){for(var n;e.innerMode&&(n=e.innerMode(t),!(!n||n.mode==e));)t=n.state,e=n.mode;return n||{mode:e,state:t}}function st(e,t,n){return e.startState?e.startState(t,n):!0}var ct=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};ct.prototype.eol=function(){return this.pos>=this.string.length},ct.prototype.sol=function(){return this.pos==this.lineStart},ct.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},ct.prototype.next=function(){if(this.post},ct.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},ct.prototype.skipToEnd=function(){this.pos=this.string.length},ct.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},ct.prototype.backUp=function(e){this.pos-=e},ct.prototype.column=function(){return this.lastColumnPos0?null:(i&&t!==!1&&(this.pos+=i[0].length),i)}},ct.prototype.current=function(){return this.string.slice(this.start,this.pos)},ct.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},ct.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},ct.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function K(e,t){if(t-=e.first,t<0||t>=e.size)throw Error(`There is no line `+(t+e.first)+` in the document.`);for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],a=i.chunkSize();if(t=e.first&&tn?J(n,K(e,n).text.length):bt(t,K(e,t.line).text.length)}function bt(e,t){var n=e.ch;return n==null||n>t?J(e.line,t):n<0?J(e.line,0):e}function xt(e,t){for(var n=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},Ct.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,``),size:this.baseTokens[this.baseTokenPos]-e}},Ct.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ct.fromSaved=function(e,t,n){return t instanceof St?new Ct(e,at(e.mode,t.state),n,t.lookAhead):new Ct(e,at(e.mode,t),n)},Ct.prototype.save=function(e){var t=e===!1?this.state:at(this.doc.mode,this.state);return this.maxLookAhead>0?new St(t,this.maxLookAhead):t};function wt(e,t,n,r){var i=[e.state.modeGen],a={};Nt(e,t.text,e.doc.mode,n,function(e,t){return i.push(e,t)},a,r);for(var o=n.state,s=function(r){n.baseTokens=i;var s=e.state.overlays[r],c=1,l=0;n.state=!0,Nt(e,t.text,s.mode,n,function(e,t){for(var n=c;le&&i.splice(c,1,e,i[c+1],r),c+=2,l=Math.min(e,r)}if(t)if(s.opaque)i.splice(n,c-n,e,`overlay `+t),c=n+2;else for(;ne.options.maxHighlightLength&&at(e.doc.mode,r.state),a=wt(e,t,r);i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=a.styles,a.classes?t.styleClasses=a.classes:t.styleClasses&&=null,n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Et(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return new Ct(r,!0,t);var a=Pt(e,t,n),o=a>r.first&&K(r,a-1).stateAfter,s=o?Ct.fromSaved(r,o,a):new Ct(r,st(r.mode),a);return r.iter(a,t,function(n){Dt(e,n.text,s);var r=s.line;n.stateAfter=r==t-1||r%5==0||r>=i.viewFrom&&rt.start)return a}throw Error(`Mode `+e.name+` failed to advance stream.`)}var At=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function jt(e,t,n,r){var i=e.doc,a=i.mode,o;t=X(i,t);var s=K(i,t.line),c=Et(e,t.line,n),l=new ct(s.text,e.options.tabSize,c),u;for(r&&(u=[]);(r||l.pose.options.maxHighlightLength?(s=!1,o&&Dt(e,t,r,u.pos),u.pos=t.length,d=null):d=Mt(kt(n,u,r.state,f),a),f){var p=f[0].name;p&&(d=`m-`+(d?p+` `+d:p))}if(!s||l!=d){for(;co;--s){if(s<=a.first)return a.first;var c=K(a,s-1),l=c.stateAfter;if(l&&(!n||s+(l instanceof St?l.lookAhead:0)<=a.modeFrontier))return s;var u=z(c.text,null,e.options.tabSize);(i==null||r>u)&&(i=s-1,r=u)}return i}function Ft(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var i=K(e,r).stateAfter;if(i&&(!(i instanceof St)||r+i.lookAhead=t:a.to>t);(r||=[]).push(new Bt(o,a.from,s?null:a.to))}}return r}function Gt(e,t,n){var r;if(e)for(var i=0;i=t:a.to>t)||a.from==t&&o.type==`bookmark`&&(!n||a.marker.insertLeft)){var s=a.from==null||(o.inclusiveLeft?a.from<=t:a.from0&&s)for(var y=0;y0)){var u=[c,1],d=Y(l.from,s.from),f=Y(l.to,s.to);(d<0||!o.inclusiveLeft&&!d)&&u.push({from:l.from,to:s.from}),(f>0||!o.inclusiveRight&&!f)&&u.push({from:s.to,to:l.to}),i.splice.apply(i,u),c+=u.length-3}}return i}function Yt(e){var t=e.markedSpans;if(t){for(var n=0;nt)&&(!r||$t(r,a.marker)<0)&&(r=a.marker)}return r}function an(e,t,n,r,i){var a=K(e,t),o=Lt&&a.markedSpans;if(o)for(var s=0;s=0&&d<=0||u<=0&&d>=0)&&(u<=0&&(c.marker.inclusiveRight&&i.inclusiveLeft?Y(l.to,n)>=0:Y(l.to,n)>0)||u>=0&&(c.marker.inclusiveRight&&i.inclusiveLeft?Y(l.from,r)<=0:Y(l.from,r)<0)))return!0}}}function on(e){for(var t;t=tn(e);)e=t.find(-1,!0).line;return e}function sn(e){for(var t;t=nn(e);)e=t.find(1,!0).line;return e}function cn(e){for(var t,n;t=nn(e);)e=t.find(1,!0).line,(n||=[]).push(e);return n}function ln(e,t){var n=K(e,t),r=on(n);return n==r?t:q(r)}function un(e,t){if(t>e.lastLine())return t;var n=K(e,t),r;if(!dn(e,n))return t;for(;r=nn(n);)n=r.find(1,!0).line;return q(n)+1}function dn(e,t){var n=Lt&&t.markedSpans;if(n){for(var r=void 0,i=0;it.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}var gn=function(e,t,n){this.text=e,Xt(this,t),this.height=n?n(this):1};gn.prototype.lineNo=function(){return q(this)},Pe(gn);function _n(e,t,n,r){e.text=t,e.stateAfter&&=null,e.styles&&=null,e.order!=null&&(e.order=null),Yt(e),Xt(e,n);var i=r?r(e):1;i!=e.height&&dt(e,i)}function vn(e){e.parent=null,Yt(e)}var yn={},bn={};function xn(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?bn:yn;return n[e]||(n[e]=e.replace(/\S+/g,`cm-$&`))}function Sn(e,t){var n=A(`span`,null,null,c?`padding-right: .1px`:null),r={pre:A(`pre`,[n],`CodeMirror-line`),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption(`lineWrapping`)};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var a=i?t.rest[i-1]:t.line,o=void 0;r.pos=0,r.addToken=wn,Ge(e.display.measure)&&(o=H(a,e.doc.direction))&&(r.addToken=En(r.addToken,o)),r.map=[],On(a,r,Tt(e,a,t!=e.display.externalMeasured&&q(a))),a.styleClasses&&(a.styleClasses.bgClass&&(r.bgClass=N(a.styleClasses.bgClass,r.bgClass||``)),a.styleClasses.textClass&&(r.textClass=N(a.styleClasses.textClass,r.textClass||``))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(Ue(e.display.measure))),i==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(c){var s=r.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(`.cm-tab`))&&(r.content.className=`cm-tab-wrap-hack`)}return W(e,`renderLine`,e,t.line,r.pre),r.pre.className&&(r.textClass=N(r.pre.className,r.textClass||``)),r}function Cn(e){var t=k(`span`,`•`,`cm-invalidchar`);return t.title=`\\u`+e.charCodeAt(0).toString(16),t.setAttribute(`aria-label`,t.title),t}function wn(e,t,n,r,i,a,c){if(t){var l=e.splitSpaces?Tn(t,e.trailingSpace):t,u=e.cm.state.specialChars,d=!1,f;if(!u.test(t))e.col+=t.length,f=document.createTextNode(l),e.map.push(e.pos,e.pos+t.length,f),o&&s<9&&(d=!0),e.pos+=t.length;else{f=document.createDocumentFragment();for(var p=0;;){u.lastIndex=p;var m=u.exec(t),h=m?m.index-p:t.length-p;if(h){var g=document.createTextNode(l.slice(p,p+h));o&&s<9?f.appendChild(k(`span`,[g])):f.appendChild(g),e.map.push(e.pos,e.pos+h,g),e.col+=h,e.pos+=h}if(!m)break;p+=h+1;var _=void 0;if(m[0]==` `){var v=e.cm.options.tabSize,y=v-e.col%v;_=f.appendChild(k(`span`,fe(y),`cm-tab`)),_.setAttribute(`role`,`presentation`),_.setAttribute(`cm-text`,` `),e.col+=y}else m[0]==`\r`||m[0]==` -`?(_=f.appendChild(k(`span`,m[0]==`\r`?`␍`:`␤`,`cm-invalidchar`)),_.setAttribute(`cm-text`,m[0]),e.col+=1):(_=e.cm.options.specialCharPlaceholder(m[0]),_.setAttribute(`cm-text`,m[0]),o&&s<9?f.appendChild(k(`span`,[_])):f.appendChild(_),e.col+=1);e.map.push(e.pos,e.pos+1,_),e.pos++}}if(e.trailingSpace=l.charCodeAt(t.length-1)==32,n||r||i||d||a||c){var b=n||``;r&&(b+=r),i&&(b+=i);var x=k(`span`,[f],b,a);if(c)for(var S in c)c.hasOwnProperty(S)&&S!=`style`&&S!=`class`&&x.setAttribute(S,c[S]);return e.content.appendChild(x)}e.content.appendChild(f)}}function Tn(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r=``,i=0;il&&d.from<=l));f++);if(d.to>=u)return e(n,r,i,a,o,s,c);e(n,r.slice(0,d.to-l),i,a,null,s,c),a=null,r=r.slice(d.to-l),l=d.to}}}function Dn(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||=e.content.appendChild(document.createElement(`span`)),i.setAttribute(`cm-marker`,n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function On(e,t,n){var r=e.markedSpans,i=e.text,a=0;if(!r){for(var o=1;oc||C.collapsed&&S.to==c&&S.from==c)){if(S.to!=null&&S.to!=c&&p>S.to&&(p=S.to,h=``),C.className&&(m+=` `+C.className),C.css&&(f=(f?f+`;`:``)+C.css),C.startStyle&&S.from==c&&(g+=` `+C.startStyle),C.endStyle&&S.to==p&&(b||=[]).push(C.endStyle,S.to),C.title&&((v||={}).title=C.title),C.attributes)for(var w in C.attributes)(v||={})[w]=C.attributes[w];C.collapsed&&(!_||$t(_.marker,C)<0)&&(_=S)}else S.from>c&&p>S.from&&(p=S.from)}if(b)for(var T=0;T=s)break;for(var D=Math.min(s,p);;){if(u){var O=c+u.length;if(!_){var k=O>D?u.slice(0,D-c):u;t.addToken(t,k,d?d+m:m,g,c+k.length==p?h:``,f,v)}if(O>=D){u=u.slice(D-c),c=D;break}c=O,g=``}u=i.slice(a,a=n[l++]),d=xn(n[l++],t.cm.options)}}}function kn(e,t,n){this.line=t,this.rest=cn(t),this.size=this.rest?q(V(this.rest))-n+1:1,this.node=this.text=null,this.hidden=dn(e,t)}function An(e,t,n){for(var r=[],i,a=t;a2&&a.push((c.bottom+l.top)/2-n.top)}}a.push(n.bottom-n.top)}}function ar(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;rn)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function or(e,t){t=on(t);var n=q(t),r=e.display.externalMeasured=new kn(e.doc,t,n);r.lineN=n;var i=r.built=Sn(e,r);return r.text=i.pre,O(e.display.lineMeasure,i.pre),r}function sr(e,t,n,r){return ur(e,lr(e,t),n,r)}function cr(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&tt)&&(a=c-s,i=a-1,t>=c&&(o=`right`)),i!=null){if(r=e[l+2],s==c&&n==(r.insertLeft?`left`:`right`)&&(o=n),n==`left`&&i==0)for(;l&&e[l-2]==e[l-3]&&e[l-1].insertLeft;)r=e[(l-=3)+2],o=`left`;if(n==`right`&&i==c-s)for(;l=0&&(n=e[i]).left==n.right;i--);return n}function mr(e,t,n,r){var i=fr(t.map,n,r),a=i.node,c=i.start,l=i.end,u=i.collapse,d;if(a.nodeType==3){for(var f=0;f<4;f++){for(;c&&Se(t.line.text.charAt(i.coverStart+c));)--c;for(;i.coverStart+l0&&(u=r=`right`);var p;d=e.options.lineWrapping&&(p=a.getClientRects()).length>1?p[r==`right`?p.length-1:0]:a.getBoundingClientRect()}if(o&&s<9&&!c&&(!d||!d.left&&!d.right)){var m=a.parentNode.getClientRects()[0];d=m?{left:m.left,right:m.left+Lr(e.display),top:m.top,bottom:m.bottom}:dr}for(var h=d.top-t.rect.top,g=d.bottom-t.rect.top,_=(h+g)/2,v=t.view.measure.heights,y=0;y=r.text.length?(c=r.text.length,l=`before`):c<=0&&(c=0,l=`after`),!s)return o(l==`before`?c-1:c,l==`before`);function u(e,t,n){var r=s[t].level==1;return o(n?e-1:e,r!=n)}var d=De(s,c,l),f=Ee,p=u(c,d,l==`before`);return f!=null&&(p.other=u(c,f,l!=`before`)),p}function Er(e,t){var n=0;t=X(e.doc,t),e.options.lineWrapping||(n=Lr(e.display)*t.ch);var r=K(e.doc,t.line),i=pn(r)+Qn(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function Dr(e,t,n,r,i){var a=J(e,t,n);return a.xRel=i,r&&(a.outside=r),a}function Or(e,t,n){var r=e.doc;if(n+=e.display.viewOffset,n<0)return Dr(r.first,0,null,-1,-1);var i=ft(r,n),a=r.first+r.size-1;if(i>a)return Dr(r.first+r.size-1,K(r,a).text.length,null,1,1);t<0&&(t=0);for(var o=K(r,i);;){var s=Mr(e,o,i,t,n),c=rn(o,s.ch+ +(s.xRel>0||s.outside>0));if(!c)return s;var l=c.find(1);if(l.line==i)return l;o=K(r,i=l.line)}}function kr(e,t,n,r){r-=xr(t);var i=t.text.length,a=we(function(t){return ur(e,n,t-1).bottom<=r},i,0);return i=we(function(t){return ur(e,n,t).top>r},a,i),{begin:a,end:i}}function Ar(e,t,n,r){n||=lr(e,t);var i=Sr(e,t,ur(e,n,r),`line`).top;return kr(e,t,n,i)}function jr(e,t,n,r){return e.bottom<=n?!1:e.top>n?!0:(r?e.left:e.right)>t}function Mr(e,t,n,r,i){i-=pn(t);var a=lr(e,t),o=xr(t),s=0,c=t.text.length,l=!0,u=H(t,e.doc.direction);if(u){var d=(e.options.lineWrapping?Pr:Nr)(e,t,n,a,u,r,i);l=d.level!=1,s=l?d.from:d.to-1,c=l?d.to:d.from-1}var f=null,p=null,m=we(function(t){var n=ur(e,a,t);return n.top+=o,n.bottom+=o,jr(n,r,i,!1)?(n.top<=i&&n.left<=r&&(f=t,p=n),!0):!1},s,c),h,g,_=!1;if(p){var v=r-p.left=b.bottom)}return m=Ce(t.text,m,1),Dr(n,m,g,_,r-h)}function Nr(e,t,n,r,i,a,o){var s=we(function(s){var c=i[s],l=c.level!=1;return jr(Tr(e,J(n,l?c.to:c.from,l?`before`:`after`),`line`,t,r),a,o,!0)},0,i.length-1),c=i[s];if(s>0){var l=c.level!=1,u=Tr(e,J(n,l?c.from:c.to,l?`after`:`before`),`line`,t,r);jr(u,a,o,!0)&&u.top>o&&(c=i[s-1])}return c}function Pr(e,t,n,r,i,a,o){var s=kr(e,t,r,o),c=s.begin,l=s.end;/\s/.test(t.text.charAt(l-1))&&l--;for(var u=null,d=null,f=0;f=l||p.to<=c)){var m=ur(e,r,p.level==1?Math.max(c,p.from):Math.min(l,p.to)-1).right,h=mh)&&(u=p,d=h)}}return u||=i[i.length-1],u.froml&&(u={from:u.from,to:l,level:u.level}),u}var Fr;function Ir(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Fr==null){Fr=k(`pre`,null,`CodeMirror-line-like`);for(var t=0;t<49;++t)Fr.appendChild(document.createTextNode(`x`)),Fr.appendChild(k(`br`));Fr.appendChild(document.createTextNode(`x`))}O(e.measure,Fr);var n=Fr.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),D(e.measure),n||1}function Lr(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=k(`span`,`xxxxxxxxxx`),n=k(`pre`,[t],`CodeMirror-line-like`);O(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Rr(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,a=t.gutters.firstChild,o=0;a;a=a.nextSibling,++o){var s=e.display.gutterSpecs[o].className;n[s]=a.offsetLeft+a.clientLeft+i,r[s]=a.clientWidth}return{fixedPos:zr(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function zr(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Br(e){var t=Ir(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Lr(e.display)-3);return function(i){if(dn(e.doc,i))return 0;var a=0;if(i.widgets)for(var o=0;o0&&(l=K(e.doc,c.line).text).length==c.ch){var u=z(l,l.length,e.options.tabSize)-l.length;c=J(c.line,Math.max(0,Math.round((a-er(e.display).left)/Lr(e.display))-u))}return c}function Ur(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var n=e.display.view,r=0;rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Lt&&ln(e.doc,t)i.viewFrom?Kr(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)Kr(e);else if(t<=i.viewFrom){var a=qr(e,n,n+r,1);a?(i.view=i.view.slice(a.index),i.viewFrom=a.lineN,i.viewTo+=r):Kr(e)}else if(n>=i.viewTo){var o=qr(e,t,t,-1);o?(i.view=i.view.slice(0,o.index),i.viewTo=o.lineN):Kr(e)}else{var s=qr(e,t,t,-1),c=qr(e,n,n+r,1);s&&c?(i.view=i.view.slice(0,s.index).concat(An(e,s.lineN,c.lineN)).concat(i.view.slice(c.index)),i.viewTo+=r):Kr(e)}var l=i.externalMeasured;l&&(n=i.lineN&&t=r.viewTo)){var a=r.view[Ur(e,t)];if(a.node!=null){var o=a.changes||=[];B(o,n)==-1&&o.push(n)}}}function Kr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function qr(e,t,n,r){var i=Ur(e,t),a,o=e.display.view;if(!Lt||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var s=e.display.viewFrom,c=0;c0){if(i==o.length-1)return null;a=s+o[i].size-t,i++}else a=s-t;t+=a,n+=a}for(;ln(e.doc,n)!=n;){if(i==(r<0?0:o.length-1))return null;n+=r*o[i-+(r<0)].size,i+=r}return{index:i,lineN:n}}function Jr(e,t,n){var r=e.display;r.view.length==0||t>=r.viewTo||n<=r.viewFrom?(r.view=An(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=An(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Ur(e,n)))),r.viewTo=n}function Yr(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||c.to().line0?o:e.defaultCharWidth())+`px`}if(r.other){var s=n.appendChild(k(`div`,`\xA0`,`CodeMirror-cursor CodeMirror-secondarycursor`));s.style.display=``,s.style.left=r.other.left+`px`,s.style.top=r.other.top+`px`,s.style.height=(r.other.bottom-r.other.top)*.85+`px`}}function $r(e,t){return e.top-t.top||e.left-t.left}function ei(e,t,n){var r=e.display,i=e.doc,a=document.createDocumentFragment(),o=er(e.display),s=o.left,c=Math.max(r.sizerWidth,nr(e)-r.sizer.offsetLeft)-o.right,l=i.direction==`ltr`;function u(e,t,n,r){t<0&&(t=0),t=Math.round(t),r=Math.round(r),a.appendChild(k(`div`,null,`CodeMirror-selected`,`position: absolute; left: `+e+`px; - top: `+t+`px; width: `+(n??c-e)+`px; - height: `+(r-t)+`px`))}function d(t,n,r){var a=K(i,t),o=a.text.length,d,f;function p(n,r){return wr(e,J(t,n),`div`,a,r)}function m(t,n,r){var i=Ar(e,a,null,t),o=n==`ltr`==(r==`after`)?`left`:`right`;return p(r==`after`?i.begin:i.end-(/\s/.test(a.text.charAt(i.end-1))?2:1),o)[o]}var h=H(a,i.direction);return Te(h,n||0,r??o,function(e,t,i,a){var g=i==`ltr`,_=p(e,g?`left`:`right`),v=p(t-1,g?`right`:`left`),y=n==null&&e==0,b=r==null&&t==o,x=a==0,S=!h||a==h.length-1;if(v.top-_.top<=3){var C=(l?y:b)&&x,w=(l?b:y)&&S,T=C?s:(g?_:v).left,E=w?c:(g?v:_).right;u(T,_.top,E-T,_.bottom)}else{var D,O,k,A;g?(D=l&&y&&x?s:_.left,O=l?c:m(e,i,`before`),k=l?s:m(t,i,`after`),A=l&&b&&S?c:v.right):(D=l?m(e,i,`before`):s,O=!l&&y&&x?c:_.right,k=!l&&b&&S?s:v.left,A=l?m(t,i,`after`):c),u(D,_.top,O-D,_.bottom),_.bottom0?t.blinker=setInterval(function(){e.hasFocus()||ai(e),t.cursorDiv.style.visibility=(n=!n)?``:`hidden`},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility=`hidden`)}}function ni(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||ii(e))}function ri(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&ai(e))},100)}function ii(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!=`nocursor`&&(e.state.focused||(W(e,`focus`,e,t),e.state.focused=!0,te(e.display.wrapper,`CodeMirror-focused`),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),c&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),ti(e))}function ai(e,t){e.state.delayingBlurEvent||(e.state.focused&&(W(e,`blur`,e,t),e.state.focused=!1,E(e.display.wrapper,`CodeMirror-focused`)),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function oi(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,a=0,c=0;c.005||h<-.005)&&(ie.display.sizerWidth){var _=Math.ceil(f/Lr(e.display));_>e.display.maxLineLength&&(e.display.maxLineLength=_,e.display.maxLine=l.line,e.display.maxLineChanged=!0)}}}Math.abs(a)>2&&(t.scroller.scrollTop+=a)}function si(e){if(e.widgets)for(var t=0;t=o&&(a=ft(t,pn(K(t,c))-e.wrapper.clientHeight),o=c)}return{from:a,to:Math.max(o,a+1)}}function li(e,t){if(!G(e,`scrollCursorIntoView`)){var n=e.display,r=n.sizer.getBoundingClientRect(),i=null,a=n.wrapper.ownerDocument;if(t.top+r.top<0?i=!0:t.bottom+r.top>(a.defaultView.innerHeight||a.documentElement.clientHeight)&&(i=!1),i!=null&&!h){var o=k(`div`,`​`,null,`position: absolute; - top: `+(t.top-n.viewOffset-Qn(e.display))+`px; - height: `+(t.bottom-t.top+tr(e)+n.barHeight)+`px; - left: `+t.left+`px; width: `+Math.max(2,t.right-t.left)+`px;`);e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function ui(e,t,n,r){r??=0;var i;!e.options.lineWrapping&&t==n&&(n=t.sticky==`before`?J(t.line,t.ch+1,`before`):t,t=t.ch?J(t.line,t.sticky==`before`?t.ch-1:t.ch,`after`):t);for(var a=0;a<5;a++){var o=!1,s=Tr(e,t),c=!n||n==t?s:Tr(e,n);i={left:Math.min(s.left,c.left),top:Math.min(s.top,c.top)-r,right:Math.max(s.left,c.left),bottom:Math.max(s.bottom,c.bottom)+r};var l=fi(e,i),u=e.doc.scrollTop,d=e.doc.scrollLeft;if(l.scrollTop!=null&&(yi(e,l.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(o=!0)),l.scrollLeft!=null&&(xi(e,l.scrollLeft),Math.abs(e.doc.scrollLeft-d)>1&&(o=!0)),!o)break}return i}function di(e,t){var n=fi(e,t);n.scrollTop!=null&&yi(e,n.scrollTop),n.scrollLeft!=null&&xi(e,n.scrollLeft)}function fi(e,t){var n=e.display,r=Ir(e.display);t.top<0&&(t.top=0);var i=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:n.scroller.scrollTop,a=rr(e),o={};t.bottom-t.top>a&&(t.bottom=t.top+a);var s=e.doc.height+$n(n),c=t.tops-r;if(t.topi+a){var u=Math.min(t.top,(l?s:t.bottom)-a);u!=i&&(o.scrollTop=u)}var d=e.options.fixedGutter?0:n.gutters.offsetWidth,f=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:n.scroller.scrollLeft-d,p=nr(e)-n.gutters.offsetWidth,m=t.right-t.left>p;return m&&(t.right=t.left+p),t.left<10?o.scrollLeft=0:t.leftp+f-3&&(o.scrollLeft=t.right+(m?0:10)-p),o}function pi(e,t){t!=null&&(_i(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function mi(e){_i(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function hi(e,t,n){(t!=null||n!=null)&&_i(e),t!=null&&(e.curOp.scrollLeft=t),n!=null&&(e.curOp.scrollTop=n)}function gi(e,t){_i(e),e.curOp.scrollToPos=t}function _i(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,vi(e,Er(e,t.from),Er(e,t.to),t.margin))}function vi(e,t,n,r){var i=fi(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});hi(e,i.scrollLeft,i.scrollTop)}function yi(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||Xi(e,{top:t}),bi(e,t,!0),n&&Xi(e),Hi(e,100))}function bi(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function xi(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,ea(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Si(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+$n(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+tr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var Ci=function(e,t,n){this.cm=n;var r=this.vert=k(`div`,[k(`div`,null,null,`min-width: 1px`)],`CodeMirror-vscrollbar`),i=this.horiz=k(`div`,[k(`div`,null,null,`height: 100%; min-height: 1px`)],`CodeMirror-hscrollbar`);r.tabIndex=i.tabIndex=-1,e(r),e(i),U(r,`scroll`,function(){r.clientHeight&&t(r.scrollTop,`vertical`)}),U(i,`scroll`,function(){i.clientWidth&&t(i.scrollLeft,`horizontal`)}),this.checkedZeroWidth=!1,o&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth=`18px`)};Ci.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display=`block`,this.vert.style.bottom=t?r+`px`:`0`;var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+`px`}else this.vert.scrollTop=0,this.vert.style.display=``,this.vert.firstChild.style.height=`0`;if(t){this.horiz.style.display=`block`,this.horiz.style.right=n?r+`px`:`0`,this.horiz.style.left=e.barLeft+`px`;var a=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+a)+`px`}else this.horiz.style.display=``,this.horiz.firstChild.style.width=`0`;return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},Ci.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,`horiz`)},Ci.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,`vert`)},Ci.prototype.zeroWidthHack=function(){var e=y&&!m?`12px`:`18px`;this.horiz.style.height=this.vert.style.width=e,this.horiz.style.visibility=this.vert.style.visibility=`hidden`,this.disableHoriz=new ie,this.disableVert=new ie},Ci.prototype.enableZeroWidthBar=function(e,t,n){e.style.visibility=``;function r(){var i=e.getBoundingClientRect();(n==`vert`?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))==e?t.set(1e3,r):e.style.visibility=`hidden`}t.set(1e3,r)},Ci.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var wi=function(){};wi.prototype.update=function(){return{bottom:0,right:0}},wi.prototype.setScrollLeft=function(){},wi.prototype.setScrollTop=function(){},wi.prototype.clear=function(){};function Ti(e,t){t||=Si(e);var n=e.display.barWidth,r=e.display.barHeight;Ei(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&oi(e),Ei(e,Si(e)),n=e.display.barWidth,r=e.display.barHeight}function Ei(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+`px`,n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+`px`,n.heightForcer.style.borderBottom=r.bottom+`px solid transparent`,r.right&&r.bottom?(n.scrollbarFiller.style.display=`block`,n.scrollbarFiller.style.height=r.bottom+`px`,n.scrollbarFiller.style.width=r.right+`px`):n.scrollbarFiller.style.display=``,r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display=`block`,n.gutterFiller.style.height=r.bottom+`px`,n.gutterFiller.style.width=t.gutterWidth+`px`):n.gutterFiller.style.display=``}var Di={native:Ci,null:wi};function Oi(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&E(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Di[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),U(t,`mousedown`,function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute(`cm-not-content`,`true`)},function(t,n){n==`horizontal`?xi(e,t):yi(e,t)},e),e.display.scrollbars.addClass&&te(e.display.wrapper,e.display.scrollbars.addClass)}var ki=0;function Ai(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++ki,markArrays:null},Mn(e.curOp)}function ji(e){var t=e.curOp;t&&Pn(t,function(e){for(var t=0;t=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Wi(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Pi(e){e.updatedDisplay=e.mustUpdate&&Ji(e.cm,e.update)}function Fi(e){var t=e.cm,n=t.display;e.updatedDisplay&&oi(t),e.barMeasure=Si(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=sr(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+tr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-nr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Ii(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+`px`,e.maxScrollLeft=e.display.viewTo)){var n=+new Date+e.options.workTime,r=Et(e,t.highlightFrontier),i=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(a){if(r.line>=e.display.viewFrom){var o=a.styles,s=a.text.length>e.options.maxHighlightLength?at(t.mode,r.state):null,c=wt(e,a,r,!0);s&&(r.state=s),a.styles=c.styles;var l=a.styleClasses,u=c.classes;u?a.styleClasses=u:l&&(a.styleClasses=null);for(var d=!o||o.length!=a.styles.length||l!=u&&(!l||!u||l.bgClass!=u.bgClass||l.textClass!=u.textClass),f=0;!d&&fn)return Hi(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),i.length&&Ri(e,function(){for(var t=0;t=n.viewFrom&&t.visible.to<=n.viewTo&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&Yr(e)==0)return!1;ta(e)&&(Kr(e),t.dims=Rr(e));var i=r.first+r.size,a=Math.max(t.visible.from-e.options.viewportMargin,r.first),o=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFromo&&n.viewTo-o<20&&(o=Math.min(i,n.viewTo)),Lt&&(a=ln(e.doc,a),o=un(e.doc,o));var s=a!=n.viewFrom||o!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;Jr(e,a,o),n.viewOffset=pn(K(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+`px`;var c=Yr(e);if(!s&&c==0&&!t.force&&n.renderedView==n.view&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo))return!1;var l=Ki(e);return c>4&&(n.lineDiv.style.display=`none`),Zi(e,n.updateLineNumbers,t.dims),c>4&&(n.lineDiv.style.display=``),n.renderedView=n.view,qi(l),D(n.cursorDiv),D(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,Hi(e,400)),n.updateLineNumbers=null,!0}function Yi(e,t){for(var n=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==nr(e)){if(n&&n.top!=null&&(n={top:Math.min(e.doc.height+$n(e.display)-rr(e),n.top)}),t.visible=ci(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=ci(e.display,e.doc,n));if(!Ji(e,t))break;oi(e);var i=Si(e);Xr(e),Ti(e,i),$i(e,i),t.force=!1}t.signal(e,`update`,e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,`viewportChange`,e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Xi(e,t){var n=new Wi(e,t);if(Ji(e,n)){oi(e),Yi(e,n);var r=Si(e);Xr(e),Ti(e,r),$i(e,r),n.finish()}}function Zi(e,t,n){var r=e.display,i=e.options.lineNumbers,a=r.lineDiv,o=a.firstChild;function s(t){var n=t.nextSibling;return c&&y&&e.display.currentWheelTarget==t?t.style.display=`none`:t.parentNode.removeChild(t),n}for(var l=r.view,u=r.viewFrom,d=0;d-1&&(m=!1),Rn(e,f,u,n)),m&&(D(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(mt(e.options,u)))),o=f.node.nextSibling}u+=f.size}for(;o;)o=s(o)}function Qi(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+`px`,In(e,`gutterChanged`,e)}function $i(e,t){e.display.sizer.style.minHeight=t.docHeight+`px`,e.display.heightForcer.style.top=t.docHeight+`px`,e.display.gutters.style.height=t.docHeight+e.display.barHeight+tr(e)+`px`}function ea(e){var t=e.display,n=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=zr(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,a=r+`px`,o=0;o=105&&(a.wrapper.style.clipPath=`inset(0px)`),a.wrapper.setAttribute(`translate`,`no`),o&&s<8&&(a.gutters.style.zIndex=-1,a.scroller.style.paddingRight=0),!c&&!(n&&v)&&(a.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(a.wrapper):e(a.wrapper)),a.viewFrom=a.viewTo=t.first,a.reportedViewFrom=a.reportedViewTo=t.first,a.view=[],a.renderedView=null,a.externalMeasured=null,a.viewOffset=0,a.lastWrapHeight=a.lastWrapWidth=0,a.updateLineNumbers=null,a.nativeBarWidth=a.barHeight=a.barWidth=0,a.scrollbarsClipped=!1,a.lineNumWidth=a.lineNumInnerWidth=a.lineNumChars=null,a.alignWidgets=!1,a.cachedCharWidth=a.cachedTextHeight=a.cachedPaddingH=null,a.maxLine=null,a.maxLineLength=0,a.maxLineChanged=!1,a.wheelDX=a.wheelDY=a.wheelStartX=a.wheelStartY=null,a.shift=!1,a.selForContextMenu=null,a.activeTouch=null,a.gutterSpecs=na(i.gutters,i.lineNumbers),ra(a),r.init(a)}var oa=0,sa=null;o?sa=-.53:n?sa=15:u?sa=-.7:p&&(sa=-1/3);function ca(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return t==null&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),n==null&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:n??=e.wheelDelta,{x:t,y:n}}function la(e){var t=ca(e);return t.x*=sa,t.y*=sa,t}function ua(e,t){u&&d==102&&(e.display.chromeScrollHack==null?e.display.sizer.style.pointerEvents=`none`:clearTimeout(e.display.chromeScrollHack),e.display.chromeScrollHack=setTimeout(function(){e.display.chromeScrollHack=null,e.display.sizer.style.pointerEvents=``},100));var r=ca(t),i=r.x,a=r.y,o=sa;t.deltaMode===0&&(i=t.deltaX,a=t.deltaY,o=1);var s=e.display,l=s.scroller,p=l.scrollWidth>l.clientWidth,m=l.scrollHeight>l.clientHeight;if(i&&p||a&&m){if(a&&y&&c){outer:for(var h=t.target,g=s.view;h!=l;h=h.parentNode)for(var _=0;_=0&&Y(e,r.to())<=0)return n}return-1};var Z=function(e,t){this.anchor=e,this.head=t};Z.prototype.from=function(){return vt(this.anchor,this.head)},Z.prototype.to=function(){return _t(this.anchor,this.head)},Z.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function fa(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort(function(e,t){return Y(e.from(),t.from())}),n=B(t,i);for(var a=1;a0:c>=0){var l=vt(s.from(),o.from()),u=_t(s.to(),o.to()),d=s.empty()?o.from()==o.head:s.from()==s.head;a<=n&&--n,t.splice(--a,2,new Z(d?u:l,d?l:u))}}return new da(t,n)}function pa(e,t){return new da([new Z(e,t||e)],0)}function ma(e){return e.text?J(e.from.line+e.text.length-1,V(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function ha(e,t){if(Y(e,t.from)<0)return e;if(Y(e,t.to)<=0)return ma(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=ma(t).ch-t.to.ch),J(n,r)}function ga(e,t){for(var n=[],r=0;r1&&e.remove(s.line+1,m-1),e.insert(s.line+1,_)}In(e,`change`,e,t)}function Ca(e,t,n){function r(e,i,a){if(e.linked)for(var o=0;o1&&!e.done[e.done.length-2].ranges)return e.done.pop(),V(e.done)}function ja(e,t,n,r){var i=e.history;i.undone.length=0;var a=+new Date,o,s;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)==`+`&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)==`*`))&&(o=Aa(i,i.lastOp==r)))s=V(o.changes),Y(t.from,t.to)==0&&Y(t.from,s.to)==0?s.to=ma(t):o.changes.push(Oa(e,t));else{var c=V(i.done);for((!c||!c.ranges)&&Pa(e.sel,i.done),o={changes:[Oa(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,s||W(e,`historyAdded`)}function Ma(e,t,n,r){var i=t.charAt(0);return i==`*`||i==`+`&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function Na(e,t,n,r){var i=e.history,a=r&&r.origin;n==i.lastSelOp||a&&i.lastSelOrigin==a&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==a||Ma(e,a,V(i.done),t))?i.done[i.done.length-1]=t:Pa(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=a,i.lastSelOp=n,r&&r.clearRedo!==!1&&ka(i.undone)}function Pa(e,t){var n=V(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Fa(e,t,n,r){var i=t[`spans_`+e.id],a=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||=t[`spans_`+e.id]={})[a]=n.markedSpans),++a})}function Ia(e){if(!e)return null;for(var t,n=0;n-1&&(V(s)[d]=l[d],delete l[d])}}return r}function Ba(e,t,n,r){if(r){var i=e.anchor;if(n){var a=Y(t,i)<0;a==Y(n,i)<0?a!=Y(t,n)<0&&(t=n):(i=t,t=n)}return new Z(i,t)}else return new Z(n||t,t)}function Va(e,t,n,r,i){i??=e.cm&&(e.cm.display.shift||e.extend),qa(e,new da([Ba(e.sel.primary(),t,n,i)],0),r)}function Ha(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),a=0;a=t.ch:s.to>t.ch))){if(i&&(W(c,`beforeCursorEnter`),c.explicitlyCleared))if(a.markedSpans){--o;continue}else break;if(!c.atomic)continue;if(n){var d=c.find(r<0?1:-1),f=void 0;if((r<0?u:l)&&(d=eo(e,d,-r,d&&d.line==t.line?a:null)),d&&d.line==t.line&&(f=Y(d,n))&&(r<0?f<0:f>0))return Qa(e,d,t,r,i)}var p=c.find(r<0?-1:1);return(r<0?l:u)&&(p=eo(e,p,r,p.line==t.line?a:null)),p?Qa(e,p,t,r,i):null}}return t}function $a(e,t,n,r,i){var a=r||1;return Qa(e,t,n,a,i)||!i&&Qa(e,t,n,a,!0)||Qa(e,t,n,-a,i)||!i&&Qa(e,t,n,-a,!0)||(e.cantEdit=!0,J(e.first,0))}function eo(e,t,n,r){return n<0&&t.ch==0?t.line>e.first?X(e,J(t.line-1)):null:n>0&&t.ch==(r||K(e,t.line)).text.length?t.line=0;--i)io(e,{from:r[i].from,to:r[i].to,text:i?[``]:t.text,origin:t.origin});else io(e,t)}}function io(e,t){if(!(t.text.length==1&&t.text[0]==``&&Y(t.from,t.to)==0)){var n=ga(e,t);ja(e,t,n,e.cm?e.cm.curOp.id:NaN),so(e,t,n,Kt(e,t));var r=[];Ca(e,function(e,n){!n&&B(r,e.history)==-1&&(po(e.history,t),r.push(e.history)),so(e,t,null,Kt(e,t))})}}function ao(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!n)){for(var i=e.history,a,o=e.sel,s=t==`undo`?i.done:i.undone,c=t==`undo`?i.undone:i.done,l=0;l=0;--p){var m=f(p);if(m)return m.v}}}}function oo(e,t){if(t!=0&&(e.first+=t,e.sel=new da(pe(e.sel.ranges,function(e){return new Z(J(e.anchor.line+t,e.anchor.ch),J(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){Wr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linea&&(t={from:t.from,to:J(a,K(e,a).text.length),text:[t.text[0]],origin:t.origin}),t.removed=lt(e,t.from,t.to),n||=ga(e,t),e.cm?co(e.cm,t,r):Sa(e,t,r),Ja(e,n,se),e.cantEdit&&$a(e,J(e.firstLine(),0))&&(e.cantEdit=!1)}}function co(e,t,n){var r=e.doc,i=e.display,a=t.from,o=t.to,s=!1,c=a.line;e.options.lineWrapping||(c=q(on(K(r,a.line))),r.iter(c,o.line+1,function(e){if(e==i.maxLine)return s=!0,!0})),r.sel.contains(t.from,t.to)>-1&&Me(e),Sa(r,t,n,Br(e)),e.options.lineWrapping||(r.iter(c,a.line+t.text.length,function(e){var t=mn(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0)),Ft(r,a.line),Hi(e,400);var l=t.text.length-(o.line-a.line)-1;t.full?Wr(e):a.line==o.line&&t.text.length==1&&!xa(e.doc,t)?Gr(e,a.line,`text`):Wr(e,a.line,o.line+1,l);var u=Ne(e,`changes`),d=Ne(e,`change`);if(d||u){var f={from:a,to:o,text:t.text,removed:t.removed,origin:t.origin};d&&In(e,`change`,e,f),u&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}function lo(e,t,n,r,i){var a;r||=n,Y(r,n)<0&&(a=[r,n],n=a[0],r=a[1]),typeof t==`string`&&(t=e.splitLines(t)),ro(e,{from:n,to:r,text:t,origin:i})}function uo(e,t,n,r){n1||!(this.children[0]instanceof ho))){var s=[];this.collapse(s),this.children=[new ho(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var o=i.lines.length%25+25,s=o;s10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=l,e.display.maxLineLength=u,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Wr(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Xa(e.doc)),e&&In(e,`markerCleared`,e,this,r,i),t&&ji(e),this.parent&&this.parent.clear()}},xo.prototype.find=function(e,t){e==null&&this.type==`bookmark`&&(e=1);for(var n,r,i=0;i0||o==0&&a.clearWhenEmpty!==!1)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=A(`span`,[a.replacedWith],`CodeMirror-widget`),r.handleMouseEvents||a.widgetNode.setAttribute(`cm-ignore-events`,`true`),r.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(an(e,t.line,t,n,a)||t.line!=n.line&&an(e,n.line,t,n,a))throw Error(`Inserting collapsed marker partially overlapping an existing one`);zt()}a.addToHistory&&ja(e,{from:t,to:n,origin:`markText`},e.sel,NaN);var s=t.line,c=e.cm,l;if(e.iter(s,n.line+1,function(r){c&&a.collapsed&&!c.options.lineWrapping&&on(r)==c.display.maxLine&&(l=!0),a.collapsed&&s!=t.line&&dt(r,0),Ut(r,new Bt(a,s==t.line?t.ch:null,s==n.line?n.ch:null),e.cm&&e.cm.curOp),++s}),a.collapsed&&e.iter(t.line,n.line+1,function(t){dn(e,t)&&dt(t,0)}),a.clearOnEnter&&U(a,`beforeCursorEnter`,function(){return a.clear()}),a.readOnly&&(Rt(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),a.collapsed&&(a.id=++bo,a.atomic=!0),c){if(l&&(c.curOp.updateMaxLine=!0),a.collapsed)Wr(c,t.line,n.line+1);else if(a.className||a.startStyle||a.endStyle||a.css||a.attributes||a.title)for(var u=t.line;u<=n.line;u++)Gr(c,u,`text`);a.atomic&&Xa(c.doc),In(c,`markerAdded`,c,a)}return a}var Co=function(e,t){this.markers=e,this.primary=t;for(var n=0;n=0;c--)ro(this,r[c]);s?Ka(this,s):this.cm&&mi(this.cm)}),undo:Vi(function(){ao(this,`undo`)}),redo:Vi(function(){ao(this,`redo`)}),undoSelection:Vi(function(){ao(this,`undo`,!0)}),redoSelection:Vi(function(){ao(this,`redo`,!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=X(this,e),t=X(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(a){var o=a.markedSpans;if(o)for(var s=0;s=c.to||c.from==null&&i!=e.line||c.from!=null&&i==t.line&&c.from>=t.ch)&&(!n||n(c.marker))&&r.push(c.marker.parent||c.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=a,++n}),X(this,J(n,t))},indexFromPos:function(e){e=X(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var d=e.dataTransfer.getData(`Text`);if(d){var f;if(t.state.draggingText&&!t.state.draggingText.copy&&(f=t.listSelections()),Ja(t.doc,pa(n,n)),f)for(var p=0;p=0;t--)lo(e.doc,``,r[t].from,r[t].to,`+delete`);mi(e)})}function $o(e,t,n){var r=Ce(e.text,t+n,n);return r<0||r>e.text.length?null:r}function es(e,t,n){var r=$o(e,t.ch,n);return r==null?null:new J(t.line,r,n<0?`after`:`before`)}function ts(e,t,n,r,i){if(e){t.doc.direction==`rtl`&&(i=-i);var a=H(n,t.doc.direction);if(a){var o=i<0?V(a):a[0],s=i<0==(o.level==1)?`after`:`before`,c;if(o.level>0||t.doc.direction==`rtl`){var l=lr(t,n);c=i<0?n.text.length-1:0;var u=ur(t,l,c).top;c=we(function(e){return ur(t,l,e).top==u},i<0==(o.level==1)?o.from:o.to-1,c),s==`before`&&(c=$o(n,c,1))}else c=i<0?o.to:o.from;return new J(r,c,s)}}return new J(r,i<0?n.text.length:0,i<0?`before`:`after`)}function ns(e,t,n,r){var i=H(t,e.doc.direction);if(!i)return es(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky=`before`):n.ch<=0&&(n.ch=0,n.sticky=`after`);var a=De(i,n.ch,n.sticky),o=i[a];if(e.doc.direction==`ltr`&&o.level%2==0&&(r>0?o.to>n.ch:o.from=o.from&&f>=u.begin)){var p=d?`before`:`after`;return new J(n.line,f,p)}}var m=function(e,t,r){for(var a=function(e,t){return t?new J(n.line,s(e,1),`before`):new J(n.line,e,`after`)};e>=0&&e0==(o.level!=1),l=c?r.begin:s(r.end,-1);if(o.from<=l&&l0?u.end:s(u.begin,-1);return g!=null&&!(r>0&&g==t.text.length)&&(h=m(r>0?0:i.length-1,r,l(g)),h)?h:null}var rs={selectAll:to,singleSelection:function(e){return e.setSelection(e.getCursor(`anchor`),e.getCursor(`head`),se)},killLine:function(e){return Qo(e,function(t){if(t.empty()){var n=K(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new J(i.line,i.ch+1),e.replaceRange(a.charAt(i.ch-1)+a.charAt(i.ch-2),J(i.line,i.ch-2),i,`+transpose`);else if(i.line>e.doc.first){var o=K(e.doc,i.line-1).text;o&&(i=new J(i.line,1),e.replaceRange(a.charAt(0)+e.doc.lineSeparator()+o.charAt(o.length-1),J(i.line-1,o.length-1),i,`+transpose`))}}n.push(new Z(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){return Ri(e,function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,`+input`);t=e.listSelections();for(var r=0;re&&Y(t,this.pos)==0&&n==this.button};var xs,Ss;function Cs(e,t){var n=+new Date;return Ss&&Ss.compare(n,e,t)?(xs=Ss=null,`triple`):xs&&xs.compare(n,e,t)?(Ss=new bs(n,e,t),xs=null,`double`):(xs=new bs(n,e,t),Ss=null,`single`)}function ws(e){var t=this,n=t.display;if(!(G(t,e)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=e.shiftKey,Zn(n,e)){c||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100));return}if(!Ns(t,e)){var r=Hr(t,e),i=Be(e),a=r?Cs(r,i):`single`;I(t).focus(),i==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&Ts(t,i,r,a,e))&&(i==1?r?Ds(t,r,a,e):ze(e)==n.scroller&&Fe(e):i==2?(r&&Va(t.doc,r),setTimeout(function(){return n.input.focus()},20)):i==3&&(w?t.display.input.onContextMenu(e):ri(t)))}}}function Ts(e,t,n,r,i){var a=`Click`;return r==`double`?a=`Double`+a:r==`triple`&&(a=`Triple`+a),a=(t==1?`Left`:t==2?`Middle`:`Right`)+a,us(e,Yo(a,i),i,function(t){if(typeof t==`string`&&(t=rs[t]),!t)return!1;var r=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),r=t(e,n)!=oe}finally{e.state.suppressEdits=!1}return r})}function Es(e,t,n){var r=e.getOption(`configureMouse`),i=r?r(e,t,n):{};return i.unit??=(b?n.shiftKey&&n.metaKey:n.altKey)?`rectangle`:t==`single`?`char`:t==`double`?`word`:`line`,(i.extend==null||e.doc.extend)&&(i.extend=e.doc.extend||n.shiftKey),i.addNew??=y?n.metaKey:n.ctrlKey,i.moveOnDrag??=!(y?n.altKey:n.ctrlKey),i}function Ds(e,t,n,r){o?setTimeout(L(ni,e),0):e.curOp.focus=ee(re(e));var i=Es(e,n,r),a=e.doc.sel,s;e.options.dragDrop&&Ve&&!e.isReadOnly()&&n==`single`&&(s=a.contains(t))>-1&&(Y((s=a.ranges[s]).from(),t)<0||t.xRel>0)&&(Y(s.to(),t)>0||t.xRel<0)?Os(e,r,t,i):As(e,r,t,i)}function Os(e,t,n,r){var i=e.display,a=!1,l=zi(e,function(t){c&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:ri(e)),je(i.wrapper.ownerDocument,`mouseup`,l),je(i.wrapper.ownerDocument,`mousemove`,u),je(i.scroller,`dragstart`,d),je(i.scroller,`drop`,l),a||(Fe(t),r.addNew||Va(e.doc,n,null,null,r.extend),c&&!p||o&&s==9?setTimeout(function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()},20):i.input.focus())}),u=function(e){a||=Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},d=function(){return a=!0};c&&(i.scroller.draggable=!0),e.state.draggingText=l,l.copy=!r.moveOnDrag,U(i.wrapper.ownerDocument,`mouseup`,l),U(i.wrapper.ownerDocument,`mousemove`,u),U(i.scroller,`dragstart`,d),U(i.scroller,`drop`,l),e.state.delayingBlurEvent=!0,setTimeout(function(){return i.input.focus()},20),i.scroller.dragDrop&&i.scroller.dragDrop()}function ks(e,t,n){if(n==`char`)return new Z(t,t);if(n==`word`)return e.findWordAt(t);if(n==`line`)return new Z(J(t.line,0),X(e.doc,J(t.line+1,0)));var r=n(e,t);return new Z(r.from,r.to)}function As(e,t,n,r){o&&ri(e);var i=e.display,a=e.doc;Fe(t);var s,c,l=a.sel,u=l.ranges;if(r.addNew&&!r.extend?(c=a.sel.contains(n),s=c>-1?u[c]:new Z(n,n)):(s=a.sel.primary(),c=a.sel.primIndex),r.unit==`rectangle`)r.addNew||(s=new Z(n,n)),n=Hr(e,t,!0,!0),c=-1;else{var d=ks(e,n,r.unit);s=r.extend?Ba(s,d.anchor,d.head,r.extend):d}r.addNew?c==-1?(c=u.length,qa(a,fa(e,u.concat([s]),c),{scroll:!1,origin:`*mouse`})):u.length>1&&u[c].empty()&&r.unit==`char`&&!r.extend?(qa(a,fa(e,u.slice(0,c).concat(u.slice(c+1)),0),{scroll:!1,origin:`*mouse`}),l=a.sel):Ua(a,c,s,ce):(c=0,qa(a,new da([s],0),ce),l=a.sel);var f=n;function p(t){if(Y(f,t)!=0)if(f=t,r.unit==`rectangle`){for(var i=[],o=e.options.tabSize,u=z(K(a,n.line).text,n.ch,o),d=z(K(a,t.line).text,t.ch,o),p=Math.min(u,d),m=Math.max(u,d),h=Math.min(n.line,t.line),g=Math.min(e.lastLine(),Math.max(n.line,t.line));h<=g;h++){var _=K(a,h).text,v=ue(_,p,o);p==m?i.push(new Z(J(h,v),J(h,v))):_.length>v&&i.push(new Z(J(h,v),J(h,ue(_,m,o))))}i.length||i.push(new Z(n,n)),qa(a,fa(e,l.ranges.slice(0,c).concat(i),c),{origin:`*mouse`,scroll:!1}),e.scrollIntoView(t)}else{var y=s,b=ks(e,t,r.unit),x=y.anchor,S;Y(b.anchor,x)>0?(S=b.head,x=vt(y.from(),b.anchor)):(S=b.anchor,x=_t(y.to(),b.head));var C=l.ranges.slice(0);C[c]=js(e,new Z(X(a,x),S)),qa(a,fa(e,C,c),ce)}}var m=i.wrapper.getBoundingClientRect(),h=0;function g(t){var n=++h,o=Hr(e,t,!0,r.unit==`rectangle`);if(o)if(Y(o,f)!=0){e.curOp.focus=ee(re(e)),p(o);var s=ci(i,a);(o.line>=s.to||o.linem.bottom?20:0;c&&setTimeout(zi(e,function(){h==n&&(i.scroller.scrollTop+=c,g(t))}),50)}}function _(t){e.state.selectingText=!1,h=1/0,t&&(Fe(t),i.input.focus()),je(i.wrapper.ownerDocument,`mousemove`,v),je(i.wrapper.ownerDocument,`mouseup`,y),a.history.lastSelOrigin=null}var v=zi(e,function(e){e.buttons===0||!Be(e)?_(e):g(e)}),y=zi(e,_);e.state.selectingText=y,U(i.wrapper.ownerDocument,`mousemove`,v),U(i.wrapper.ownerDocument,`mouseup`,y)}function js(e,t){var n=t.anchor,r=t.head,i=K(e.doc,n.line);if(Y(n,r)==0&&n.sticky==r.sticky)return t;var a=H(i);if(!a)return t;var o=De(a,n.ch,n.sticky),s=a[o];if(s.from!=n.ch&&s.to!=n.ch)return t;var c=o+(s.from==n.ch==(s.level!=1)?0:1);if(c==0||c==a.length)return t;var l;if(r.line!=n.line)l=(r.line-n.line)*(e.doc.direction==`ltr`?1:-1)>0;else{var u=De(a,r.ch,r.sticky),d=u-o||(r.ch-n.ch)*(s.level==1?-1:1);l=u==c-1||u==c?d<0:d>0}var f=a[c+(l?-1:0)],p=l==(f.level==1),m=p?f.from:f.to,h=p?`after`:`before`;return n.ch==m&&n.sticky==h?t:new Z(new J(n.line,m,h),r)}function Ms(e,t,n,r){var i,a;if(t.touches)i=t.touches[0].clientX,a=t.touches[0].clientY;else try{i=t.clientX,a=t.clientY}catch{return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Fe(t);var o=e.display,s=o.lineDiv.getBoundingClientRect();if(a>s.bottom||!Ne(e,n))return Le(t);a-=s.top-o.viewOffset;for(var c=0;c=i){var u=ft(e.doc,a),d=e.display.gutterSpecs[c];return W(e,n,e,u,d.className,t),Le(t)}}}function Ns(e,t){return Ms(e,t,`gutterClick`,!0)}function Ps(e,t){Zn(e.display,t)||Fs(e,t)||G(e,t,`contextmenu`)||w||e.display.input.onContextMenu(t)}function Fs(e,t){return Ne(e,`gutterContextMenu`)?Ms(e,t,`gutterContextMenu`,!1):!1}function Is(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,``)+e.options.theme.replace(/(^|\s)\s*/g,` cm-s-`),vr(e)}var Ls={toString:function(){return`CodeMirror.Init`}},Rs={},zs={};function Bs(e){var t=e.optionHandlers;function n(n,r,i,a){e.defaults[n]=r,i&&(t[n]=a?function(e,t,n){n!=Ls&&i(e,t,n)}:i)}e.defineOption=n,e.Init=Ls,n(`value`,``,function(e,t){return e.setValue(t)},!0),n(`mode`,null,function(e,t){e.doc.modeOption=t,ya(e)},!0),n(`indentUnit`,2,ya,!0),n(`indentWithTabs`,!1),n(`smartIndent`,!0),n(`tabSize`,4,function(e){ba(e),vr(e),Wr(e)},!0),n(`lineSeparator`,null,function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var a=e.text.indexOf(t,i);if(a==-1)break;i=a+t.length,n.push(J(r,a))}r++});for(var i=n.length-1;i>=0;i--)lo(e.doc,t,n[i],J(n[i].line,n[i].ch+t.length))}}),n(`specialChars`,/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(e,t,n){e.state.specialChars=RegExp(t.source+(t.test(` `)?``:`| `),`g`),n!=Ls&&e.refresh()}),n(`specialCharPlaceholder`,Cn,function(e){return e.refresh()},!0),n(`electricChars`,!0),n(`inputStyle`,v?`contenteditable`:`textarea`,function(){throw Error(`inputStyle can not (yet) be changed in a running editor`)},!0),n(`spellcheck`,!1,function(e,t){return e.getInputField().spellcheck=t},!0),n(`autocorrect`,!1,function(e,t){return e.getInputField().autocorrect=t},!0),n(`autocapitalize`,!1,function(e,t){return e.getInputField().autocapitalize=t},!0),n(`rtlMoveVisually`,!x),n(`wholeLineUpdateBefore`,!0),n(`theme`,`default`,function(e){Is(e),ia(e)},!0),n(`keyMap`,`default`,function(e,t,n){var r=Zo(t),i=n!=Ls&&Zo(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)}),n(`extraKeys`,null),n(`configureMouse`,null),n(`lineWrapping`,!1,Hs,!0),n(`gutters`,[],function(e,t){e.display.gutterSpecs=na(t,e.options.lineNumbers),ia(e)},!0),n(`fixedGutter`,!0,function(e,t){e.display.gutters.style.left=t?zr(e.display)+`px`:`0`,e.refresh()},!0),n(`coverGutterNextToScrollbar`,!1,function(e){return Ti(e)},!0),n(`scrollbarStyle`,`native`,function(e){Oi(e),Ti(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),n(`lineNumbers`,!1,function(e,t){e.display.gutterSpecs=na(e.options.gutters,t),ia(e)},!0),n(`firstLineNumber`,1,ia,!0),n(`lineNumberFormatter`,function(e){return e},ia,!0),n(`showCursorWhenSelecting`,!1,Xr,!0),n(`resetSelectionOnContextMenu`,!0),n(`lineWiseCopyCut`,!0),n(`pasteLinesPerSelection`,!0),n(`selectionsMayTouch`,!1),n(`readOnly`,!1,function(e,t){t==`nocursor`&&(ai(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),n(`screenReaderLabel`,null,function(e,t){t=t===``?null:t,e.display.input.screenReaderLabelChanged(t)}),n(`disableInput`,!1,function(e,t){t||e.display.input.reset()},!0),n(`dragDrop`,!0,Vs),n(`allowDropFileTypes`,null),n(`cursorBlinkRate`,530),n(`cursorScrollMargin`,0),n(`cursorHeight`,1,Xr,!0),n(`singleCursorHeightPerLine`,!0,Xr,!0),n(`workTime`,100),n(`workDelay`,100),n(`flattenSpans`,!0,ba,!0),n(`addModeClass`,!1,ba,!0),n(`pollInterval`,100),n(`undoDepth`,200,function(e,t){return e.doc.history.undoDepth=t}),n(`historyEventDelay`,1250),n(`viewportMargin`,10,function(e){return e.refresh()},!0),n(`maxHighlightLength`,1e4,ba,!0),n(`moveInputWithCursor`,!0,function(e,t){t||e.display.input.resetPosition()}),n(`tabindex`,null,function(e,t){return e.display.input.getField().tabIndex=t||``}),n(`autofocus`,null),n(`direction`,`ltr`,function(e,t){return e.doc.setDirection(t)},!0),n(`phrases`,null)}function Vs(e,t,n){if(!t!=!(n&&n!=Ls)){var r=e.display.dragFunctions,i=t?U:je;i(e.display.scroller,`dragstart`,r.start),i(e.display.scroller,`dragenter`,r.enter),i(e.display.scroller,`dragover`,r.over),i(e.display.scroller,`dragleave`,r.leave),i(e.display.scroller,`drop`,r.drop)}}function Hs(e){e.options.lineWrapping?(te(e.display.wrapper,`CodeMirror-wrap`),e.display.sizer.style.minWidth=``,e.display.sizerWidth=null):(E(e.display.wrapper,`CodeMirror-wrap`),hn(e)),Vr(e),Wr(e),vr(e),setTimeout(function(){return Ti(e)},100)}function Q(e,t){var n=this;if(!(this instanceof Q))return new Q(e,t);this.options=t=t?R(t):{},R(Rs,t,!1);var r=t.value;typeof r==`string`?r=new ko(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i=new Q.inputStyles[t.inputStyle](this),a=this.display=new aa(e,r,i,t);for(var l in a.wrapper.CodeMirror=this,Is(this),t.lineWrapping&&(this.display.wrapper.className+=` CodeMirror-wrap`),Oi(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new ie,keySeq:null,specialChars:null},t.autofocus&&!v&&a.input.focus(),o&&s<11&&setTimeout(function(){return n.display.input.reset(!0)},20),Us(this),Lo(),Ai(this),this.curOp.forceUpdate=!0,wa(this,r),t.autofocus&&!v||this.hasFocus()?setTimeout(function(){n.hasFocus()&&!n.state.focused&&ii(n)},20):ai(this),zs)zs.hasOwnProperty(l)&&zs[l](this,t[l],Ls);ta(this),t.finishInit&&t.finishInit(this);for(var u=0;u400}U(t.scroller,`touchstart`,function(i){if(!G(e,i)&&!a(i)&&!Ns(e,i)){t.input.ensurePolled(),clearTimeout(n);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-r.end<=300?r:null},i.touches.length==1&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),U(t.scroller,`touchmove`,function(){t.activeTouch&&(t.activeTouch.moved=!0)}),U(t.scroller,`touchend`,function(n){var r=t.activeTouch;if(r&&!Zn(t,n)&&r.left!=null&&!r.moved&&new Date-r.start<300){var a=e.coordsChar(t.activeTouch,`page`),o=!r.prev||c(r,r.prev)?new Z(a,a):!r.prev.prev||c(r,r.prev.prev)?e.findWordAt(a):new Z(J(a.line,0),X(e.doc,J(a.line+1,0)));e.setSelection(o.anchor,o.head),e.focus(),Fe(n)}i()}),U(t.scroller,`touchcancel`,i),U(t.scroller,`scroll`,function(){t.scroller.clientHeight&&(yi(e,t.scroller.scrollTop),xi(e,t.scroller.scrollLeft,!0),W(e,`scroll`,e))}),U(t.scroller,`mousewheel`,function(t){return ua(e,t)}),U(t.scroller,`DOMMouseScroll`,function(t){return ua(e,t)}),U(t.wrapper,`scroll`,function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){G(e,t)||Re(t)},over:function(t){G(e,t)||(No(e,t),Re(t))},start:function(t){return Mo(e,t)},drop:zi(e,jo),leave:function(t){G(e,t)||Po(e)}};var l=t.input.getField();U(l,`keyup`,function(t){return _s.call(e,t)}),U(l,`keydown`,zi(e,hs)),U(l,`keypress`,zi(e,vs)),U(l,`focus`,function(t){return ii(e,t)}),U(l,`blur`,function(t){return ai(e,t)})}var Ws=[];Q.defineInitHook=function(e){return Ws.push(e)};function Gs(e,t,n,r){var i=e.doc,a;n??=`add`,n==`smart`&&(i.mode.indent?a=Et(e,t).state:n=`prev`);var o=e.options.tabSize,s=K(i,t),c=z(s.text,null,o);s.stateAfter&&=null;var l=s.text.match(/^\s*/)[0],u;if(!r&&!/\S/.test(s.text))u=0,n=`not`;else if(n==`smart`&&(u=i.mode.indent(a,s.text.slice(l.length),s.text),u==oe||u>150)){if(!r)return;n=`prev`}n==`prev`?u=t>i.first?z(K(i,t-1).text,null,o):0:n==`add`?u=c+e.options.indentUnit:n==`subtract`?u=c-e.options.indentUnit:typeof n==`number`&&(u=c+n),u=Math.max(0,u);var d=``,f=0;if(e.options.indentWithTabs)for(var p=Math.floor(u/o);p;--p)f+=o,d+=` `;if(fo,c=Ke(t),l=null;if(s&&r.ranges.length>1)if(Ks&&Ks.text.join(` -`)==t){if(r.ranges.length%Ks.text.length==0){l=[];for(var u=0;u=0;f--){var p=r.ranges[f],m=p.from(),h=p.to();p.empty()&&(n&&n>0?m=J(m.line,m.ch-n):e.state.overwrite&&!s?h=J(h.line,Math.min(K(a,h.line).text.length,h.ch+V(c).length)):s&&Ks&&Ks.lineWise&&Ks.text.join(` -`)==c.join(` -`)&&(m=h=J(m.line,0)));var g={from:m,to:h,text:l?l[f%l.length]:c,origin:i||(s?`paste`:e.state.cutIncoming>o?`cut`:`+input`)};ro(e.doc,g),In(e,`inputRead`,e,g)}t&&!s&&Xs(e,t),mi(e),e.curOp.updateInput<2&&(e.curOp.updateInput=d),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Ys(e,t){var n=e.clipboardData&&e.clipboardData.getData(`Text`);if(n)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&t.hasFocus()&&Ri(t,function(){return Js(t,n,0,null,`paste`)}),!0}function Xs(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var a=e.getModeAt(i.head),o=!1;if(a.electricChars){for(var s=0;s-1){o=Gs(e,i.head.line,`smart`);break}}else a.electricInput&&a.electricInput.test(K(e.doc,i.head.line).text.slice(0,i.head.ch))&&(o=Gs(e,i.head.line,`smart`));o&&In(e,`electricInput`,e,i.head.line)}}}function Zs(e){for(var t=[],n=[],r=0;rn&&(Gs(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&mi(this));else{var a=i.from(),o=i.to(),s=Math.max(n,a.line);n=Math.min(this.lastLine(),o.line-+!o.ch)+1;for(var c=s;c0&&Ua(this.doc,r,new Z(a,l[r].to()),se)}}}),getTokenAt:function(e,t){return jt(this,e,t)},getLineTokens:function(e,t){return jt(this,J(e),t,!0)},getTokenTypeAt:function(e){e=X(this.doc,e);var t=Tt(this,K(this.doc,e.line)),n=0,r=(t.length-1)/2,i=e.ch,a;if(i==0)a=t[2];else for(;;){var o=n+r>>1;if((o?t[o*2-1]:0)>=i)r=o;else if(t[o*2+1]a&&(e=a,r=!0),i=K(this.doc,e)}else i=e;return Sr(this,i,{top:0,left:0},t||`page`,n||r).top+(r?this.doc.height-pn(i):0)},defaultTextHeight:function(){return Ir(this.display)},defaultCharWidth:function(){return Lr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var a=this.display;e=Tr(this,X(this.doc,e));var o=e.bottom,s=e.left;if(t.style.position=`absolute`,t.setAttribute(`cm-ignore-events`,`true`),this.display.input.setUneditable(t),a.sizer.appendChild(t),r==`over`)o=e.top;else if(r==`above`||r==`near`){var c=Math.max(a.wrapper.clientHeight,this.doc.height),l=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);(r==`above`||e.bottom+t.offsetHeight>c)&&e.top>t.offsetHeight?o=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=c&&(o=e.bottom),s+t.offsetWidth>l&&(s=l-t.offsetWidth)}t.style.top=o+`px`,t.style.left=t.style.right=``,i==`right`?(s=a.sizer.clientWidth-t.offsetWidth,t.style.right=`0px`):(i==`left`?s=0:i==`middle`&&(s=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=s+`px`),n&&di(this,{left:s,top:o,right:s+t.offsetWidth,bottom:o+t.offsetHeight})},triggerOnKeyDown:Bi(hs),triggerOnKeyPress:Bi(vs),triggerOnKeyUp:_s,triggerOnMouseDown:Bi(ws),execCommand:function(e){if(rs.hasOwnProperty(e))return rs[e].call(null,this)},triggerElectric:Bi(function(e){Xs(this,e)}),findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var a=X(this.doc,e),o=0;o0&&s(n.charAt(r-1));)--r;for(;i.5||this.options.lineWrapping)&&Vr(this),W(this,`refresh`,this)}),swapDoc:Bi(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),wa(this,e),vr(this),this.display.input.reset(),hi(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,In(this,`swapDoc`,this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Pe(e),e.registerHelper=function(t,r,i){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=i},e.registerGlobalHelper=function(t,r,i,a){e.registerHelper(t,r,a),n[t]._global.push({pred:i,val:a})}}function tc(e,t,n,r,i){var a=t,o=n,s=K(e,t.line),c=i&&e.direction==`rtl`?-n:n;function l(){var n=t.line+c;return n=e.first+e.size?!1:(t=new J(n,t.ch,t.sticky),s=K(e,n))}function u(a){var o;if(r==`codepoint`){var u=s.text.charCodeAt(t.ch+(n>0?0:-1));if(isNaN(u))o=null;else{var d=n>0?u>=55296&&u<56320:u>=56320&&u<57343;o=new J(t.line,Math.max(0,Math.min(s.text.length,t.ch+n*(d?2:1))),-n)}}else o=i?ns(e.cm,s,t,n):es(s,t,n);if(o==null)if(!a&&l())t=ts(i,e.cm,s,t.line,c);else return!1;else t=o;return!0}if(r==`char`||r==`codepoint`)u();else if(r==`column`)u(!0);else if(r==`word`||r==`group`)for(var d=null,f=r==`group`,p=e.cm&&e.cm.getHelper(t,`wordChars`),m=!0;!(n<0&&!u(!m));m=!1){var h=s.text.charAt(t.ch)||` -`,g=ye(h,p)?`w`:f&&h==` -`?`n`:!f||/\s/.test(h)?null:`p`;if(f&&!m&&!g&&(g=`s`),d&&d!=g){n<0&&(n=1,u(),t.sticky=`after`);break}if(g&&(d=g),n>0&&!u(!m))break}var _=$a(e,t,a,o,!0);return ht(a,_)&&(_.hitSide=!0),_}function nc(e,t,n,r){var i=e.doc,a=t.left,o;if(r==`page`){var s=Math.min(e.display.wrapper.clientHeight,I(e).innerHeight||i(e).documentElement.clientHeight),c=Math.max(s-.5*Ir(e.display),3);o=(n>0?t.bottom:t.top)+n*c}else r==`line`&&(o=n>0?t.bottom+3:t.top-3);for(var l;l=Or(e,a,o),l.outside;){if(n<0?o<=0:o>=i.height){l.hitSide=!0;break}o+=n*5}return l}var $=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ie,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};$.prototype.init=function(e){var t=this,n=this,r=n.cm,i=n.div=e.lineDiv;i.contentEditable=!0,Qs(i,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function a(e){for(var t=e.target;t;t=t.parentNode){if(t==i)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(t.className))break}return!1}U(i,`paste`,function(e){!a(e)||G(r,e)||Ys(e,r)||s<=11&&setTimeout(zi(r,function(){return t.updateFromDOM()}),20)}),U(i,`compositionstart`,function(e){t.composing={data:e.data,done:!1}}),U(i,`compositionupdate`,function(e){t.composing||={data:e.data,done:!1}}),U(i,`compositionend`,function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),U(i,`touchstart`,function(){return n.forceCompositionEnd()}),U(i,`input`,function(){t.composing||t.readFromDOMSoon()});function o(e){if(!(!a(e)||G(r,e))){if(r.somethingSelected())qs({lineWise:!1,text:r.getSelections()}),e.type==`cut`&&r.replaceSelection(``,null,`cut`);else if(r.options.lineWiseCopyCut){var t=Zs(r);qs({lineWise:!0,text:t.text}),e.type==`cut`&&r.operation(function(){r.setSelections(t.ranges,0,se),r.replaceSelection(``,null,`cut`)})}else return;if(e.clipboardData){e.clipboardData.clearData();var o=Ks.text.join(` -`);if(e.clipboardData.setData(`Text`,o),e.clipboardData.getData(`Text`)==o){e.preventDefault();return}}var s=$s(),c=s.firstChild;Qs(c),r.display.lineSpace.insertBefore(s,r.display.lineSpace.firstChild),c.value=Ks.text.join(` -`);var l=ee(F(i));ne(c),setTimeout(function(){r.display.lineSpace.removeChild(s),l.focus(),l==i&&n.showPrimarySelection()},50)}}U(i,`copy`,o),U(i,`cut`,o)},$.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute(`aria-label`,e):this.div.removeAttribute(`aria-label`)},$.prototype.prepareSelection=function(){var e=Zr(this.cm,!1);return e.focus=ee(F(this.div))==this.div,e},$.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},$.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},$.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,r=t.doc.sel.primary(),i=r.from(),a=r.to();if(t.display.viewTo==t.display.viewFrom||i.line>=t.display.viewTo||a.line=t.display.viewFrom&&rc(t,i)||{node:c[0].measure.map[2],offset:0},u=a.linee.firstLine()&&(r=J(r.line-1,K(e.doc,r.line-1).length)),i.ch==K(e.doc,i.line).text.length&&i.linet.viewTo-1)return!1;var a,o,s;r.line==t.viewFrom||(a=Ur(e,r.line))==0?(o=q(t.view[0].line),s=t.view[0].node):(o=q(t.view[a].line),s=t.view[a-1].node.nextSibling);var c=Ur(e,i.line),l,u;if(c==t.view.length-1?(l=t.viewTo-1,u=t.lineDiv.lastChild):(l=q(t.view[c+1].line)-1,u=t.view[c+1].node.previousSibling),!s)return!1;for(var d=e.doc.splitLines(oc(e,s,u,o,l)),f=lt(e.doc,J(o,0),J(l,K(e.doc,l).text.length));d.length>1&&f.length>1;)if(V(d)==V(f))d.pop(),f.pop(),l--;else if(d[0]==f[0])d.shift(),f.shift(),o++;else break;for(var p=0,m=0,h=d[0],g=f[0],_=Math.min(h.length,g.length);p<_&&h.charCodeAt(p)==g.charCodeAt(p);)++p;for(var v=V(d),y=V(f),b=Math.min(v.length-(d.length==1?p:0),y.length-(f.length==1?p:0));mr.ch&&v.charCodeAt(v.length-m-1)==y.charCodeAt(y.length-m-1);)p--,m++;d[d.length-1]=v.slice(0,v.length-m).replace(/^\u200b+/,``),d[0]=d[0].slice(p).replace(/\u200b+$/,``);var x=J(o,p),S=J(l,f.length?V(f).length-m:0);if(d.length>1||d[0]||Y(x,S))return lo(e.doc,d,x,S,`+input`),!0},$.prototype.ensurePolled=function(){this.forceCompositionEnd()},$.prototype.reset=function(){this.forceCompositionEnd()},$.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},$.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout??=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80)},$.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Ri(this.cm,function(){return Wr(e.cm)})},$.prototype.setUneditable=function(e){e.contentEditable=`false`},$.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||zi(this.cm,Js)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},$.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!=`nocursor`)},$.prototype.onContextMenu=function(){},$.prototype.resetPosition=function(){},$.prototype.needsContentAttribute=!0;function rc(e,t){var n=cr(e,t.line);if(!n||n.hidden)return null;var r=K(e.doc,t.line),i=ar(n,r,t.line),a=H(r,e.doc.direction),o=`left`;a&&(o=De(a,t.ch)%2?`right`:`left`);var s=fr(i.map,t.ch,o);return s.offset=s.collapse==`right`?s.end:s.start,s}function ic(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function ac(e,t){return t&&(e.bad=!0),e}function oc(e,t,n,r,i){var a=``,o=!1,s=e.doc.lineSeparator(),c=!1;function l(e){return function(t){return t.id==e}}function u(){o&&=(a+=s,c&&(a+=s),c=!1)}function d(e){e&&(u(),a+=e)}function f(t){if(t.nodeType==1){var n=t.getAttribute(`cm-text`);if(n){d(n);return}var a=t.getAttribute(`cm-marker`),p;if(a){var m=e.findMarks(J(r,0),J(i+1,0),l(+a));m.length&&(p=m[0].find(0))&&d(lt(e.doc,p.from,p.to).join(s));return}if(t.getAttribute(`contenteditable`)==`false`)return;var h=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&t.textContent.length==0)return;h&&u();for(var g=0;g=9&&t.hasSelection&&(t.hasSelection=null),n.poll()}),U(i,`paste`,function(e){G(r,e)||Ys(e,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())});function a(e){if(!G(r,e)){if(r.somethingSelected())qs({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var t=Zs(r);qs({lineWise:!0,text:t.text}),e.type==`cut`?r.setSelections(t.ranges,null,se):(n.prevInput=``,i.value=t.text.join(` -`),ne(i))}else return;e.type==`cut`&&(r.state.cutIncoming=+new Date)}}U(i,`cut`,a),U(i,`copy`,a),U(e.scroller,`paste`,function(t){if(!(Zn(e,t)||G(r,t))){if(!i.dispatchEvent){r.state.pasteIncoming=+new Date,n.focus();return}var a=new Event(`paste`);a.clipboardData=t.clipboardData,i.dispatchEvent(a)}}),U(e.lineSpace,`selectstart`,function(t){Zn(e,t)||Fe(t)}),U(i,`compositionstart`,function(){var e=r.getCursor(`from`);n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor(`to`),{className:`CodeMirror-composing`})}}),U(i,`compositionend`,function(){n.composing&&=(n.poll(),n.composing.range.clear(),null)})},lc.prototype.createField=function(e){this.wrapper=$s(),this.textarea=this.wrapper.firstChild;var t=this.cm.options;Qs(this.textarea,t.spellcheck,t.autocorrect,t.autocapitalize)},lc.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute(`aria-label`,e):this.textarea.removeAttribute(`aria-label`)},lc.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=Zr(e);if(e.options.moveInputWithCursor){var i=Tr(e,n.sel.primary().head,`div`),a=t.wrapper.getBoundingClientRect(),o=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+o.top-a.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+o.left-a.left))}return r},lc.prototype.showSelection=function(e){var t=this.cm.display;O(t.cursorDiv,e.cursors),O(t.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+`px`,this.wrapper.style.left=e.teLeft+`px`)},lc.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing&&e)){var t=this.cm;if(this.resetting=!0,t.somethingSelected()){this.prevInput=``;var n=t.getSelection();this.textarea.value=n,t.state.focused&&ne(this.textarea),o&&s>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value=``,o&&s>=9&&(this.hasSelection=null));this.resetting=!1}},lc.prototype.getField=function(){return this.textarea},lc.prototype.supportsTouch=function(){return!1},lc.prototype.focus=function(){if(this.cm.options.readOnly!=`nocursor`&&(!v||ee(F(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},lc.prototype.blur=function(){this.textarea.blur()},lc.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},lc.prototype.receivedFocus=function(){this.slowPoll()},lc.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},lc.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function n(){!t.poll()&&!e?(e=!0,t.polling.set(60,n)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,n)},lc.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||this.resetting||!t.state.focused||qe(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(o&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var a=i.charCodeAt(0);if(a==8203&&!r&&(r=`​`),a==8666)return this.reset(),this.cm.execCommand(`undo`)}for(var c=0,l=Math.min(r.length,i.length);c1e3||i.indexOf(` -`)>-1?n.value=e.prevInput=``:e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor(`to`),{className:`CodeMirror-composing`}))}),!0},lc.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},lc.prototype.onKeyPress=function(){o&&s>=9&&(this.hasSelection=null),this.fastPoll()},lc.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var a=Hr(n,e),l=r.scroller.scrollTop;if(!a||f)return;n.options.resetSelectionOnContextMenu&&n.doc.sel.contains(a)==-1&&zi(n,qa)(n.doc,pa(a),se);var u=i.style.cssText,d=t.wrapper.style.cssText,p=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText=`position: static`,i.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(e.clientY-p.top-5)+`px; left: `+(e.clientX-p.left-5)+`px; - z-index: 1000; background: `+(o?`rgba(255, 255, 255, .05)`:`transparent`)+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var m;c&&(m=i.ownerDocument.defaultView.scrollY),r.input.focus(),c&&i.ownerDocument.defaultView.scrollTo(null,m),r.input.reset(),n.somethingSelected()||(i.value=t.prevInput=` `),t.contextMenuPending=g,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll);function h(){if(i.selectionStart!=null){var e=n.somethingSelected(),a=`​`+(e?i.value:``);i.value=`⇚`,i.value=a,t.prevInput=e?``:`​`,i.selectionStart=1,i.selectionEnd=a.length,r.selForContextMenu=n.doc.sel}}function g(){if(t.contextMenuPending==g&&(t.contextMenuPending=!1,t.wrapper.style.cssText=d,i.style.cssText=u,o&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=l),i.selectionStart!=null)){(!o||o&&s<9)&&h();var e=0,a=function(){r.selForContextMenu==n.doc.sel&&i.selectionStart==0&&i.selectionEnd>0&&t.prevInput==`​`?zi(n,to)(n):e++<10?r.detectingSelectAll=setTimeout(a,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(a,200)}}if(o&&s>=9&&h(),w){Re(e);var _=function(){je(window,`mouseup`,_),setTimeout(g,20)};U(window,`mouseup`,_)}else setTimeout(g,50)},lc.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e==`nocursor`,this.textarea.readOnly=!!e},lc.prototype.setUneditable=function(){},lc.prototype.needsContentAttribute=!1;function uc(e,t){if(t=t?R(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var n=ee(F(e));t.autofocus=n==e||e.getAttribute(`autofocus`)!=null&&n==document.body}function r(){e.value=s.getValue()}var i;if(e.form&&(U(e.form,`submit`,r),!t.leaveSubmitMethodAlone)){var a=e.form;i=a.submit;try{var o=a.submit=function(){r(),a.submit=i,a.submit(),a.submit=o}}catch{}}t.finishInit=function(n){n.save=r,n.getTextArea=function(){return e},n.toTextArea=function(){n.toTextArea=isNaN,r(),e.parentNode.removeChild(n.getWrapperElement()),e.style.display=``,e.form&&(je(e.form,`submit`,r),!t.leaveSubmitMethodAlone&&typeof e.form.submit==`function`&&(e.form.submit=i))}},e.style.display=`none`;var s=Q(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s}function dc(e){e.off=je,e.on=U,e.wheelEventPixels=la,e.Doc=ko,e.splitLines=Ke,e.countColumn=z,e.findColumn=ue,e.isWordChar=ve,e.Pass=oe,e.signal=W,e.Line=gn,e.changeEnd=ma,e.scrollbarModel=Di,e.Pos=J,e.cmpPos=Y,e.modes=Ze,e.mimeModes=Qe,e.resolveMode=tt,e.getMode=nt,e.modeExtensions=rt,e.extendMode=it,e.copyState=at,e.startState=st,e.innerMode=ot,e.commands=rs,e.keyMap=Wo,e.keyName=Xo,e.isModifierKey=Jo,e.lookupKey=qo,e.normalizeKeyMap=Ko,e.StringStream=ct,e.SharedTextMarker=Co,e.TextMarker=xo,e.LineWidget=_o,e.e_preventDefault=Fe,e.e_stopPropagation=Ie,e.e_stop=Re,e.addClass=te,e.contains=M,e.rmClass=E,e.keyNames=Bo}Bs(Q),ec(Q);var fc=`iter insert remove copy getEditor constructor`.split(` `);for(var pc in ko.prototype)ko.prototype.hasOwnProperty(pc)&&B(fc,pc)<0&&(Q.prototype[pc]=(function(e){return function(){return e.apply(this.doc,arguments)}})(ko.prototype[pc]));return Pe(ko),Q.inputStyles={textarea:lc,contenteditable:$},Q.defineMode=function(e){!Q.defaults.mode&&e!=`null`&&(Q.defaults.mode=e),$e.apply(this,arguments)},Q.defineMIME=et,Q.defineMode(`null`,function(){return{token:function(e){return e.skipToEnd()}}}),Q.defineMIME(`text/plain`,`null`),Q.defineExtension=function(e,t){Q.prototype[e]=t},Q.defineDocExtension=function(e,t){ko.prototype[e]=t},Q.fromTextArea=uc,dc(Q),Q.version=`5.65.18`,Q}))})),r=t(n()),i=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){e.defineMode(`css`,function(t,n){var r=n.inline;n.propertyKeywords||(n=e.resolveMode(`text/css`));var i=t.indentUnit,a=n.tokenHooks,o=n.documentTypes||{},s=n.mediaTypes||{},c=n.mediaFeatures||{},l=n.mediaValueKeywords||{},u=n.propertyKeywords||{},d=n.nonStandardPropertyKeywords||{},f=n.fontProperties||{},p=n.counterDescriptors||{},m=n.colorKeywords||{},h=n.valueKeywords||{},g=n.allowNested,_=n.lineComment,v=n.supportsAtComponent===!0,y=t.highlightNonStandardPropertyKeywords!==!1,b,x;function S(e,t){return b=t,e}function C(e,t){var n=e.next();if(a[n]){var r=a[n](e,t);if(r!==!1)return r}if(n==`@`)return e.eatWhile(/[\w\\\-]/),S(`def`,e.current());if(n==`=`||(n==`~`||n==`|`)&&e.eat(`=`))return S(null,`compare`);if(n==`"`||n==`'`)return t.tokenize=w(n),t.tokenize(e,t);if(n==`#`)return e.eatWhile(/[\w\\\-]/),S(`atom`,`hash`);if(n==`!`)return e.match(/^\s*\w*/),S(`keyword`,`important`);if(/\d/.test(n)||n==`.`&&e.eat(/\d/))return e.eatWhile(/[\w.%]/),S(`number`,`unit`);if(n===`-`){if(/[\d.]/.test(e.peek()))return e.eatWhile(/[\w.%]/),S(`number`,`unit`);if(e.match(/^-[\w\\\-]*/))return e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?S(`variable-2`,`variable-definition`):S(`variable-2`,`variable`);if(e.match(/^\w+-/))return S(`meta`,`meta`)}else if(/[,+>*\/]/.test(n))return S(null,`select-op`);else if(n==`.`&&e.match(/^-?[_a-z][_a-z0-9-]*/i))return S(`qualifier`,`qualifier`);else if(/[:;{}\[\]\(\)]/.test(n))return S(null,n);else if(e.match(/^[\w-.]+(?=\()/))return/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(t.tokenize=T),S(`variable callee`,`variable`);else if(/[\w\\\-]/.test(n))return e.eatWhile(/[\w\\\-]/),S(`property`,`word`);else return S(null,null)}function w(e){return function(t,n){for(var r=!1,i;(i=t.next())!=null;){if(i==e&&!r){e==`)`&&t.backUp(1);break}r=!r&&i==`\\`}return(i==e||!r&&e!=`)`)&&(n.tokenize=null),S(`string`,`string`)}}function T(e,t){return e.next(),e.match(/^\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=w(`)`),S(null,`(`)}function E(e,t,n){this.type=e,this.indent=t,this.prev=n}function D(e,t,n,r){return e.context=new E(n,t.indentation()+(r===!1?0:i),e.context),n}function O(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function k(e,t,n){return M[n.context.type](e,t,n)}function A(e,t,n,r){for(var i=r||1;i>0;i--)n.context=n.context.prev;return k(e,t,n)}function j(e){var t=e.current().toLowerCase();x=h.hasOwnProperty(t)?`atom`:m.hasOwnProperty(t)?`keyword`:`variable`}var M={};return M.top=function(e,t,n){if(e==`{`)return D(n,t,`block`);if(e==`}`&&n.context.prev)return O(n);if(v&&/@component/i.test(e))return D(n,t,`atComponentBlock`);if(/^@(-moz-)?document$/i.test(e))return D(n,t,`documentTypes`);if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return D(n,t,`atBlock`);if(/^@(font-face|counter-style)/i.test(e))return n.stateArg=e,`restricted_atBlock_before`;if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return`keyframes`;if(e&&e.charAt(0)==`@`)return D(n,t,`at`);if(e==`hash`)x=`builtin`;else if(e==`word`)x=`tag`;else if(e==`variable-definition`)return`maybeprop`;else if(e==`interpolation`)return D(n,t,`interpolation`);else if(e==`:`)return`pseudo`;else if(g&&e==`(`)return D(n,t,`parens`);return n.context.type},M.block=function(e,t,n){if(e==`word`){var r=t.current().toLowerCase();return u.hasOwnProperty(r)?(x=`property`,`maybeprop`):d.hasOwnProperty(r)?(x=y?`string-2`:`property`,`maybeprop`):g?(x=t.match(/^\s*:(?:\s|$)/,!1)?`property`:`tag`,`block`):(x+=` error`,`maybeprop`)}else if(e==`meta`)return`block`;else if(!g&&(e==`hash`||e==`qualifier`))return x=`error`,`block`;else return M.top(e,t,n)},M.maybeprop=function(e,t,n){return e==`:`?D(n,t,`prop`):k(e,t,n)},M.prop=function(e,t,n){if(e==`;`)return O(n);if(e==`{`&&g)return D(n,t,`propBlock`);if(e==`}`||e==`{`)return A(e,t,n);if(e==`(`)return D(n,t,`parens`);if(e==`hash`&&!/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(t.current()))x+=` error`;else if(e==`word`)j(t);else if(e==`interpolation`)return D(n,t,`interpolation`);return`prop`},M.propBlock=function(e,t,n){return e==`}`?O(n):e==`word`?(x=`property`,`maybeprop`):n.context.type},M.parens=function(e,t,n){return e==`{`||e==`}`?A(e,t,n):e==`)`?O(n):e==`(`?D(n,t,`parens`):e==`interpolation`?D(n,t,`interpolation`):(e==`word`&&j(t),`parens`)},M.pseudo=function(e,t,n){return e==`meta`?`pseudo`:e==`word`?(x=`variable-3`,n.context.type):k(e,t,n)},M.documentTypes=function(e,t,n){return e==`word`&&o.hasOwnProperty(t.current())?(x=`tag`,n.context.type):M.atBlock(e,t,n)},M.atBlock=function(e,t,n){if(e==`(`)return D(n,t,`atBlock_parens`);if(e==`}`||e==`;`)return A(e,t,n);if(e==`{`)return O(n)&&D(n,t,g?`block`:`top`);if(e==`interpolation`)return D(n,t,`interpolation`);if(e==`word`){var r=t.current().toLowerCase();x=r==`only`||r==`not`||r==`and`||r==`or`?`keyword`:s.hasOwnProperty(r)?`attribute`:c.hasOwnProperty(r)?`property`:l.hasOwnProperty(r)?`keyword`:u.hasOwnProperty(r)?`property`:d.hasOwnProperty(r)?y?`string-2`:`property`:h.hasOwnProperty(r)?`atom`:m.hasOwnProperty(r)?`keyword`:`error`}return n.context.type},M.atComponentBlock=function(e,t,n){return e==`}`?A(e,t,n):e==`{`?O(n)&&D(n,t,g?`block`:`top`,!1):(e==`word`&&(x=`error`),n.context.type)},M.atBlock_parens=function(e,t,n){return e==`)`?O(n):e==`{`||e==`}`?A(e,t,n,2):M.atBlock(e,t,n)},M.restricted_atBlock_before=function(e,t,n){return e==`{`?D(n,t,`restricted_atBlock`):e==`word`&&n.stateArg==`@counter-style`?(x=`variable`,`restricted_atBlock_before`):k(e,t,n)},M.restricted_atBlock=function(e,t,n){return e==`}`?(n.stateArg=null,O(n)):e==`word`?(x=n.stateArg==`@font-face`&&!f.hasOwnProperty(t.current().toLowerCase())||n.stateArg==`@counter-style`&&!p.hasOwnProperty(t.current().toLowerCase())?`error`:`property`,`maybeprop`):`restricted_atBlock`},M.keyframes=function(e,t,n){return e==`word`?(x=`variable`,`keyframes`):e==`{`?D(n,t,`top`):k(e,t,n)},M.at=function(e,t,n){return e==`;`?O(n):e==`{`||e==`}`?A(e,t,n):(e==`word`?x=`tag`:e==`hash`&&(x=`builtin`),`at`)},M.interpolation=function(e,t,n){return e==`}`?O(n):e==`{`||e==`;`?A(e,t,n):(e==`word`?x=`variable`:e!=`variable`&&e!=`(`&&e!=`)`&&(x=`error`),`interpolation`)},{startState:function(e){return{tokenize:null,state:r?`block`:`top`,stateArg:null,context:new E(r?`block`:`top`,e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var n=(t.tokenize||C)(e,t);return n&&typeof n==`object`&&(b=n[1],n=n[0]),x=n,b!=`comment`&&(t.state=M[t.state](b,e,t)),x},indent:function(e,t){var n=e.context,r=t&&t.charAt(0),a=n.indent;return n.type==`prop`&&(r==`}`||r==`)`)&&(n=n.prev),n.prev&&(r==`}`&&(n.type==`block`||n.type==`top`||n.type==`interpolation`||n.type==`restricted_atBlock`)?(n=n.prev,a=n.indent):(r==`)`&&(n.type==`parens`||n.type==`atBlock_parens`)||r==`{`&&(n.type==`at`||n.type==`atBlock`))&&(a=Math.max(0,n.indent-i))),a},electricChars:`}`,blockCommentStart:`/*`,blockCommentEnd:`*/`,blockCommentContinue:` * `,lineComment:_,fold:`brace`}});function t(e){for(var t={},n=0;n{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){var t={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};e.defineMode(`xml`,function(r,i){var a=r.indentUnit,o={},s=i.htmlMode?t:n;for(var c in s)o[c]=s[c];for(var c in i)o[c]=i[c];var l,u;function d(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();return r==`<`?e.eat(`!`)?e.eat(`[`)?e.match(`CDATA[`)?n(m(`atom`,`]]>`)):null:e.match(`--`)?n(m(`comment`,`-->`)):e.match(`DOCTYPE`,!0,!0)?(e.eatWhile(/[\w\._\-]/),n(h(1))):null:e.eat(`?`)?(e.eatWhile(/[\w\._\-]/),t.tokenize=m(`meta`,`?>`),`meta`):(l=e.eat(`/`)?`closeTag`:`openTag`,t.tokenize=f,`tag bracket`):r==`&`?(e.eat(`#`)?e.eat(`x`)?e.eatWhile(/[a-fA-F\d]/)&&e.eat(`;`):e.eatWhile(/[\d]/)&&e.eat(`;`):e.eatWhile(/[\w\.\-:]/)&&e.eat(`;`))?`atom`:`error`:(e.eatWhile(/[^&<]/),null)}d.isInText=!0;function f(e,t){var n=e.next();if(n==`>`||n==`/`&&e.eat(`>`))return t.tokenize=d,l=n==`>`?`endTag`:`selfcloseTag`,`tag bracket`;if(n==`=`)return l=`equals`,null;if(n==`<`){t.tokenize=d,t.state=b,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+` tag error`:`tag error`}else if(/[\'\"]/.test(n))return t.tokenize=p(n),t.stringStartCol=e.column(),t.tokenize(e,t);else return e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),`word`}function p(e){var t=function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=f;break}return`string`};return t.isInAttribute=!0,t}function m(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.tokenize=d;break}n.next()}return e}}function h(e){return function(t,n){for(var r;(r=t.next())!=null;)if(r==`<`)return n.tokenize=h(e+1),n.tokenize(t,n);else if(r==`>`)if(e==1){n.tokenize=d;break}else return n.tokenize=h(e-1),n.tokenize(t,n);return`meta`}}function g(e){return e&&e.toLowerCase()}function _(e,t,n){this.prev=e.context,this.tagName=t||``,this.indent=e.indented,this.startOfLine=n,(o.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)&&(this.noIndent=!0)}function v(e){e.context&&=e.context.prev}function y(e,t){for(var n;;){if(!e.context||(n=e.context.tagName,!o.contextGrabbers.hasOwnProperty(g(n))||!o.contextGrabbers[g(n)].hasOwnProperty(g(t))))return;v(e)}}function b(e,t,n){return e==`openTag`?(n.tagStart=t.column(),x):e==`closeTag`?S:b}function x(e,t,n){return e==`word`?(n.tagName=t.current(),u=`tag`,T):o.allowMissingTagName&&e==`endTag`?(u=`tag bracket`,T(e,t,n)):(u=`error`,x)}function S(e,t,n){if(e==`word`){var r=t.current();return n.context&&n.context.tagName!=r&&o.implicitlyClosed.hasOwnProperty(g(n.context.tagName))&&v(n),n.context&&n.context.tagName==r||o.matchClosing===!1?(u=`tag`,C):(u=`tag error`,w)}else if(o.allowMissingTagName&&e==`endTag`)return u=`tag bracket`,C(e,t,n);else return u=`error`,w}function C(e,t,n){return e==`endTag`?(v(n),b):(u=`error`,C)}function w(e,t,n){return u=`error`,C(e,t,n)}function T(e,t,n){if(e==`word`)return u=`attribute`,E;if(e==`endTag`||e==`selfcloseTag`){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,e==`selfcloseTag`||o.autoSelfClosers.hasOwnProperty(g(r))?y(n,r):(y(n,r),n.context=new _(n,r,i==n.indented)),b}return u=`error`,T}function E(e,t,n){return e==`equals`?D:(o.allowMissing||(u=`error`),T(e,t,n))}function D(e,t,n){return e==`string`?O:e==`word`&&o.allowUnquoted?(u=`string`,T):(u=`error`,T(e,t,n))}function O(e,t,n){return e==`string`?O:T(e,t,n)}return{startState:function(e){var t={tokenize:d,state:b,indented:e||0,tagName:null,tagStart:null,context:null};return e!=null&&(t.baseIndent=e),t},token:function(e,t){if(!t.tagName&&e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;l=null;var n=t.tokenize(e,t);return(n||l)&&n!=`comment`&&(u=null,t.state=t.state(l||n,e,t),u&&(n=u==`error`?n+` error`:u)),n},indent:function(t,n,r){var i=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+a;if(i&&i.noIndent)return e.Pass;if(t.tokenize!=f&&t.tokenize!=d)return r?r.match(/^(\s*)/)[0].length:0;if(t.tagName)return o.multilineTagIndentPastTag===!1?t.tagStart+a*(o.multilineTagIndentFactor||1):t.tagStart+t.tagName.length+2;if(o.alignCDATA&&/$/,blockCommentStart:``,configuration:o.htmlMode?`html`:`xml`,helperType:o.htmlMode?`html`:`xml`,skipAttribute:function(e){e.state==D&&(e.state=T)},xmlCurrentTag:function(e){return e.tagName?{name:e.tagName,close:e.type==`closeTag`}:null},xmlCurrentContext:function(e){for(var t=[],n=e.context;n;n=n.prev)t.push(n.tagName);return t.reverse()}}}),e.defineMIME(`text/xml`,`xml`),e.defineMIME(`application/xml`,`xml`),e.mimeModes.hasOwnProperty(`text/html`)||e.defineMIME(`text/html`,{name:`xml`,htmlMode:!0})})})),o=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){e.defineMode(`javascript`,function(t,n){var r=t.indentUnit,i=n.statementIndent,a=n.jsonld,o=n.json||a,s=n.trackScope!==!1,c=n.typescript,l=n.wordCharacters||/[\w$\xa1-\uffff]/,u=function(){function e(e){return{type:e,style:`keyword`}}var t=e(`keyword a`),n=e(`keyword b`),r=e(`keyword c`),i=e(`keyword d`),a=e(`operator`),o={type:`atom`,style:`atom`};return{if:e(`if`),while:t,with:t,else:n,do:n,try:n,finally:n,return:i,break:i,continue:i,new:e(`new`),delete:r,void:r,throw:r,debugger:e(`debugger`),var:e(`var`),const:e(`var`),let:e(`var`),function:e(`function`),catch:e(`catch`),for:e(`for`),switch:e(`switch`),case:e(`case`),default:e(`default`),in:a,typeof:a,instanceof:a,true:o,false:o,null:o,undefined:o,NaN:o,Infinity:o,this:e(`this`),class:e(`class`),super:e(`atom`),yield:r,export:e(`export`),import:e(`import`),extends:r,await:r}}(),d=/[+\-*&%=<>!?|~^@]/,f=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function p(e){for(var t=!1,n,r=!1;(n=e.next())!=null;){if(!t){if(n==`/`&&!r)return;n==`[`?r=!0:r&&n==`]`&&(r=!1)}t=!t&&n==`\\`}}var m,h;function g(e,t,n){return m=e,h=n,t}function _(e,t){var n=e.next();if(n==`"`||n==`'`)return t.tokenize=v(n),t.tokenize(e,t);if(n==`.`&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return g(`number`,`number`);if(n==`.`&&e.match(`..`))return g(`spread`,`meta`);if(/[\[\]{}\(\),;\:\.]/.test(n))return g(n);if(n==`=`&&e.eat(`>`))return g(`=>`,`operator`);if(n==`0`&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return g(`number`,`number`);if(/\d/.test(n))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),g(`number`,`number`);if(n==`/`)return e.eat(`*`)?(t.tokenize=y,y(e,t)):e.eat(`/`)?(e.skipToEnd(),g(`comment`,`comment`)):dt(e,t,1)?(p(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),g(`regexp`,`string-2`)):(e.eat(`=`),g(`operator`,`operator`,e.current()));if(n=="`")return t.tokenize=b,b(e,t);if(n==`#`&&e.peek()==`!`)return e.skipToEnd(),g(`meta`,`meta`);if(n==`#`&&e.eatWhile(l))return g(`variable`,`property`);if(n==`<`&&e.match(`!--`)||n==`-`&&e.match(`->`)&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),g(`comment`,`comment`);if(d.test(n))return(n!=`>`||!t.lexical||t.lexical.type!=`>`)&&(e.eat(`=`)?(n==`!`||n==`=`)&&e.eat(`=`):/[<>*+\-|&?]/.test(n)&&(e.eat(n),n==`>`&&e.eat(n))),n==`?`&&e.eat(`.`)?g(`.`):g(`operator`,`operator`,e.current());if(l.test(n)){e.eatWhile(l);var r=e.current();if(t.lastType!=`.`){if(u.propertyIsEnumerable(r)){var i=u[r];return g(i.type,i.style,r)}if(r==`async`&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return g(`async`,`keyword`,r)}return g(`variable`,`variable`,r)}}function v(e){return function(t,n){var r=!1,i;if(a&&t.peek()==`@`&&t.match(f))return n.tokenize=_,g(`jsonld-keyword`,`meta`);for(;(i=t.next())!=null&&!(i==e&&!r);)r=!r&&i==`\\`;return r||(n.tokenize=_),g(`string`,`string`)}}function y(e,t){for(var n=!1,r;r=e.next();){if(r==`/`&&n){t.tokenize=_;break}n=r==`*`}return g(`comment`,`comment`)}function b(e,t){for(var n=!1,r;(r=e.next())!=null;){if(!n&&(r=="`"||r==`$`&&e.eat(`{`))){t.tokenize=_;break}n=!n&&r==`\\`}return g(`quasi`,`string-2`,e.current())}var x=`([{}])`;function S(e,t){t.fatArrowAt&&=null;var n=e.string.indexOf(`=>`,e.start);if(!(n<0)){if(c){var r=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,n));r&&(n=r.index)}for(var i=0,a=!1,o=n-1;o>=0;--o){var s=e.string.charAt(o),u=x.indexOf(s);if(u>=0&&u<3){if(!i){++o;break}if(--i==0){s==`(`&&(a=!0);break}}else if(u>=3&&u<6)++i;else if(l.test(s))a=!0;else if(/["'\/`]/.test(s))for(;;--o){if(o==0)return;if(e.string.charAt(o-1)==s&&e.string.charAt(o-2)!=`\\`){o--;break}}else if(a&&!i){++o;break}}a&&!i&&(t.fatArrowAt=o)}}var C={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function w(e,t,n,r,i,a){this.indented=e,this.column=t,this.type=n,this.prev=i,this.info=a,r!=null&&(this.align=r)}function T(e,t){if(!s)return!1;for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var r=e.context;r;r=r.prev)for(var n=r.vars;n;n=n.next)if(n.name==t)return!0}function E(e,t,n,r,i){var a=e.cc;for(D.state=e,D.stream=i,D.marked=null,D.cc=a,D.style=t,e.lexical.hasOwnProperty(`align`)||(e.lexical.align=!0);;)if((a.length?a.pop():o?B:z)(n,r)){for(;a.length&&a[a.length-1].lex;)a.pop()();return D.marked?D.marked:n==`variable`&&T(e,r)?`variable-2`:t}}var D={state:null,column:null,marked:null,cc:null};function O(){for(var e=arguments.length-1;e>=0;e--)D.cc.push(arguments[e])}function k(){return O.apply(null,arguments),!0}function A(e,t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}function j(e){var t=D.state;if(D.marked=`def`,s){if(t.context){if(t.lexical.info==`var`&&t.context&&t.context.block){var r=M(e,t.context);if(r!=null){t.context=r;return}}else if(!A(e,t.localVars)){t.localVars=new N(e,t.localVars);return}}n.globalVars&&!A(e,t.globalVars)&&(t.globalVars=new N(e,t.globalVars))}}function M(e,t){if(!t)return null;if(t.block){var n=M(e,t.prev);return n?n==t.prev?t:new te(n,t.vars,!0):null}else if(A(e,t.vars))return t;else return new te(t.prev,new N(e,t.vars),!1)}function ee(e){return e==`public`||e==`private`||e==`protected`||e==`abstract`||e==`readonly`}function te(e,t,n){this.prev=e,this.vars=t,this.block=n}function N(e,t){this.name=e,this.next=t}var ne=new N(`this`,new N(`arguments`,null));function P(){D.state.context=new te(D.state.context,D.state.localVars,!1),D.state.localVars=ne}function re(){D.state.context=new te(D.state.context,D.state.localVars,!0),D.state.localVars=null}P.lex=re.lex=!0;function F(){D.state.localVars=D.state.context.vars,D.state.context=D.state.context.prev}F.lex=!0;function I(e,t){var n=function(){var n=D.state,r=n.indented;if(n.lexical.type==`stat`)r=n.lexical.indented;else for(var i=n.lexical;i&&i.type==`)`&&i.align;i=i.prev)r=i.indented;n.lexical=new w(r,D.stream.column(),e,null,n.lexical,t)};return n.lex=!0,n}function L(){var e=D.state;e.lexical.prev&&(e.lexical.type==`)`&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}L.lex=!0;function R(e){function t(n){return n==e?k():e==`;`||n==`}`||n==`)`||n==`]`?O():k(t)}return t}function z(e,t){return e==`var`?k(I(`vardef`,t),Ie,R(`;`),L):e==`keyword a`?k(I(`form`),oe,z,L):e==`keyword b`?k(I(`form`),z,L):e==`keyword d`?D.stream.match(/^\s*$/,!1)?k():k(I(`stat`),ce,R(`;`),L):e==`debugger`?k(R(`;`)):e==`{`?k(I(`}`),re,we,L,F):e==`;`?k():e==`if`?(D.state.lexical.info==`else`&&D.state.cc[D.state.cc.length-1]==L&&D.state.cc.pop()(),k(I(`form`),oe,z,L,He)):e==`function`?k(Ke):e==`for`?k(I(`form`),re,Ue,z,F,L):e==`class`||c&&t==`interface`?(D.marked=`keyword`,k(I(`form`,e==`class`?e:t),Ze,L)):e==`variable`?c&&t==`declare`?(D.marked=`keyword`,k(z)):c&&(t==`module`||t==`enum`||t==`type`)&&D.stream.match(/^\s*\w/,!1)?(D.marked=`keyword`,t==`enum`?k(K):t==`type`?k(Je,R(`operator`),H,R(`;`)):k(I(`form`),Le,R(`{`),I(`}`),we,L,L)):c&&t==`namespace`?(D.marked=`keyword`,k(I(`form`),B,z,L)):c&&t==`abstract`?(D.marked=`keyword`,k(z)):k(I(`stat`),_e):e==`switch`?k(I(`form`),oe,R(`{`),I(`}`,`switch`),re,we,L,L,F):e==`case`?k(B,R(`:`)):e=="default"?k(R(`:`)):e==`catch`?k(I(`form`),P,ie,z,L,F):e==`export`?k(I(`stat`),tt,L):e==`import`?k(I(`stat`),rt,L):e==`async`?k(z):t==`@`?k(B,z):O(I(`stat`),B,R(`;`),L)}function ie(e){if(e==`(`)return k(Ye,R(`)`))}function B(e,t){return se(e,t,!1)}function ae(e,t){return se(e,t,!0)}function oe(e){return e==`(`?k(I(`)`),ce,R(`)`),L):O()}function se(e,t,n){if(D.state.fatArrowAt==D.stream.start){var r=n?pe:V;if(e==`(`)return k(P,I(`)`),Se(Ye,`)`),L,R(`=>`),r,F);if(e==`variable`)return O(P,Le,R(`=>`),r,F)}var i=n?ue:le;return C.hasOwnProperty(e)?k(i):e==`function`?k(Ke,i):e==`class`||c&&t==`interface`?(D.marked=`keyword`,k(I(`form`),Xe,L)):e==`keyword c`||e==`async`?k(n?ae:B):e==`(`?k(I(`)`),ce,R(`)`),L,i):e==`operator`||e==`spread`?k(n?ae:B):e==`[`?k(I(`]`),ct,L,i):e==`{`?Ce(ye,`}`,null,i):e==`quasi`?O(de,i):e==`new`?k(me(n)):k()}function ce(e){return e.match(/[;\}\)\],]/)?O():O(B)}function le(e,t){return e==`,`?k(ce):ue(e,t,!1)}function ue(e,t,n){var r=n==0?le:ue,i=n==0?B:ae;if(e==`=>`)return k(P,n?pe:V,F);if(e==`operator`)return/\+\+|--/.test(t)||c&&t==`!`?k(r):c&&t==`<`&&D.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?k(I(`>`),Se(H,`>`),L,r):t==`?`?k(B,R(`:`),i):k(i);if(e==`quasi`)return O(de,r);if(e!=`;`){if(e==`(`)return Ce(ae,`)`,`call`,r);if(e==`.`)return k(ve,r);if(e==`[`)return k(I(`]`),ce,R(`]`),L,r);if(c&&t==`as`)return D.marked=`keyword`,k(H,r);if(e==`regexp`)return D.state.lastType=D.marked=`operator`,D.stream.backUp(D.stream.pos-D.stream.start-1),k(i)}}function de(e,t){return e==`quasi`?t.slice(t.length-2)=="${"?k(ce,fe):k(de):O()}function fe(e){if(e==`}`)return D.marked=`string-2`,D.state.tokenize=b,k(de)}function V(e){return S(D.stream,D.state),O(e==`{`?z:B)}function pe(e){return S(D.stream,D.state),O(e==`{`?z:ae)}function me(e){return function(t){return t==`.`?k(e?ge:he):t==`variable`&&c?k(Ne,e?ue:le):O(e?ae:B)}}function he(e,t){if(t==`target`)return D.marked=`keyword`,k(le)}function ge(e,t){if(t==`target`)return D.marked=`keyword`,k(ue)}function _e(e){return e==`:`?k(L,z):O(le,R(`;`),L)}function ve(e){if(e==`variable`)return D.marked=`property`,k()}function ye(e,t){if(e==`async`)return D.marked=`property`,k(ye);if(e==`variable`||D.style==`keyword`){if(D.marked=`property`,t==`get`||t==`set`)return k(be);var n;return c&&D.state.fatArrowAt==D.stream.start&&(n=D.stream.match(/^\s*:\s*/,!1))&&(D.state.fatArrowAt=D.stream.pos+n[0].length),k(xe)}else if(e==`number`||e==`string`)return D.marked=a?`property`:D.style+` property`,k(xe);else if(e==`jsonld-keyword`)return k(xe);else if(c&&ee(t))return D.marked=`keyword`,k(ye);else if(e==`[`)return k(B,Te,R(`]`),xe);else if(e==`spread`)return k(ae,xe);else if(t==`*`)return D.marked=`keyword`,k(ye);else if(e==`:`)return O(xe)}function be(e){return e==`variable`?(D.marked=`property`,k(Ke)):O(xe)}function xe(e){if(e==`:`)return k(ae);if(e==`(`)return O(Ke)}function Se(e,t,n){function r(i,a){if(n?n.indexOf(i)>-1:i==`,`){var o=D.state.lexical;return o.info==`call`&&(o.pos=(o.pos||0)+1),k(function(n,r){return n==t||r==t?O():O(e)},r)}return i==t||a==t?k():n&&n.indexOf(`;`)>-1?O(e):k(R(t))}return function(n,i){return n==t||i==t?k():O(e,r)}}function Ce(e,t,n){for(var r=3;r`),H);if(e==`quasi`)return O(je,Me)}function ke(e){if(e==`=>`)return k(H)}function U(e){return e.match(/[\}\)\]]/)?k():e==`,`||e==`;`?k(U):O(Ae,U)}function Ae(e,t){if(e==`variable`||D.style==`keyword`)return D.marked=`property`,k(Ae);if(t==`?`||e==`number`||e==`string`)return k(Ae);if(e==`:`)return k(H);if(e==`[`)return k(R(`variable`),Ee,R(`]`),Ae);if(e==`(`)return O(qe,Ae);if(!e.match(/[;\}\)\],]/))return k()}function je(e,t){return e==`quasi`?t.slice(t.length-2)=="${"?k(H,W):k(je):O()}function W(e){if(e==`}`)return D.marked=`string-2`,D.state.tokenize=b,k(je)}function G(e,t){return e==`variable`&&D.stream.match(/^\s*[?:]/,!1)||t==`?`?k(G):e==`:`?k(H):e==`spread`?k(G):O(H)}function Me(e,t){if(t==`<`)return k(I(`>`),Se(H,`>`),L,Me);if(t==`|`||e==`.`||t==`&`)return k(H);if(e==`[`)return k(H,R(`]`),Me);if(t==`extends`||t==`implements`)return D.marked=`keyword`,k(H);if(t==`?`)return k(H,R(`:`),H)}function Ne(e,t){if(t==`<`)return k(I(`>`),Se(H,`>`),L,Me)}function Pe(){return O(H,Fe)}function Fe(e,t){if(t==`=`)return k(H)}function Ie(e,t){return t==`enum`?(D.marked=`keyword`,k(K)):O(Le,Te,Be,Ve)}function Le(e,t){if(c&&ee(t))return D.marked=`keyword`,k(Le);if(e==`variable`)return j(t),k();if(e==`spread`)return k(Le);if(e==`[`)return Ce(ze,`]`);if(e==`{`)return Ce(Re,`}`)}function Re(e,t){return e==`variable`&&!D.stream.match(/^\s*:/,!1)?(j(t),k(Be)):(e==`variable`&&(D.marked=`property`),e==`spread`?k(Le):e==`}`?O():e==`[`?k(B,R(`]`),R(`:`),Re):k(R(`:`),Le,Be))}function ze(){return O(Le,Be)}function Be(e,t){if(t==`=`)return k(ae)}function Ve(e){if(e==`,`)return k(Ie)}function He(e,t){if(e==`keyword b`&&t==`else`)return k(I(`form`,`else`),z,L)}function Ue(e,t){if(t==`await`)return k(Ue);if(e==`(`)return k(I(`)`),We,L)}function We(e){return e==`var`?k(Ie,Ge):e==`variable`?k(Ge):O(Ge)}function Ge(e,t){return e==`)`?k():e==`;`?k(Ge):t==`in`||t==`of`?(D.marked=`keyword`,k(B,Ge)):O(B,Ge)}function Ke(e,t){if(t==`*`)return D.marked=`keyword`,k(Ke);if(e==`variable`)return j(t),k(Ke);if(e==`(`)return k(P,I(`)`),Se(Ye,`)`),L,De,z,F);if(c&&t==`<`)return k(I(`>`),Se(Pe,`>`),L,Ke)}function qe(e,t){if(t==`*`)return D.marked=`keyword`,k(qe);if(e==`variable`)return j(t),k(qe);if(e==`(`)return k(P,I(`)`),Se(Ye,`)`),L,De,F);if(c&&t==`<`)return k(I(`>`),Se(Pe,`>`),L,qe)}function Je(e,t){if(e==`keyword`||e==`variable`)return D.marked=`type`,k(Je);if(t==`<`)return k(I(`>`),Se(Pe,`>`),L)}function Ye(e,t){return t==`@`&&k(B,Ye),e==`spread`?k(Ye):c&&ee(t)?(D.marked=`keyword`,k(Ye)):c&&e==`this`?k(Te,Be):O(Le,Te,Be)}function Xe(e,t){return e==`variable`?Ze(e,t):Qe(e,t)}function Ze(e,t){if(e==`variable`)return j(t),k(Qe)}function Qe(e,t){if(t==`<`)return k(I(`>`),Se(Pe,`>`),L,Qe);if(t==`extends`||t==`implements`||c&&e==`,`)return t==`implements`&&(D.marked=`keyword`),k(c?H:B,Qe);if(e==`{`)return k(I(`}`),$e,L)}function $e(e,t){if(e==`async`||e==`variable`&&(t==`static`||t==`get`||t==`set`||c&&ee(t))&&D.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return D.marked=`keyword`,k($e);if(e==`variable`||D.style==`keyword`)return D.marked=`property`,k(et,$e);if(e==`number`||e==`string`)return k(et,$e);if(e==`[`)return k(B,Te,R(`]`),et,$e);if(t==`*`)return D.marked=`keyword`,k($e);if(c&&e==`(`)return O(qe,$e);if(e==`;`||e==`,`)return k($e);if(e==`}`)return k();if(t==`@`)return k(B,$e)}function et(e,t){if(t==`!`||t==`?`)return k(et);if(e==`:`)return k(H,Be);if(t==`=`)return k(ae);var n=D.state.lexical.prev;return O(n&&n.info==`interface`?qe:Ke)}function tt(e,t){return t==`*`?(D.marked=`keyword`,k(st,R(`;`))):t=="default"?(D.marked=`keyword`,k(B,R(`;`))):e==`{`?k(Se(nt,`}`),st,R(`;`)):O(z)}function nt(e,t){if(t==`as`)return D.marked=`keyword`,k(R(`variable`));if(e==`variable`)return O(ae,nt)}function rt(e){return e==`string`?k():e==`(`?O(B):e==`.`?O(le):O(it,at,st)}function it(e,t){return e==`{`?Ce(it,`}`):(e==`variable`&&j(t),t==`*`&&(D.marked=`keyword`),k(ot))}function at(e){if(e==`,`)return k(it,at)}function ot(e,t){if(t==`as`)return D.marked=`keyword`,k(it)}function st(e,t){if(t==`from`)return D.marked=`keyword`,k(B)}function ct(e){return e==`]`?k():O(Se(ae,`]`))}function K(){return O(I(`form`),Le,R(`{`),I(`}`),Se(lt,`}`),L,L)}function lt(){return O(Le,Be)}function ut(e,t){return e.lastType==`operator`||e.lastType==`,`||d.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function dt(e,t,n){return t.tokenize==_&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||t.lastType==`quasi`&&/\{\s*$/.test(e.string.slice(0,e.pos-(n||0)))}return{startState:function(e){var t={tokenize:_,lastType:`sof`,cc:[],lexical:new w((e||0)-r,0,`block`,!1),localVars:n.localVars,context:n.localVars&&new te(null,null,!1),indented:e||0};return n.globalVars&&typeof n.globalVars==`object`&&(t.globalVars=n.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty(`align`)||(t.lexical.align=!1),t.indented=e.indentation(),S(e,t)),t.tokenize!=y&&e.eatSpace())return null;var n=t.tokenize(e,t);return m==`comment`?n:(t.lastType=m==`operator`&&(h==`++`||h==`--`)?`incdec`:m,E(t,n,m,h,e))},indent:function(t,a){if(t.tokenize==y||t.tokenize==b)return e.Pass;if(t.tokenize!=_)return 0;var o=a&&a.charAt(0),s=t.lexical,c;if(!/^\s*else\b/.test(a))for(var l=t.cc.length-1;l>=0;--l){var u=t.cc[l];if(u==L)s=s.prev;else if(u!=He&&u!=F)break}for(;(s.type==`stat`||s.type==`form`)&&(o==`}`||(c=t.cc[t.cc.length-1])&&(c==le||c==ue)&&!/^[,\.=+\-*:?[\(]/.test(a));)s=s.prev;i&&s.type==`)`&&s.prev.type==`stat`&&(s=s.prev);var d=s.type,f=o==d;return d==`vardef`?s.indented+(t.lastType==`operator`||t.lastType==`,`?s.info.length+1:0):d==`form`&&o==`{`?s.indented:d==`form`?s.indented+r:d==`stat`?s.indented+(ut(t,a)?i||r:0):s.info==`switch`&&!f&&n.doubleIndentSwitch!=0?s.indented+(/^(?:case|default)\b/.test(a)?r:2*r):s.align?s.column+ +!f:s.indented+(f?0:r)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:o?null:`/*`,blockCommentEnd:o?null:`*/`,blockCommentContinue:o?null:` * `,lineComment:o?null:`//`,fold:`brace`,closeBrackets:`()[]{}''""\`\``,helperType:o?`json`:`javascript`,jsonldMode:a,jsonMode:o,expressionAllowed:dt,skipExpression:function(t){E(t,`atom`,`atom`,`true`,new e.StringStream(``,2,null))}}}),e.registerHelper(`wordChars`,`javascript`,/[\w$]/),e.defineMIME(`text/javascript`,`javascript`),e.defineMIME(`text/ecmascript`,`javascript`),e.defineMIME(`application/javascript`,`javascript`),e.defineMIME(`application/x-javascript`,`javascript`),e.defineMIME(`application/ecmascript`,`javascript`),e.defineMIME(`application/json`,{name:`javascript`,json:!0}),e.defineMIME(`application/x-json`,{name:`javascript`,json:!0}),e.defineMIME(`application/manifest+json`,{name:`javascript`,json:!0}),e.defineMIME(`application/ld+json`,{name:`javascript`,jsonld:!0}),e.defineMIME(`text/typescript`,{name:`javascript`,typescript:!0}),e.defineMIME(`application/typescript`,{name:`javascript`,typescript:!0})})})),s=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n(),a(),o(),i()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`,`../xml/xml`,`../javascript/javascript`,`../css/css`],r):r(CodeMirror)})(function(e){var t={script:[[`lang`,/(javascript|babel)/i,`javascript`],[`type`,/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,`javascript`],[`type`,/./,`text/plain`],[null,null,`javascript`]],style:[[`lang`,/^css$/i,`css`],[`type`,/^(text\/)?(x-)?(stylesheet|css)$/i,`css`],[`type`,/./,`text/plain`],[null,null,`css`]]};function n(e,t,n){var r=e.current(),i=r.search(t);return i>-1?e.backUp(r.length-i):r.match(/<\/?$/)&&(e.backUp(r.length),e.match(t,!1)||e.match(r)),n}var r={};function i(e){return r[e]||(r[e]=RegExp(`\\s+`+e+`\\s*=\\s*('|")?([^'"]+)('|")?\\s*`))}function a(e,t){var n=e.match(i(t));return n?/^\s*(.*?)\s*$/.exec(n[2])[1]:``}function o(e,t){return RegExp((t?`^`:``)+``,`i`)}function s(e,t){for(var n in e)for(var r=t[n]||(t[n]=[]),i=e[n],a=i.length-1;a>=0;a--)r.unshift(i[a])}function c(e,t){for(var n=0;n=0;f--)l.script.unshift([`type`,d[f].matches,d[f].mode]);function p(t,i){var s=a.token(t,i.htmlState),u=/\btag\b/.test(s),d;if(u&&!/[<>\s\/]/.test(t.current())&&(d=i.htmlState.tagName&&i.htmlState.tagName.toLowerCase())&&l.hasOwnProperty(d))i.inTag=d+` `;else if(i.inTag&&u&&/>$/.test(t.current())){var f=/^([\S]+) (.*)/.exec(i.inTag);i.inTag=null;var m=t.current()==`>`&&c(l[f[1]],f[2]),h=e.getMode(r,m),g=o(f[1],!0),_=o(f[1],!1);i.token=function(e,t){return e.match(g,!1)?(t.token=p,t.localState=t.localMode=null,null):n(e,_,t.localMode.token(e,t.localState))},i.localMode=h,i.localState=e.startState(h,a.indent(i.htmlState,``,``))}else i.inTag&&(i.inTag+=t.current(),t.eol()&&(i.inTag+=` `));return s}return{startState:function(){return{token:p,inTag:null,localMode:null,localState:null,htmlState:e.startState(a)}},copyState:function(t){var n;return t.localState&&(n=e.copyState(t.localMode,t.localState)),{token:t.token,inTag:t.inTag,localMode:t.localMode,localState:n,htmlState:e.copyState(a,t.htmlState)}},token:function(e,t){return t.token(e,t)},indent:function(t,n,r){return!t.localMode||/^\s*<\//.test(n)?a.indent(t.htmlState,n,r):t.localMode.indent?t.localMode.indent(t.localState,n,r):e.Pass},innerMode:function(e){return{state:e.localState||e.htmlState,mode:e.localMode||a}}}},`xml`,`javascript`,`css`),e.defineMIME(`text/html`,`htmlmixed`)})})),c=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){function t(e){return RegExp(`^((`+e.join(`)|(`)+`))\\b`)}var n=t([`and`,`or`,`not`,`is`]),r=`as.assert.break.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.lambda.pass.raise.return.try.while.with.yield.in.False.True`.split(`.`),i=`abs.all.any.bin.bool.bytearray.callable.chr.classmethod.compile.complex.delattr.dict.dir.divmod.enumerate.eval.filter.float.format.frozenset.getattr.globals.hasattr.hash.help.hex.id.input.int.isinstance.issubclass.iter.len.list.locals.map.max.memoryview.min.next.object.oct.open.ord.pow.property.range.repr.reversed.round.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.vars.zip.__import__.NotImplemented.Ellipsis.__debug__`.split(`.`);e.registerHelper(`hintWords`,`python`,r.concat(i).concat([`exec`,`print`]));function a(e){return e.scopes[e.scopes.length-1]}e.defineMode(`python`,function(o,s){for(var c=`error`,l=s.delimiters||s.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,u=[s.singleOperators,s.doubleOperators,s.doubleDelimiters,s.tripleDelimiters,s.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],d=0;dr?w(t):i0&&E(e,t)&&(o+=` `+c),o}}return x(e,t)}function x(e,t,r){if(e.eatSpace())return null;if(!r&&e.match(/^#.*/))return`comment`;if(e.match(/^[0-9\.]/,!1)){var i=!1;if(e.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(i=!0),e.match(/^[\d_]+\.\d*/)&&(i=!0),e.match(/^\.\d+/)&&(i=!0),i)return e.eat(/J/i),`number`;var a=!1;if(e.match(/^0x[0-9a-f_]+/i)&&(a=!0),e.match(/^0b[01_]+/i)&&(a=!0),e.match(/^0o[0-7_]+/i)&&(a=!0),e.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(e.eat(/J/i),a=!0),e.match(/^0(?![\dx])/i)&&(a=!0),a)return e.eat(/L/i),`number`}if(e.match(_))return e.current().toLowerCase().indexOf(`f`)===-1?(t.tokenize=C(e.current(),t.tokenize),t.tokenize(e,t)):(t.tokenize=S(e.current(),t.tokenize),t.tokenize(e,t));for(var o=0;o=0;)e=e.substr(1);var n=e.length==1,r=`string`;function i(e){return function(t,n){var r=x(t,n,!0);return r==`punctuation`&&(t.current()==`{`?n.tokenize=i(e+1):t.current()==`}`&&(e>1?n.tokenize=i(e-1):n.tokenize=a)),r}}function a(a,o){for(;!a.eol();)if(a.eatWhile(/[^'"\{\}\\]/),a.eat(`\\`)){if(a.next(),n&&a.eol())return r}else if(a.match(e))return o.tokenize=t,r;else if(a.match(`{{`))return r;else if(a.match(`{`,!1))return o.tokenize=i(0),a.current()?r:o.tokenize(a,o);else if(a.match(`}}`))return r;else if(a.match(`}`))return c;else a.eat(/['"]/);if(n){if(s.singleLineStringErrors)return c;o.tokenize=t}return r}return a.isString=!0,a}function C(e,t){for(;`rubf`.indexOf(e.charAt(0).toLowerCase())>=0;)e=e.substr(1);var n=e.length==1,r=`string`;function i(i,a){for(;!i.eol();)if(i.eatWhile(/[^'"\\]/),i.eat(`\\`)){if(i.next(),n&&i.eol())return r}else if(i.match(e))return a.tokenize=t,r;else i.eat(/['"]/);if(n){if(s.singleLineStringErrors)return c;a.tokenize=t}return r}return i.isString=!0,i}function w(e){for(;a(e).type!=`py`;)e.scopes.pop();e.scopes.push({offset:a(e).offset+o.indentUnit,type:`py`,align:null})}function T(e,t,n){var r=e.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:e.column()+1;t.scopes.push({offset:t.indent+f,type:n,align:r})}function E(e,t){for(var n=e.indentation();t.scopes.length>1&&a(t).offset>n;){if(a(t).type!=`py`)return!0;t.scopes.pop()}return a(t).offset!=n}function D(e,t){e.sol()&&(t.beginningOfLine=!0,t.dedent=!1);var n=t.tokenize(e,t),r=e.current();if(t.beginningOfLine&&r==`@`)return e.match(g,!1)?`meta`:h?`operator`:c;if(/\S/.test(r)&&(t.beginningOfLine=!1),(n==`variable`||n==`builtin`)&&t.lastToken==`meta`&&(n=`meta`),(r==`pass`||r==`return`)&&(t.dedent=!0),r==`lambda`&&(t.lambda=!0),r==`:`&&!t.lambda&&a(t).type==`py`&&e.match(/^\s*(?:#|$)/,!1)&&w(t),r.length==1&&!/string|comment/.test(n)){var i=`[({`.indexOf(r);if(i!=-1&&T(e,t,`])}`.slice(i,i+1)),i=`])}`.indexOf(r),i!=-1)if(a(t).type==r)t.indent=t.scopes.pop().offset-f;else return c}return t.dedent&&e.eol()&&a(t).type==`py`&&t.scopes.length>1&&t.scopes.pop(),n}return{startState:function(e){return{tokenize:b,scopes:[{offset:e||0,type:`py`,align:null}],indent:e||0,lastToken:null,lambda:!1,dedent:0}},token:function(e,t){var n=t.errorToken;n&&(t.errorToken=!1);var r=D(e,t);return r&&r!=`comment`&&(t.lastToken=r==`keyword`||r==`punctuation`?e.current():r),r==`punctuation`&&(r=null),e.eol()&&t.lambda&&(t.lambda=!1),n?r+` `+c:r},indent:function(t,n){if(t.tokenize!=b)return t.tokenize.isString?e.Pass:0;var r=a(t),i=r.type==n.charAt(0)||r.type==`py`&&!t.dedent&&/^(else:|elif |except |finally:)/.test(n);return r.align==null?r.offset-(i?f:0):r.align-+!!i},electricInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,closeBrackets:{triples:`'"`},lineComment:`#`,fold:`indent`}}),e.defineMIME(`text/x-python`,`python`),e.defineMIME(`text/x-cython`,{name:`python`,extra_keywords:function(e){return e.split(` `)}(`by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE`)})})})),l=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){function t(e,t,n,r,i,a){this.indented=e,this.column=t,this.type=n,this.info=r,this.align=i,this.prev=a}function n(e,n,r,i){var a=e.indented;return e.context&&e.context.type==`statement`&&r!=`statement`&&(a=e.context.indented),e.context=new t(a,n,r,i,null,e.context)}function r(e){var t=e.context.type;return(t==`)`||t==`]`||t==`}`)&&(e.indented=e.context.indented),e.context=e.context.prev}function i(e,t,n){if(t.prevToken==`variable`||t.prevToken==`type`||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,n))||t.typeAtEndOfLine&&e.column()==e.indentation())return!0}function a(e){for(;;){if(!e||e.type==`top`)return!0;if(e.type==`}`&&e.prev.info!=`namespace`)return!1;e=e.prev}}e.defineMode(`clike`,function(o,c){var l=o.indentUnit,u=c.statementIndentUnit||l,d=c.dontAlignCalls,f=c.keywords||{},p=c.types||{},m=c.builtin||{},h=c.blockKeywords||{},g=c.defKeywords||{},_=c.atoms||{},v=c.hooks||{},y=c.multiLineStrings,b=c.indentStatements!==!1,x=c.indentSwitch!==!1,S=c.namespaceSeparator,C=c.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,w=c.numberStart||/[\d\.]/,T=c.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,E=c.isOperatorChar||/[+\-*&%=<>!?|\/]/,D=c.isIdentifierChar||/[\w\$_\xa1-\uffff]/,O=c.isReservedIdentifier||!1,k,A;function j(e,t){var n=e.next();if(v[n]){var r=v[n](e,t);if(r!==!1)return r}if(n==`"`||n==`'`)return t.tokenize=M(n),t.tokenize(e,t);if(w.test(n)){if(e.backUp(1),e.match(T))return`number`;e.next()}if(C.test(n))return k=n,null;if(n==`/`){if(e.eat(`*`))return t.tokenize=ee,ee(e,t);if(e.eat(`/`))return e.skipToEnd(),`comment`}if(E.test(n)){for(;!e.match(/^\/[\/*]/,!1)&&e.eat(E););return`operator`}if(e.eatWhile(D),S)for(;e.match(S);)e.eatWhile(D);var i=e.current();return s(f,i)?(s(h,i)&&(k=`newstatement`),s(g,i)&&(A=!0),`keyword`):s(p,i)?`type`:s(m,i)||O&&O(i)?(s(h,i)&&(k=`newstatement`),`builtin`):s(_,i)?`atom`:`variable`}function M(e){return function(t,n){for(var r=!1,i,a=!1;(i=t.next())!=null;){if(i==e&&!r){a=!0;break}r=!r&&i==`\\`}return(a||!(r||y))&&(n.tokenize=null),`string`}}function ee(e,t){for(var n=!1,r;r=e.next();){if(r==`/`&&n){t.tokenize=null;break}n=r==`*`}return`comment`}function te(e,t){c.typeFirstDefinitions&&e.eol()&&a(t.context)&&(t.typeAtEndOfLine=i(e,t,e.pos))}return{startState:function(e){return{tokenize:null,context:new t((e||0)-l,0,`top`,null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(e,t){var o=t.context;if(e.sol()&&(o.align??=!1,t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return te(e,t),null;k=A=null;var s=(t.tokenize||j)(e,t);if(s==`comment`||s==`meta`)return s;if(o.align??=!0,k==`;`||k==`:`||k==`,`&&e.match(/^\s*(?:\/\/.*)?$/,!1))for(;t.context.type==`statement`;)r(t);else if(k==`{`)n(t,e.column(),`}`);else if(k==`[`)n(t,e.column(),`]`);else if(k==`(`)n(t,e.column(),`)`);else if(k==`}`){for(;o.type==`statement`;)o=r(t);for(o.type==`}`&&(o=r(t));o.type==`statement`;)o=r(t)}else k==o.type?r(t):b&&((o.type==`}`||o.type==`top`)&&k!=`;`||o.type==`statement`&&k==`newstatement`)&&n(t,e.column(),`statement`,e.current());if(s==`variable`&&(t.prevToken==`def`||c.typeFirstDefinitions&&i(e,t,e.start)&&a(t.context)&&e.match(/^\s*\(/,!1))&&(s=`def`),v.token){var l=v.token(e,t,s);l!==void 0&&(s=l)}return s==`def`&&c.styleDefs===!1&&(s=`variable`),t.startOfLine=!1,t.prevToken=A?`def`:s||k,te(e,t),s},indent:function(t,n){if(t.tokenize!=j&&t.tokenize!=null||t.typeAtEndOfLine&&a(t.context))return e.Pass;var r=t.context,i=n&&n.charAt(0),o=i==r.type;if(r.type==`statement`&&i==`}`&&(r=r.prev),c.dontIndentStatements)for(;r.type==`statement`&&c.dontIndentStatements.test(r.info);)r=r.prev;if(v.indent){var s=v.indent(t,r,n,l);if(typeof s==`number`)return s}var f=r.prev&&r.prev.info==`switch`;if(c.allmanIndentation&&/[{(]/.test(i)){for(;r.type!=`top`&&r.type!=`}`;)r=r.prev;return r.indented}return r.type==`statement`?r.indented+(i==`{`?0:u):r.align&&(!d||r.type!=`)`)?r.column+ +!o:r.type==`)`&&!o?r.indented+u:r.indented+(o?0:l)+(!o&&f&&!/^(?:case|default)\b/.test(n)?l:0)},electricInput:x?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:`/*`,blockCommentEnd:`*/`,blockCommentContinue:` * `,lineComment:`//`,fold:`brace`}});function o(e){for(var t={},n=e.split(` `),r=0;r!?|\/#:@]/,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),`meta`},'"':function(e,t){return e.match(`""`)?(t.tokenize=D,t.tokenize(e,t)):!1},"'":function(e){return e.match(/^(\\[^'\s]+|[^\\'])'/)?`string-2`:(e.eatWhile(/[\w\$_\xa1-\uffff]/),`atom`)},"=":function(e,n){var r=n.context;return r.type==`}`&&r.align&&e.eat(`>`)?(n.context=new t(r.indented,r.column,r.type,r.info,null,r.prev),`operator`):!1},"/":function(e,t){return e.eat(`*`)?(t.tokenize=O(1),t.tokenize(e,t)):!1}},modeProps:{closeBrackets:{pairs:`()[]{}""`,triples:`"`}}});function k(e){return function(t,n){for(var r=!1,i,a=!1;!t.eol();){if(!e&&!r&&t.match(`"`)){a=!0;break}if(e&&t.match(`"""`)){a=!0;break}i=t.next(),!r&&i==`$`&&t.match(`{`)&&t.skipTo(`}`),r=!r&&i==`\\`&&!e}return(a||!e)&&(n.tokenize=null),`string`}}E(`text/x-kotlin`,{name:`clike`,keywords:o(`package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam value`),types:o(`Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit`),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:o(`catch class do else finally for if where try while enum`),defKeywords:o(`class val var object interface fun`),atoms:o(`true false null this`),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),`meta`},"*":function(e,t){return t.prevToken==`.`?`variable`:`operator`},'"':function(e,t){return t.tokenize=k(e.match(`""`)),t.tokenize(e,t)},"/":function(e,t){return e.eat(`*`)?(t.tokenize=O(1),t.tokenize(e,t)):!1},indent:function(e,t,n,r){var i=n&&n.charAt(0);if((e.prevToken==`}`||e.prevToken==`)`)&&n==``)return e.indented;if(e.prevToken==`operator`&&n!=`}`&&e.context.type!=`}`||e.prevToken==`variable`&&i==`.`||(e.prevToken==`}`||e.prevToken==`)`)&&i==`.`)return r*2+t.indented;if(t.align&&t.type==`}`)return t.indented+(e.context.type==(n||``).charAt(0)?0:r)}},modeProps:{closeBrackets:{triples:`"`}}}),E([`x-shader/x-vertex`,`x-shader/x-fragment`],{name:`clike`,keywords:o(`sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout`),types:o(`float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4`),blockKeywords:o(`for while do if else struct`),builtin:o(`radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4`),atoms:o(`true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers`),indentSwitch:!1,hooks:{"#":v},modeProps:{fold:[`brace`,`include`]}}),E(`text/x-nesc`,{name:`clike`,keywords:o(c+` as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends`),types:m,blockKeywords:o(g),atoms:o(`null true false`),hooks:{"#":v},modeProps:{fold:[`brace`,`include`]}}),E(`text/x-objectivec`,{name:`clike`,keywords:o(c+` `+u),types:h,builtin:o(d),blockKeywords:o(g+` @synthesize @try @catch @finally @autoreleasepool @synchronized`),defKeywords:o(_+` @interface @implementation @protocol @class`),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:o(`YES NO NULL Nil nil true false nullptr`),isReservedIdentifier:b,hooks:{"#":v,"*":y},modeProps:{fold:[`brace`,`include`]}}),E(`text/x-objectivec++`,{name:`clike`,keywords:o(c+` `+u+` `+l),types:h,builtin:o(d),blockKeywords:o(g+` @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch`),defKeywords:o(_+` @interface @implementation @protocol @class class namespace`),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:o(`YES NO NULL Nil nil true false nullptr`),isReservedIdentifier:b,hooks:{"#":v,"*":y,u:S,U:S,L:S,R:S,0:x,1:x,2:x,3:x,4:x,5:x,6:x,7:x,8:x,9:x,token:function(e,t,n){if(n==`variable`&&e.peek()==`(`&&(t.prevToken==`;`||t.prevToken==null||t.prevToken==`}`)&&C(e.current()))return`def`}},namespaceSeparator:`::`,modeProps:{fold:[`brace`,`include`]}}),E(`text/x-squirrel`,{name:`clike`,keywords:o(`base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static`),types:m,blockKeywords:o(`case catch class else for foreach if switch try while`),defKeywords:o(`function local class`),typeFirstDefinitions:!0,atoms:o(`true false null`),hooks:{"#":v},modeProps:{fold:[`brace`,`include`]}});var A=null;function j(e){return function(t,n){for(var r=!1,i,a=!1;!t.eol();){if(!r&&t.match(`"`)&&(e==`single`||t.match(`""`))){a=!0;break}if(!r&&t.match("``")){A=j(e),a=!0;break}i=t.next(),r=e==`single`&&!r&&i==`\\`}return a&&(n.tokenize=null),`string`}}E(`text/x-ceylon`,{name:`clike`,keywords:o(`abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while`),types:function(e){var t=e.charAt(0);return t===t.toUpperCase()&&t!==t.toLowerCase()},blockKeywords:o(`case catch class dynamic else finally for function if interface module new object switch try while`),defKeywords:o(`class dynamic function interface module object package value`),builtin:o(`abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable`),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:o(`true false null larger smaller equal empty finished`),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),`meta`},'"':function(e,t){return t.tokenize=j(e.match(`""`)?`triple`:`single`),t.tokenize(e,t)},"`":function(e,t){return!A||!e.match("`")?!1:(t.tokenize=A,A=null,t.tokenize(e,t))},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),`atom`},token:function(e,t,n){if((n==`variable`||n==`type`)&&t.prevToken==`.`)return`variable-2`}},modeProps:{fold:[`brace`,`import`],closeBrackets:{triples:`"`}}})})})),u=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../lib/codemirror`],r):r(CodeMirror)})(function(e){e.modeInfo=[{name:`APL`,mime:`text/apl`,mode:`apl`,ext:[`dyalog`,`apl`]},{name:`PGP`,mimes:[`application/pgp`,`application/pgp-encrypted`,`application/pgp-keys`,`application/pgp-signature`],mode:`asciiarmor`,ext:[`asc`,`pgp`,`sig`]},{name:`ASN.1`,mime:`text/x-ttcn-asn`,mode:`asn.1`,ext:[`asn`,`asn1`]},{name:`Asterisk`,mime:`text/x-asterisk`,mode:`asterisk`,file:/^extensions\.conf$/i},{name:`Brainfuck`,mime:`text/x-brainfuck`,mode:`brainfuck`,ext:[`b`,`bf`]},{name:`C`,mime:`text/x-csrc`,mode:`clike`,ext:[`c`,`h`,`ino`]},{name:`C++`,mime:`text/x-c++src`,mode:`clike`,ext:[`cpp`,`c++`,`cc`,`cxx`,`hpp`,`h++`,`hh`,`hxx`],alias:[`cpp`]},{name:`Cobol`,mime:`text/x-cobol`,mode:`cobol`,ext:[`cob`,`cpy`,`cbl`]},{name:`C#`,mime:`text/x-csharp`,mode:`clike`,ext:[`cs`],alias:[`csharp`,`cs`]},{name:`Clojure`,mime:`text/x-clojure`,mode:`clojure`,ext:[`clj`,`cljc`,`cljx`]},{name:`ClojureScript`,mime:`text/x-clojurescript`,mode:`clojure`,ext:[`cljs`]},{name:`Closure Stylesheets (GSS)`,mime:`text/x-gss`,mode:`css`,ext:[`gss`]},{name:`CMake`,mime:`text/x-cmake`,mode:`cmake`,ext:[`cmake`,`cmake.in`],file:/^CMakeLists\.txt$/},{name:`CoffeeScript`,mimes:[`application/vnd.coffeescript`,`text/coffeescript`,`text/x-coffeescript`],mode:`coffeescript`,ext:[`coffee`],alias:[`coffee`,`coffee-script`]},{name:`Common Lisp`,mime:`text/x-common-lisp`,mode:`commonlisp`,ext:[`cl`,`lisp`,`el`],alias:[`lisp`]},{name:`Cypher`,mime:`application/x-cypher-query`,mode:`cypher`,ext:[`cyp`,`cypher`]},{name:`Cython`,mime:`text/x-cython`,mode:`python`,ext:[`pyx`,`pxd`,`pxi`]},{name:`Crystal`,mime:`text/x-crystal`,mode:`crystal`,ext:[`cr`]},{name:`CSS`,mime:`text/css`,mode:`css`,ext:[`css`]},{name:`CQL`,mime:`text/x-cassandra`,mode:`sql`,ext:[`cql`]},{name:`D`,mime:`text/x-d`,mode:`d`,ext:[`d`]},{name:`Dart`,mimes:[`application/dart`,`text/x-dart`],mode:`dart`,ext:[`dart`]},{name:`diff`,mime:`text/x-diff`,mode:`diff`,ext:[`diff`,`patch`]},{name:`Django`,mime:`text/x-django`,mode:`django`},{name:`Dockerfile`,mime:`text/x-dockerfile`,mode:`dockerfile`,file:/^Dockerfile$/},{name:`DTD`,mime:`application/xml-dtd`,mode:`dtd`,ext:[`dtd`]},{name:`Dylan`,mime:`text/x-dylan`,mode:`dylan`,ext:[`dylan`,`dyl`,`intr`]},{name:`EBNF`,mime:`text/x-ebnf`,mode:`ebnf`},{name:`ECL`,mime:`text/x-ecl`,mode:`ecl`,ext:[`ecl`]},{name:`edn`,mime:`application/edn`,mode:`clojure`,ext:[`edn`]},{name:`Eiffel`,mime:`text/x-eiffel`,mode:`eiffel`,ext:[`e`]},{name:`Elm`,mime:`text/x-elm`,mode:`elm`,ext:[`elm`]},{name:`Embedded JavaScript`,mime:`application/x-ejs`,mode:`htmlembedded`,ext:[`ejs`]},{name:`Embedded Ruby`,mime:`application/x-erb`,mode:`htmlembedded`,ext:[`erb`]},{name:`Erlang`,mime:`text/x-erlang`,mode:`erlang`,ext:[`erl`]},{name:`Esper`,mime:`text/x-esper`,mode:`sql`},{name:`Factor`,mime:`text/x-factor`,mode:`factor`,ext:[`factor`]},{name:`FCL`,mime:`text/x-fcl`,mode:`fcl`},{name:`Forth`,mime:`text/x-forth`,mode:`forth`,ext:[`forth`,`fth`,`4th`]},{name:`Fortran`,mime:`text/x-fortran`,mode:`fortran`,ext:[`f`,`for`,`f77`,`f90`,`f95`]},{name:`F#`,mime:`text/x-fsharp`,mode:`mllike`,ext:[`fs`],alias:[`fsharp`]},{name:`Gas`,mime:`text/x-gas`,mode:`gas`,ext:[`s`]},{name:`Gherkin`,mime:`text/x-feature`,mode:`gherkin`,ext:[`feature`]},{name:`GitHub Flavored Markdown`,mime:`text/x-gfm`,mode:`gfm`,file:/^(readme|contributing|history)\.md$/i},{name:`Go`,mime:`text/x-go`,mode:`go`,ext:[`go`]},{name:`Groovy`,mime:`text/x-groovy`,mode:`groovy`,ext:[`groovy`,`gradle`],file:/^Jenkinsfile$/},{name:`HAML`,mime:`text/x-haml`,mode:`haml`,ext:[`haml`]},{name:`Haskell`,mime:`text/x-haskell`,mode:`haskell`,ext:[`hs`]},{name:`Haskell (Literate)`,mime:`text/x-literate-haskell`,mode:`haskell-literate`,ext:[`lhs`]},{name:`Haxe`,mime:`text/x-haxe`,mode:`haxe`,ext:[`hx`]},{name:`HXML`,mime:`text/x-hxml`,mode:`haxe`,ext:[`hxml`]},{name:`ASP.NET`,mime:`application/x-aspx`,mode:`htmlembedded`,ext:[`aspx`],alias:[`asp`,`aspx`]},{name:`HTML`,mime:`text/html`,mode:`htmlmixed`,ext:[`html`,`htm`,`handlebars`,`hbs`],alias:[`xhtml`]},{name:`HTTP`,mime:`message/http`,mode:`http`},{name:`IDL`,mime:`text/x-idl`,mode:`idl`,ext:[`pro`]},{name:`Pug`,mime:`text/x-pug`,mode:`pug`,ext:[`jade`,`pug`],alias:[`jade`]},{name:`Java`,mime:`text/x-java`,mode:`clike`,ext:[`java`]},{name:`Java Server Pages`,mime:`application/x-jsp`,mode:`htmlembedded`,ext:[`jsp`],alias:[`jsp`]},{name:`JavaScript`,mimes:[`text/javascript`,`text/ecmascript`,`application/javascript`,`application/x-javascript`,`application/ecmascript`],mode:`javascript`,ext:[`js`],alias:[`ecmascript`,`js`,`node`]},{name:`JSON`,mimes:[`application/json`,`application/x-json`],mode:`javascript`,ext:[`json`,`map`],alias:[`json5`]},{name:`JSON-LD`,mime:`application/ld+json`,mode:`javascript`,ext:[`jsonld`],alias:[`jsonld`]},{name:`JSX`,mime:`text/jsx`,mode:`jsx`,ext:[`jsx`]},{name:`Jinja2`,mime:`text/jinja2`,mode:`jinja2`,ext:[`j2`,`jinja`,`jinja2`]},{name:`Julia`,mime:`text/x-julia`,mode:`julia`,ext:[`jl`],alias:[`jl`]},{name:`Kotlin`,mime:`text/x-kotlin`,mode:`clike`,ext:[`kt`]},{name:`LESS`,mime:`text/x-less`,mode:`css`,ext:[`less`]},{name:`LiveScript`,mime:`text/x-livescript`,mode:`livescript`,ext:[`ls`],alias:[`ls`]},{name:`Lua`,mime:`text/x-lua`,mode:`lua`,ext:[`lua`]},{name:`Markdown`,mime:`text/x-markdown`,mode:`markdown`,ext:[`markdown`,`md`,`mkd`]},{name:`mIRC`,mime:`text/mirc`,mode:`mirc`},{name:`MariaDB SQL`,mime:`text/x-mariadb`,mode:`sql`},{name:`Mathematica`,mime:`text/x-mathematica`,mode:`mathematica`,ext:[`m`,`nb`,`wl`,`wls`]},{name:`Modelica`,mime:`text/x-modelica`,mode:`modelica`,ext:[`mo`]},{name:`MUMPS`,mime:`text/x-mumps`,mode:`mumps`,ext:[`mps`]},{name:`MS SQL`,mime:`text/x-mssql`,mode:`sql`},{name:`mbox`,mime:`application/mbox`,mode:`mbox`,ext:[`mbox`]},{name:`MySQL`,mime:`text/x-mysql`,mode:`sql`},{name:`Nginx`,mime:`text/x-nginx-conf`,mode:`nginx`,file:/nginx.*\.conf$/i},{name:`NSIS`,mime:`text/x-nsis`,mode:`nsis`,ext:[`nsh`,`nsi`]},{name:`NTriples`,mimes:[`application/n-triples`,`application/n-quads`,`text/n-triples`],mode:`ntriples`,ext:[`nt`,`nq`]},{name:`Objective-C`,mime:`text/x-objectivec`,mode:`clike`,ext:[`m`],alias:[`objective-c`,`objc`]},{name:`Objective-C++`,mime:`text/x-objectivec++`,mode:`clike`,ext:[`mm`],alias:[`objective-c++`,`objc++`]},{name:`OCaml`,mime:`text/x-ocaml`,mode:`mllike`,ext:[`ml`,`mli`,`mll`,`mly`]},{name:`Octave`,mime:`text/x-octave`,mode:`octave`,ext:[`m`]},{name:`Oz`,mime:`text/x-oz`,mode:`oz`,ext:[`oz`]},{name:`Pascal`,mime:`text/x-pascal`,mode:`pascal`,ext:[`p`,`pas`]},{name:`PEG.js`,mime:`null`,mode:`pegjs`,ext:[`jsonld`]},{name:`Perl`,mime:`text/x-perl`,mode:`perl`,ext:[`pl`,`pm`]},{name:`PHP`,mimes:[`text/x-php`,`application/x-httpd-php`,`application/x-httpd-php-open`],mode:`php`,ext:[`php`,`php3`,`php4`,`php5`,`php7`,`phtml`]},{name:`Pig`,mime:`text/x-pig`,mode:`pig`,ext:[`pig`]},{name:`Plain Text`,mime:`text/plain`,mode:`null`,ext:[`txt`,`text`,`conf`,`def`,`list`,`log`]},{name:`PLSQL`,mime:`text/x-plsql`,mode:`sql`,ext:[`pls`]},{name:`PostgreSQL`,mime:`text/x-pgsql`,mode:`sql`},{name:`PowerShell`,mime:`application/x-powershell`,mode:`powershell`,ext:[`ps1`,`psd1`,`psm1`]},{name:`Properties files`,mime:`text/x-properties`,mode:`properties`,ext:[`properties`,`ini`,`in`],alias:[`ini`,`properties`]},{name:`ProtoBuf`,mime:`text/x-protobuf`,mode:`protobuf`,ext:[`proto`]},{name:`Python`,mime:`text/x-python`,mode:`python`,ext:[`BUILD`,`bzl`,`py`,`pyw`],file:/^(BUCK|BUILD)$/},{name:`Puppet`,mime:`text/x-puppet`,mode:`puppet`,ext:[`pp`]},{name:`Q`,mime:`text/x-q`,mode:`q`,ext:[`q`]},{name:`R`,mime:`text/x-rsrc`,mode:`r`,ext:[`r`,`R`],alias:[`rscript`]},{name:`reStructuredText`,mime:`text/x-rst`,mode:`rst`,ext:[`rst`],alias:[`rst`]},{name:`RPM Changes`,mime:`text/x-rpm-changes`,mode:`rpm`},{name:`RPM Spec`,mime:`text/x-rpm-spec`,mode:`rpm`,ext:[`spec`]},{name:`Ruby`,mime:`text/x-ruby`,mode:`ruby`,ext:[`rb`],alias:[`jruby`,`macruby`,`rake`,`rb`,`rbx`]},{name:`Rust`,mime:`text/x-rustsrc`,mode:`rust`,ext:[`rs`]},{name:`SAS`,mime:`text/x-sas`,mode:`sas`,ext:[`sas`]},{name:`Sass`,mime:`text/x-sass`,mode:`sass`,ext:[`sass`]},{name:`Scala`,mime:`text/x-scala`,mode:`clike`,ext:[`scala`]},{name:`Scheme`,mime:`text/x-scheme`,mode:`scheme`,ext:[`scm`,`ss`]},{name:`SCSS`,mime:`text/x-scss`,mode:`css`,ext:[`scss`]},{name:`Shell`,mimes:[`text/x-sh`,`application/x-sh`],mode:`shell`,ext:[`sh`,`ksh`,`bash`],alias:[`bash`,`sh`,`zsh`],file:/^PKGBUILD$/},{name:`Sieve`,mime:`application/sieve`,mode:`sieve`,ext:[`siv`,`sieve`]},{name:`Slim`,mimes:[`text/x-slim`,`application/x-slim`],mode:`slim`,ext:[`slim`]},{name:`Smalltalk`,mime:`text/x-stsrc`,mode:`smalltalk`,ext:[`st`]},{name:`Smarty`,mime:`text/x-smarty`,mode:`smarty`,ext:[`tpl`]},{name:`Solr`,mime:`text/x-solr`,mode:`solr`},{name:`SML`,mime:`text/x-sml`,mode:`mllike`,ext:[`sml`,`sig`,`fun`,`smackspec`]},{name:`Soy`,mime:`text/x-soy`,mode:`soy`,ext:[`soy`],alias:[`closure template`]},{name:`SPARQL`,mime:`application/sparql-query`,mode:`sparql`,ext:[`rq`,`sparql`],alias:[`sparul`]},{name:`Spreadsheet`,mime:`text/x-spreadsheet`,mode:`spreadsheet`,alias:[`excel`,`formula`]},{name:`SQL`,mime:`text/x-sql`,mode:`sql`,ext:[`sql`]},{name:`SQLite`,mime:`text/x-sqlite`,mode:`sql`},{name:`Squirrel`,mime:`text/x-squirrel`,mode:`clike`,ext:[`nut`]},{name:`Stylus`,mime:`text/x-styl`,mode:`stylus`,ext:[`styl`]},{name:`Swift`,mime:`text/x-swift`,mode:`swift`,ext:[`swift`]},{name:`sTeX`,mime:`text/x-stex`,mode:`stex`},{name:`LaTeX`,mime:`text/x-latex`,mode:`stex`,ext:[`text`,`ltx`,`tex`],alias:[`tex`]},{name:`SystemVerilog`,mime:`text/x-systemverilog`,mode:`verilog`,ext:[`v`,`sv`,`svh`]},{name:`Tcl`,mime:`text/x-tcl`,mode:`tcl`,ext:[`tcl`]},{name:`Textile`,mime:`text/x-textile`,mode:`textile`,ext:[`textile`]},{name:`TiddlyWiki`,mime:`text/x-tiddlywiki`,mode:`tiddlywiki`},{name:`Tiki wiki`,mime:`text/tiki`,mode:`tiki`},{name:`TOML`,mime:`text/x-toml`,mode:`toml`,ext:[`toml`]},{name:`Tornado`,mime:`text/x-tornado`,mode:`tornado`},{name:`troff`,mime:`text/troff`,mode:`troff`,ext:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`]},{name:`TTCN`,mime:`text/x-ttcn`,mode:`ttcn`,ext:[`ttcn`,`ttcn3`,`ttcnpp`]},{name:`TTCN_CFG`,mime:`text/x-ttcn-cfg`,mode:`ttcn-cfg`,ext:[`cfg`]},{name:`Turtle`,mime:`text/turtle`,mode:`turtle`,ext:[`ttl`]},{name:`TypeScript`,mime:`application/typescript`,mode:`javascript`,ext:[`ts`],alias:[`ts`]},{name:`TypeScript-JSX`,mime:`text/typescript-jsx`,mode:`jsx`,ext:[`tsx`],alias:[`tsx`]},{name:`Twig`,mime:`text/x-twig`,mode:`twig`},{name:`Web IDL`,mime:`text/x-webidl`,mode:`webidl`,ext:[`webidl`]},{name:`VB.NET`,mime:`text/x-vb`,mode:`vb`,ext:[`vb`]},{name:`VBScript`,mime:`text/vbscript`,mode:`vbscript`,ext:[`vbs`]},{name:`Velocity`,mime:`text/velocity`,mode:`velocity`,ext:[`vtl`]},{name:`Verilog`,mime:`text/x-verilog`,mode:`verilog`,ext:[`v`]},{name:`VHDL`,mime:`text/x-vhdl`,mode:`vhdl`,ext:[`vhd`,`vhdl`]},{name:`Vue.js Component`,mimes:[`script/x-vue`,`text/x-vue`],mode:`vue`,ext:[`vue`]},{name:`XML`,mimes:[`application/xml`,`text/xml`],mode:`xml`,ext:[`xml`,`xsl`,`xsd`,`svg`],alias:[`rss`,`wsdl`,`xsd`]},{name:`XQuery`,mime:`application/xquery`,mode:`xquery`,ext:[`xy`,`xquery`]},{name:`Yacas`,mime:`text/x-yacas`,mode:`yacas`,ext:[`ys`]},{name:`YAML`,mimes:[`text/x-yaml`,`text/yaml`],mode:`yaml`,ext:[`yaml`,`yml`],alias:[`yml`]},{name:`Z80`,mime:`text/x-z80`,mode:`z80`,ext:[`z80`]},{name:`mscgen`,mime:`text/x-mscgen`,mode:`mscgen`,ext:[`mscgen`,`mscin`,`msc`]},{name:`xu`,mime:`text/x-xu`,mode:`mscgen`,ext:[`xu`]},{name:`msgenny`,mime:`text/x-msgenny`,mode:`mscgen`,ext:[`msgenny`]},{name:`WebAssembly`,mime:`text/webassembly`,mode:`wast`,ext:[`wat`,`wast`]}];for(var t=0;t-1&&t.substring(i+1,t.length);if(a)return e.findModeByExtension(a)},e.findModeByName=function(t){t=t.toLowerCase();for(var n=0;n{(function(r){typeof e==`object`&&typeof t==`object`?r(n(),a(),u()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`,`../xml/xml`,`../meta`],r):r(CodeMirror)})(function(e){e.defineMode(`markdown`,function(t,n){var r=e.getMode(t,`text/html`),i=r.name==`null`;function a(n){if(e.findModeByName){var r=e.findModeByName(n);r&&(n=r.mime||r.mimes[0])}var i=e.getMode(t,n);return i.name==`null`?null:i}n.highlightFormatting===void 0&&(n.highlightFormatting=!1),n.maxBlockquoteDepth===void 0&&(n.maxBlockquoteDepth=0),n.taskLists===void 0&&(n.taskLists=!1),n.strikethrough===void 0&&(n.strikethrough=!1),n.emoji===void 0&&(n.emoji=!1),n.fencedCodeBlockHighlighting===void 0&&(n.fencedCodeBlockHighlighting=!0),n.fencedCodeBlockDefaultMode===void 0&&(n.fencedCodeBlockDefaultMode=`text/plain`),n.xml===void 0&&(n.xml=!0),n.tokenTypeOverrides===void 0&&(n.tokenTypeOverrides={});var o={header:`header`,code:`comment`,quote:`quote`,list1:`variable-2`,list2:`variable-3`,list3:`keyword`,hr:`hr`,image:`image`,imageAltText:`image-alt-text`,imageMarker:`image-marker`,formatting:`formatting`,linkInline:`link`,linkEmail:`link`,linkText:`link`,linkHref:`string`,em:`em`,strong:`strong`,strikethrough:`strikethrough`,emoji:`builtin`};for(var s in o)o.hasOwnProperty(s)&&n.tokenTypeOverrides[s]&&(o[s]=n.tokenTypeOverrides[s]);var c=/^([*\-_])(?:\s*\1){2,}\s*$/,l=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,u=/^\[(x| )\](?=\s)/i,d=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,f=/^ {0,3}(?:\={1,}|-{2,})\s*$/,p=/^[^#!\[\]*_\\<>` "'(~:]+/,m=/^(~~~+|```+)[ \t]*([\w\/+#-]*)[^\n`]*$/,h=/^\s*\[[^\]]+?\]:.*$/,g=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/,_=` `;function v(e,t,n){return t.f=t.inline=n,n(e,t)}function y(e,t,n){return t.f=t.block=n,n(e,t)}function b(e){return!e||!/\S/.test(e.string)}function x(t){if(t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==C){var n=i;if(!n){var a=e.innerMode(r,t.htmlState);n=a.mode.name==`xml`&&a.state.tagStart===null&&!a.state.context&&a.state.tokenize.isInText}n&&(t.f=D,t.block=S,t.htmlState=null)}return t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function S(t,r){var i=t.column()===r.indentation,s=b(r.prevLine.stream),p=r.indentedCode,g=r.prevLine.hr,_=r.list!==!1,y=(r.listStack[r.listStack.length-1]||0)+3;r.indentedCode=!1;var x=r.indentation;if(r.indentationDiff===null&&(r.indentationDiff=r.indentation,_)){for(r.list=null;x=4&&(p||r.prevLine.fencedCodeEnd||r.prevLine.header||s))return t.skipToEnd(),r.indentedCode=!0,o.code;if(t.eatSpace())return null;if(i&&r.indentation<=y&&(E=t.match(d))&&E[1].length<=6)return r.quote=0,r.header=E[1].length,r.thisLine.header=!0,n.highlightFormatting&&(r.formatting=`header`),r.f=r.inline,T(r);if(r.indentation<=y&&t.eat(`>`))return r.quote=i?1:r.quote+1,n.highlightFormatting&&(r.formatting=`quote`),t.eatSpace(),T(r);if(!C&&!r.setext&&i&&r.indentation<=y&&(E=t.match(l))){var D=E[1]?`ol`:`ul`;return r.indentation=x+t.current().length,r.list=!0,r.quote=0,r.listStack.push(r.indentation),r.em=!1,r.strong=!1,r.code=!1,r.strikethrough=!1,n.taskLists&&t.match(u,!1)&&(r.taskList=!0),r.f=r.inline,n.highlightFormatting&&(r.formatting=[`list`,`list-`+D]),T(r)}else if(i&&r.indentation<=y&&(E=t.match(m,!0)))return r.quote=0,r.fencedEndRE=RegExp(E[1]+`+ *$`),r.localMode=n.fencedCodeBlockHighlighting&&a(E[2]||n.fencedCodeBlockDefaultMode),r.localMode&&(r.localState=e.startState(r.localMode)),r.f=r.block=w,n.highlightFormatting&&(r.formatting=`code-block`),r.code=-1,T(r);else if(r.setext||(!S||!_)&&!r.quote&&r.list===!1&&!r.code&&!C&&!h.test(t.string)&&(E=t.lookAhead(1))&&(E=E.match(f)))return r.setext?(r.header=r.setext,r.setext=0,t.skipToEnd(),n.highlightFormatting&&(r.formatting=`header`)):(r.header=E[0].charAt(0)==`=`?1:2,r.setext=r.header),r.thisLine.header=!0,r.f=r.inline,T(r);else if(C)return t.skipToEnd(),r.hr=!0,r.thisLine.hr=!0,o.hr;else if(t.peek()===`[`)return v(t,r,M);return v(t,r,r.inline)}function C(t,n){var a=r.token(t,n.htmlState);if(!i){var o=e.innerMode(r,n.htmlState);(o.mode.name==`xml`&&o.state.tagStart===null&&!o.state.context&&o.state.tokenize.isInText||n.md_inside&&t.current().indexOf(`>`)>-1)&&(n.f=D,n.block=S,n.htmlState=null)}return a}function w(e,t){var r=t.listStack[t.listStack.length-1]||0,i=t.indentation=e.quote?t.push(o.formatting+`-`+e.formatting[r]+`-`+e.quote):t.push(`error`))}if(e.taskOpen)return t.push(`meta`),t.length?t.join(` `):null;if(e.taskClosed)return t.push(`property`),t.length?t.join(` `):null;if(e.linkHref?t.push(o.linkHref,`url`):(e.strong&&t.push(o.strong),e.em&&t.push(o.em),e.strikethrough&&t.push(o.strikethrough),e.emoji&&t.push(o.emoji),e.linkText&&t.push(o.linkText),e.code&&t.push(o.code),e.image&&t.push(o.image),e.imageAltText&&t.push(o.imageAltText,`link`),e.imageMarker&&t.push(o.imageMarker)),e.header&&t.push(o.header,o.header+`-`+e.header),e.quote&&(t.push(o.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=e.quote?t.push(o.quote+`-`+e.quote):t.push(o.quote+`-`+n.maxBlockquoteDepth)),e.list!==!1){var i=(e.listStack.length-1)%3;i?i===1?t.push(o.list2):t.push(o.list3):t.push(o.list1)}return e.trailingSpaceNewLine?t.push(`trailing-space-new-line`):e.trailingSpace&&t.push(`trailing-space-`+(e.trailingSpace%2?`a`:`b`)),t.length?t.join(` `):null}function E(e,t){if(e.match(p,!0))return T(t)}function D(t,i){var a=i.text(t,i);if(a!==void 0)return a;if(i.list)return i.list=null,T(i);if(i.taskList)return t.match(u,!0)[1]===` `?i.taskOpen=!0:i.taskClosed=!0,n.highlightFormatting&&(i.formatting=`task`),i.taskList=!1,T(i);if(i.taskOpen=!1,i.taskClosed=!1,i.header&&t.match(/^#+$/,!0))return n.highlightFormatting&&(i.formatting=`header`),T(i);var s=t.next();if(i.linkTitle){i.linkTitle=!1;var c=s;s===`(`&&(c=`)`),c=(c+``).replace(/([.?*+^\[\]\\(){}|-])/g,`\\$1`);var l=`^\\s*(?:[^`+c+`\\\\]+|\\\\\\\\|\\\\.)`+c;if(t.match(new RegExp(l),!0))return o.linkHref}if(s==="`"){var d=i.formatting;n.highlightFormatting&&(i.formatting=`code`),t.eatWhile("`");var f=t.current().length;if(i.code==0&&(!i.quote||f==1))return i.code=f,T(i);if(f==i.code){var p=T(i);return i.code=0,p}else return i.formatting=d,T(i)}else if(i.code)return T(i);if(s===`\\`&&(t.next(),n.highlightFormatting)){var m=T(i),h=o.formatting+`-escape`;return m?m+` `+h:h}if(s===`!`&&t.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return i.imageMarker=!0,i.image=!0,n.highlightFormatting&&(i.formatting=`image`),T(i);if(s===`[`&&i.imageMarker&&t.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return i.imageMarker=!1,i.imageAltText=!0,n.highlightFormatting&&(i.formatting=`image`),T(i);if(s===`]`&&i.imageAltText){n.highlightFormatting&&(i.formatting=`image`);var m=T(i);return i.imageAltText=!1,i.image=!1,i.inline=i.f=k,m}if(s===`[`&&!i.image)return i.linkText&&t.match(/^.*?\]/)?T(i):(i.linkText=!0,n.highlightFormatting&&(i.formatting=`link`),T(i));if(s===`]`&&i.linkText){n.highlightFormatting&&(i.formatting=`link`);var m=T(i);return i.linkText=!1,i.inline=i.f=t.match(/\(.*?\)| ?\[.*?\]/,!1)?k:D,m}if(s===`<`&&t.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=O,n.highlightFormatting&&(i.formatting=`link`);var m=T(i);return m?m+=` `:m=``,m+o.linkInline}if(s===`<`&&t.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){i.f=i.inline=O,n.highlightFormatting&&(i.formatting=`link`);var m=T(i);return m?m+=` `:m=``,m+o.linkEmail}if(n.xml&&s===`<`&&t.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i,!1)){var _=t.string.indexOf(`>`,t.pos);if(_!=-1){var v=t.string.substring(t.start,_);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(v)&&(i.md_inside=!0)}return t.backUp(1),i.htmlState=e.startState(r),y(t,i,C)}if(n.xml&&s===`<`&&t.match(/^\/\w*?>/))return i.md_inside=!1,`tag`;if(s===`*`||s===`_`){for(var b=1,x=t.pos==1?` `:t.string.charAt(t.pos-2);b<3&&t.eat(s);)b++;var S=t.peek()||` `,w=!/\s/.test(S)&&(!g.test(S)||/\s/.test(x)||g.test(x)),E=!/\s/.test(x)&&(!g.test(x)||/\s/.test(S)||g.test(S)),A=null,j=null;if(b%2&&(!i.em&&w&&(s===`*`||!E||g.test(x))?A=!0:i.em==s&&E&&(s===`*`||!w||g.test(S))&&(A=!1)),b>1&&(!i.strong&&w&&(s===`*`||!E||g.test(x))?j=!0:i.strong==s&&E&&(s===`*`||!w||g.test(S))&&(j=!1)),j!=null||A!=null){n.highlightFormatting&&(i.formatting=A==null?`strong`:j==null?`em`:`strong em`),A===!0&&(i.em=s),j===!0&&(i.strong=s);var p=T(i);return A===!1&&(i.em=!1),j===!1&&(i.strong=!1),p}}else if(s===` `&&(t.eat(`*`)||t.eat(`_`))){if(t.peek()===` `)return T(i);t.backUp(1)}if(n.strikethrough){if(s===`~`&&t.eatWhile(s)){if(i.strikethrough){n.highlightFormatting&&(i.formatting=`strikethrough`);var p=T(i);return i.strikethrough=!1,p}else if(t.match(/^[^\s]/,!1))return i.strikethrough=!0,n.highlightFormatting&&(i.formatting=`strikethrough`),T(i)}else if(s===` `&&t.match(`~~`,!0)){if(t.peek()===` `)return T(i);t.backUp(2)}}if(n.emoji&&s===`:`&&t.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)){i.emoji=!0,n.highlightFormatting&&(i.formatting=`emoji`);var M=T(i);return i.emoji=!1,M}return s===` `&&(t.match(/^ +$/,!1)?i.trailingSpace++:i.trailingSpace&&(i.trailingSpaceNewLine=!0)),T(i)}function O(e,t){if(e.next()===`>`){t.f=t.inline=D,n.highlightFormatting&&(t.formatting=`link`);var r=T(t);return r?r+=` `:r=``,r+o.linkInline}return e.match(/^[^>]+/,!0),o.linkInline}function k(e,t){if(e.eatSpace())return null;var r=e.next();return r===`(`||r===`[`?(t.f=t.inline=j(r===`(`?`)`:`]`),n.highlightFormatting&&(t.formatting=`link-string`),t.linkHref=!0,T(t)):`error`}var A={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/};function j(e){return function(t,r){if(t.next()===e){r.f=r.inline=D,n.highlightFormatting&&(r.formatting=`link-string`);var i=T(r);return r.linkHref=!1,i}return t.match(A[e]),r.linkHref=!0,T(r)}}function M(e,t){return e.match(/^([^\]\\]|\\.)*\]:/,!1)?(t.f=ee,e.next(),n.highlightFormatting&&(t.formatting=`link`),t.linkText=!0,T(t)):v(e,t,D)}function ee(e,t){if(e.match(`]:`,!0)){t.f=t.inline=te,n.highlightFormatting&&(t.formatting=`link`);var r=T(t);return t.linkText=!1,r}return e.match(/^([^\]\\]|\\.)+/,!0),o.linkText}function te(e,t){return e.eatSpace()?null:(e.match(/^[^\s]+/,!0),e.peek()===void 0?t.linkTitle=!0:e.match(/^(?:\s+(?:"(?:[^"\\]|\\.)+"|'(?:[^'\\]|\\.)+'|\((?:[^)\\]|\\.)+\)))?/,!0),t.f=t.inline=D,o.linkHref+` url`)}var N={startState:function(){return{f:S,prevLine:{stream:null},thisLine:{stream:null},block:S,htmlState:null,indentation:0,inline:D,text:E,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(t){return{f:t.f,prevLine:t.prevLine,thisLine:t.thisLine,block:t.block,htmlState:t.htmlState&&e.copyState(r,t.htmlState),indentation:t.indentation,localMode:t.localMode,localState:t.localMode?e.copyState(t.localMode,t.localState):null,inline:t.inline,text:t.text,formatting:!1,linkText:t.linkText,linkTitle:t.linkTitle,linkHref:t.linkHref,code:t.code,em:t.em,strong:t.strong,strikethrough:t.strikethrough,emoji:t.emoji,header:t.header,setext:t.setext,hr:t.hr,taskList:t.taskList,list:t.list,listStack:t.listStack.slice(0),quote:t.quote,indentedCode:t.indentedCode,trailingSpace:t.trailingSpace,trailingSpaceNewLine:t.trailingSpaceNewLine,md_inside:t.md_inside,fencedEndRE:t.fencedEndRE}},token:function(e,t){if(t.formatting=!1,e!=t.thisLine.stream){if(t.header=0,t.hr=!1,e.match(/^\s*$/,!0))return x(t),null;if(t.prevLine=t.thisLine,t.thisLine={stream:e},t.taskList=!1,t.trailingSpace=0,t.trailingSpaceNewLine=!1,!t.localState&&(t.f=t.block,t.f!=C)){var n=e.match(/^\s*/,!0)[0].replace(/\t/g,_).length;if(t.indentation=n,t.indentationDiff=null,n>0)return null}}return t.f(e,t)},innerMode:function(e){return e.block==C?{state:e.htmlState,mode:r}:e.localState?{state:e.localState,mode:e.localMode}:{state:e,mode:N}},indent:function(t,n,i){return t.block==C&&r.indent?r.indent(t.htmlState,n,i):t.localState&&t.localMode.indent?t.localMode.indent(t.localState,n,i):e.Pass},blankLine:x,getType:T,blockCommentStart:``,closeBrackets:`()[]{}''""\`\``,fold:`markdown`};return N},`xml`),e.defineMIME(`text/markdown`,`markdown`),e.defineMIME(`text/x-markdown`,`markdown`)})})),f=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){e.defineOption(`placeholder`,``,function(n,o,s){var c=s&&s!=e.Init;if(o&&!c)n.on(`blur`,i),n.on(`change`,a),n.on(`swapDoc`,a),e.on(n.getInputField(),`compositionupdate`,n.state.placeholderCompose=function(){r(n)}),a(n);else if(!o&&c){n.off(`blur`,i),n.off(`change`,a),n.off(`swapDoc`,a),e.off(n.getInputField(),`compositionupdate`,n.state.placeholderCompose),t(n);var l=n.getWrapperElement();l.className=l.className.replace(` CodeMirror-empty`,``)}o&&!n.hasFocus()&&i(n)});function t(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function n(e){t(e);var n=e.state.placeholder=document.createElement(`pre`);n.style.cssText=`height: 0; overflow: visible`,n.style.direction=e.getOption(`direction`),n.className=`CodeMirror-placeholder CodeMirror-line-like`;var r=e.getOption(`placeholder`);typeof r==`string`&&(r=document.createTextNode(r)),n.appendChild(r),e.display.lineSpace.insertBefore(n,e.display.lineSpace.firstChild)}function r(e){setTimeout(function(){var r=!1;if(e.lineCount()==1){var i=e.getInputField();r=i.nodeName==`TEXTAREA`?!e.getLine(0).length:!/[^\u200b]/.test(i.querySelector(`.CodeMirror-line`).textContent)}r?n(e):t(e)},20)}function i(e){o(e)&&n(e)}function a(e){var r=e.getWrapperElement(),i=o(e);r.className=r.className.replace(` CodeMirror-empty`,``)+(i?` CodeMirror-empty`:``),i?n(e):t(e)}function o(e){return e.lineCount()===1&&e.getLine(0)===``}})})),p=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){e.defineSimpleMode=function(t,n){e.defineMode(t,function(t){return e.simpleMode(t,n)})},e.simpleMode=function(n,r){t(r,`start`);var o={},s=r.meta||{},c=!1;for(var u in r)if(u!=s&&r.hasOwnProperty(u))for(var d=o[u]=[],f=r[u],p=0;p2&&u.token&&typeof u.token!=`string`){for(var p=2;p-1)return e.Pass;var o=r.indent.length-1,s=t[r.state];scan:for(;;){for(var l=0;l{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),n=e.Pos,r={"(":`)>`,")":`(<`,"[":`]>`,"]":`[<`,"{":`}>`,"}":`{<`,"<":`>>`,">":`<<`};function i(e){return e&&e.bracketRegex||/[(){}[\]]/}function a(e,t,a){var s=e.getLineHandle(t.line),c=t.ch-1,l=a&&a.afterCursor;l??=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className);var u=i(a),d=!l&&c>=0&&u.test(s.text.charAt(c))&&r[s.text.charAt(c)]||u.test(s.text.charAt(c+1))&&r[s.text.charAt(++c)];if(!d)return null;var f=d.charAt(1)==`>`?1:-1;if(a&&a.strict&&f>0!=(c==t.ch))return null;var p=e.getTokenTypeAt(n(t.line,c+1)),m=o(e,n(t.line,c+ +(f>0)),f,p,a);return m==null?null:{from:n(t.line,c),to:m&&m.pos,match:m&&m.ch==d.charAt(0),forward:f>0}}function o(e,t,a,o,s){for(var c=s&&s.maxScanLineLength||1e4,l=s&&s.maxScanLines||1e3,u=[],d=i(s),f=a>0?Math.min(t.line+l,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-l),p=t.line;p!=f;p+=a){var m=e.getLine(p);if(m){var h=a>0?0:m.length-1,g=a>0?m.length:-1;if(!(m.length>c))for(p==t.line&&(h=t.ch-+(a<0));h!=g;h+=a){var _=m.charAt(h);if(d.test(_)&&(o===void 0||(e.getTokenTypeAt(n(p,h+1))||``)==(o||``))){var v=r[_];if(v&&v.charAt(1)==`>`==a>0)u.push(_);else if(u.length)u.pop();else return{pos:n(p,h),ch:_}}}}}return p-a==(a>0?e.lastLine():e.firstLine())?!1:null}function s(e,r,i){for(var o=e.state.matchBrackets.maxHighlightLineLength||1e3,s=i&&i.highlightNonMatching,c=[],l=e.listSelections(),u=0;u{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){var t={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:``,explode:`[]{}`},n=e.Pos;e.defineOption(`autoCloseBrackets`,!1,function(t,n,o){o&&o!=e.Init&&(t.removeKeyMap(i),t.state.closeBrackets=null),n&&(a(r(n,`pairs`)),t.state.closeBrackets=n,t.addKeyMap(i))});function r(e,n){return n==`pairs`&&typeof e==`string`?e:typeof e==`object`&&e[n]!=null?e[n]:t[n]}var i={Backspace:c,Enter:l};function a(e){for(var t=0;t=0;c--){var u=o[c].head;t.replaceRange(``,n(u.line,u.ch-1),n(u.line,u.ch+1),`+delete`)}}function l(t){var n=s(t),i=n&&r(n,`explode`);if(!i||t.getOption(`disableInput`))return e.Pass;for(var a=t.listSelections(),o=0;o0?{line:o.head.line,ch:o.head.ch+t}:{line:o.head.line-1};n.push({anchor:s,head:s})}e.setSelections(n,i)}function d(t){var r=e.cmpPos(t.anchor,t.head)>0;return{anchor:new n(t.anchor.line,t.anchor.ch+(r?-1:1)),head:new n(t.head.line,t.head.ch+(r?1:-1))}}function f(t,i){var a=s(t);if(!a||t.getOption(`disableInput`))return e.Pass;var o=r(a,`pairs`),c=o.indexOf(i);if(c==-1)return e.Pass;for(var l=r(a,`closeBefore`),f=r(a,`triples`),p=o.charAt(c+1)==i,h=t.listSelections(),g=c%2==0,_,v=0;v=0&&t.getRange(b,n(b.line,b.ch+3))==i+i+i?`skipThree`:`skip`;else if(p&&b.ch>1&&f.indexOf(i)>=0&&t.getRange(n(b.line,b.ch-2),b)==i+i){if(b.ch>2&&/\bstring/.test(t.getTokenTypeAt(n(b.line,b.ch-2))))return e.Pass;x=`addFour`}else if(p){var C=b.ch==0?` `:t.getRange(n(b.line,b.ch-1),b);if(!e.isWordChar(S)&&C!=i&&!e.isWordChar(C))x=`both`;else return e.Pass}else if(g&&(S.length===0||/\s/.test(S)||l.indexOf(S)>-1))x=`both`;else return e.Pass;if(!_)_=x;else if(_!=x)return e.Pass}var w=c%2?o.charAt(c-1):i,T=c%2?i:o.charAt(c+1);t.operation(function(){if(_==`skip`)u(t,1);else if(_==`skipThree`)u(t,3);else if(_==`surround`){for(var e=t.getSelections(),n=0;n{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){var t=e.Pos;function n(e){return e.flags??(e.ignoreCase?`i`:``)+(e.global?`g`:``)+(e.multiline?`m`:``)}function r(e,t){for(var r=n(e),i=r,a=0;au);d++){var f=e.getLine(l++);s=s==null?f:s+` -`+f}c*=2,n.lastIndex=o.ch;var p=n.exec(s);if(p){var m=s.slice(0,p.index).split(` -`),h=p[0].split(` -`),g=o.line+m.length-1,_=m[m.length-1].length;return{from:t(g,_),to:t(g+h.length-1,h.length==1?_+h[0].length:h[h.length-1].length),match:p}}}}function s(e,t,n){for(var r,i=0;i<=e.length;){t.lastIndex=i;var a=t.exec(e);if(!a)break;var o=a.index+a[0].length;if(o>e.length-n)break;(!r||o>r.index+r[0].length)&&(r=a),i=a.index+1}return r}function c(e,n,i){n=r(n,`g`);for(var a=i.line,o=i.ch,c=e.firstLine();a>=c;a--,o=-1){var l=e.getLine(a),u=s(l,n,o<0?0:l.length-o);if(u)return{from:t(a,u.index),to:t(a,u.index+u[0].length),match:u}}}function l(e,n,a){if(!i(n))return c(e,n,a);n=r(n,`gm`);for(var o,l=1,u=e.getLine(a.line).length-a.ch,d=a.line,f=e.firstLine();d>=f;){for(var p=0;p=f;p++){var m=e.getLine(d--);o=o==null?m:m+` -`+o}l*=2;var h=s(o,n,u);if(h){var g=o.slice(0,h.index).split(` -`),_=h[0].split(` -`),v=d+g.length,y=g[g.length-1].length;return{from:t(v,y),to:t(v+_.length-1,_.length==1?y+_[0].length:_[_.length-1].length),match:h}}}}var u,d;String.prototype.normalize?(u=function(e){return e.normalize(`NFD`).toLowerCase()},d=function(e){return e.normalize(`NFD`)}):(u=function(e){return e.toLowerCase()},d=function(e){return e});function f(e,t,n,r){if(e.length==t.length)return n;for(var i=0,a=n+Math.max(0,e.length-t.length);;){if(i==a)return i;var o=i+a>>1,s=r(e.slice(0,o)).length;if(s==n)return o;s>n?a=o:i=o+1}}function p(e,n,r,i){if(!n.length)return null;var a=i?u:d,o=a(n).split(/\r|\n\r?/);search:for(var s=r.line,c=r.ch,l=e.lastLine()+1-o.length;s<=l;s++,c=0){var p=e.getLine(s).slice(c),m=a(p);if(o.length==1){var h=m.indexOf(o[0]);if(h==-1)continue search;var r=f(p,m,h,a)+c;return{from:t(s,f(p,m,h,a)+c),to:t(s,f(p,m,h+o[0].length,a)+c)}}else{var g=m.length-o[0].length;if(m.slice(g)!=o[0])continue search;for(var _=1;_=l;s--,c=-1){var p=e.getLine(s);c>-1&&(p=p.slice(0,c));var m=a(p);if(o.length==1){var h=m.lastIndexOf(o[0]);if(h==-1)continue search;return{from:t(s,f(p,m,h,a)),to:t(s,f(p,m,h+o[0].length,a))}}else{var g=o[o.length-1];if(m.slice(0,g.length)!=g)continue search;for(var _=1,r=s-o.length+1;_(this.doc.getLine(r.line)||``).length&&(r.ch=0,r.line++)),e.cmpPos(r,this.doc.clipPos(r))!=0))return this.atOccurrence=!1;var i=this.matches(n,r);if(this.afterEmptyMatch=i&&e.cmpPos(i.from,i.to)==0,i)return this.pos=i,this.atOccurrence=!0,this.pos.match||!0;var a=t(n?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:a,to:a},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(n,r){if(this.atOccurrence){var i=e.splitLines(n);this.doc.replaceRange(i,this.pos.from,this.pos.to,r),this.pos.to=t(this.pos.from.line+i.length-1,i[i.length-1].length+(i.length==1?this.pos.from.ch:0))}}},e.defineExtension(`getSearchCursor`,function(e,t,n){return new h(this.doc,e,t,n)}),e.defineDocExtension(`getSearchCursor`,function(e,t,n){return new h(this,e,t,n)}),e.defineExtension(`selectMatches`,function(t,n){for(var r=[],i=this.getSearchCursor(t,this.getCursor(`from`),n);i.findNext()&&!(e.cmpPos(i.to(),this.getCursor(`to`))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)})})})),_=e(((e,t)=>{(function(r){typeof e==`object`&&typeof t==`object`?r(n()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`],r):r(CodeMirror)})(function(e){function t(t,n,r){var i=t.getWrapperElement(),a=i.appendChild(document.createElement(`div`));return r?a.className=`CodeMirror-dialog CodeMirror-dialog-bottom`:a.className=`CodeMirror-dialog CodeMirror-dialog-top`,typeof n==`string`?a.innerHTML=n:a.appendChild(n),e.addClass(i,`dialog-opened`),a}function n(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}e.defineExtension(`openDialog`,function(r,i,a){a||={},n(this,null);var o=t(this,r,a.bottom),s=!1,c=this;function l(t){if(typeof t==`string`)u.value=t;else{if(s)return;s=!0,e.rmClass(o.parentNode,`dialog-opened`),o.parentNode.removeChild(o),c.focus(),a.onClose&&a.onClose(o)}}var u=o.getElementsByTagName(`input`)[0],d;return u?(u.focus(),a.value&&(u.value=a.value,a.selectValueOnOpen!==!1&&u.select()),a.onInput&&e.on(u,`input`,function(e){a.onInput(e,u.value,l)}),a.onKeyUp&&e.on(u,`keyup`,function(e){a.onKeyUp(e,u.value,l)}),e.on(u,`keydown`,function(t){a&&a.onKeyDown&&a.onKeyDown(t,u.value,l)||((t.keyCode==27||a.closeOnEnter!==!1&&t.keyCode==13)&&(u.blur(),e.e_stop(t),l()),t.keyCode==13&&i(u.value,t))}),a.closeOnBlur!==!1&&e.on(o,`focusout`,function(e){e.relatedTarget!==null&&l()})):(d=o.getElementsByTagName(`button`)[0])&&(e.on(d,`click`,function(){l(),c.focus()}),a.closeOnBlur!==!1&&e.on(d,`blur`,l),d.focus()),l}),e.defineExtension(`openConfirm`,function(r,i,a){n(this,null);var o=t(this,r,a&&a.bottom),s=o.getElementsByTagName(`button`),c=!1,l=this,u=1;function d(){c||(c=!0,e.rmClass(o.parentNode,`dialog-opened`),o.parentNode.removeChild(o),l.focus())}s[0].focus();for(var f=0;f{(function(r){typeof e==`object`&&typeof t==`object`?r(n(),g(),_()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`,`./searchcursor`,`../dialog/dialog`],r):r(CodeMirror)})(function(e){e.defineOption(`search`,{bottom:!1});function t(e,t){return typeof e==`string`?e=new RegExp(e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),t?`gi`:`g`):e.global||(e=new RegExp(e.source,e.ignoreCase?`gi`:`g`)),{token:function(t){e.lastIndex=t.pos;var n=e.exec(t.string);if(n&&n.index==t.pos)return t.pos+=n[0].length||1,`searching`;n?t.pos=n.index:t.skipToEnd()}}}function n(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function r(e){return e.state.search||(e.state.search=new n)}function i(e){return typeof e==`string`&&e==e.toLowerCase()}function a(e,t,n){return e.getSearchCursor(t,n,{caseFold:i(t),multiline:!0})}function o(e,t,n,r,i){e.openDialog(t,r,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){m(e)},onKeyDown:i,bottom:e.options.search.bottom})}function s(e,t,n,r,i){e.openDialog?e.openDialog(t,i,{value:r,selectValueOnOpen:!0,bottom:e.options.search.bottom}):i(prompt(n,r))}function c(e,t,n,r){e.openConfirm?e.openConfirm(t,r):confirm(n)&&r[0]()}function l(e){return e.replace(/\\([nrt\\])/g,function(e,t){return t==`n`?` -`:t==`r`?`\r`:t==`t`?` `:t==`\\`?`\\`:e})}function u(e){var t=e.match(/^\/(.*)\/([a-z]*)$/);if(t)try{e=new RegExp(t[1],t[2].indexOf(`i`)==-1?``:`i`)}catch{}else e=l(e);return(typeof e==`string`?e==``:e.test(``))&&(e=/x^/),e}function d(e,n,r){n.queryText=r,n.query=u(r),e.removeOverlay(n.overlay,i(n.query)),n.overlay=t(n.query,i(n.query)),e.addOverlay(n.overlay),e.showMatchesOnScrollbar&&(n.annotate&&=(n.annotate.clear(),null),n.annotate=e.showMatchesOnScrollbar(n.query,i(n.query)))}function f(t,n,i,a){var c=r(t);if(c.query)return p(t,n);var l=t.getSelection()||c.lastQuery;if(l instanceof RegExp&&l.source==`x^`&&(l=null),i&&t.openDialog){var u=null,f=function(n,r){e.e_stop(r),n&&(n!=c.queryText&&(d(t,c,n),c.posFrom=c.posTo=t.getCursor()),u&&(u.style.opacity=1),p(t,r.shiftKey,function(e,n){var r;n.line<3&&document.querySelector&&(r=t.display.wrapper.querySelector(`.CodeMirror-dialog`))&&r.getBoundingClientRect().bottom-4>t.cursorCoords(n,`window`).top&&((u=r).style.opacity=.4)}))};o(t,g(t),l,f,function(n,i){var a=e.keyName(n),o=t.getOption(`extraKeys`),s=o&&o[a]||e.keyMap[t.getOption(`keyMap`)][a];s==`findNext`||s==`findPrev`||s==`findPersistentNext`||s==`findPersistentPrev`?(e.e_stop(n),d(t,r(t),i),t.execCommand(s)):(s==`find`||s==`findPersistent`)&&(e.e_stop(n),f(i,n))}),a&&l&&(d(t,c,l),p(t,n))}else s(t,g(t),`Search for:`,l,function(e){e&&!c.query&&t.operation(function(){d(t,c,e),c.posFrom=c.posTo=t.getCursor(),p(t,n)})})}function p(t,n,i){t.operation(function(){var o=r(t),s=a(t,o.query,n?o.posFrom:o.posTo);!s.find(n)&&(s=a(t,o.query,n?e.Pos(t.lastLine()):e.Pos(t.firstLine(),0)),!s.find(n))||(t.setSelection(s.from(),s.to()),t.scrollIntoView({from:s.from(),to:s.to()},20),o.posFrom=s.from(),o.posTo=s.to(),i&&i(s.from(),s.to()))})}function m(e){e.operation(function(){var t=r(e);t.lastQuery=t.query,t.query&&(t.query=t.queryText=null,e.removeOverlay(t.overlay),t.annotate&&=(t.annotate.clear(),null))})}function h(e,t){var n=e?document.createElement(e):document.createDocumentFragment();for(var r in t)n[r]=t[r];for(var i=2;i{(function(r){typeof e==`object`&&typeof t==`object`?r(n(),_()):typeof define==`function`&&define.amd?define([`../../lib/codemirror`,`../dialog/dialog`],r):r(CodeMirror)})(function(e){e.defineOption(`search`,{bottom:!1});function t(e,t,n,r,i){e.openDialog?e.openDialog(t,i,{value:r,selectValueOnOpen:!0,bottom:e.options.search.bottom}):i(prompt(n,r))}function n(e){return e.phrase(`Jump to line:`)+` `+e.phrase(`(Use line:column or scroll% syntax)`)+``}function r(e,t){var n=Number(t);return/^[-+]/.test(t)?e.getCursor().line+n:n-1}e.commands.jumpToLine=function(e){var i=e.getCursor();t(e,n(e),e.phrase(`Jump to line:`),i.line+1+`:`+i.ch,function(t){if(t){var n;if(n=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(t))e.setCursor(r(e,n[1]),Number(n[2]));else if(n=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(t)){var a=Math.round(e.lineCount()*Number(n[1])/100);/^[-+]/.test(n[1])&&(a=i.line+a+1),e.setCursor(a-1,i.ch)}else(n=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(t))&&e.setCursor(r(e,n[1]),i.ch)}})},e.keyMap.default[`Alt-G`]=`jumpToLine`})}));i(),o(),s(),c(),l(),d(),f(),p(),m(),h(),g(),_(),v(),y();var b=r.default;export{b as default}; \ No newline at end of file diff --git a/playwright-report/trace/assets/defaultSettingsView-B-dXF5JN.js b/playwright-report/trace/assets/defaultSettingsView-B-dXF5JN.js deleted file mode 100644 index 14c3aab..0000000 --- a/playwright-report/trace/assets/defaultSettingsView-B-dXF5JN.js +++ /dev/null @@ -1,181 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./codeMirrorModule-rXmQmLUY.js","../codeMirrorModule.-QdMvsKi.css"])))=>i.map(i=>d[i]); -import{a as e,c as t,d as n,f as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./urlMatch-L3liM589.js";var m=Object.create,h=Object.defineProperty,g=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,v=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty,b=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),x=(e,t)=>{let n={};for(var r in e)h(n,r,{get:e[r],enumerable:!0});return t||h(n,Symbol.toStringTag,{value:`Module`}),n},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=_(t),a=0,o=i.length,s;at[e]).bind(null,s),enumerable:!(r=g(t,s))||r.enumerable});return e},C=(e,t,n)=>(n=e==null?{}:m(v(e)),S(t||!e||!e.__esModule?h(n,`default`,{value:e,enumerable:!0}):n,e)),w=b((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function T(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function te(e,t){return T(e.type,t,e.props)}function E(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ne(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var re=/\/+/g;function ie(e,t){return typeof e==`object`&&e&&e.key!=null?ne(``+e.key):t.toString(36)}function ae(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function oe(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,oe(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+ie(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(re,`$&/`)+`/`),oe(o,r,i,``,function(e){return e})):o!=null&&(E(o)&&(o=te(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(re,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=w()})),T=C(ee());function te(e,t,n,r){let[i,a]=T.useState(n);return T.useEffect(()=>{let t=!1;return r!==void 0&&a(r),e().then(e=>{t||a(e)}),()=>{t=!0}},t),i}function E(){let e=T.useRef(null),[t]=ne(e);return[t,e]}function ne(e){let[t,n]=T.useState(new DOMRect(0,0,10,10)),r=T.useCallback(()=>{let t=e?.current;t&&n(t.getBoundingClientRect())},[e]);return T.useLayoutEffect(()=>{let t=e?.current;if(!t)return;r();let n=new ResizeObserver(r);return n.observe(t),window.addEventListener(`resize`,r),()=>{n.disconnect(),window.removeEventListener(`resize`,r)}},[r,e]),[t,r]}function re(e,t,n,r,i){let a=r||0,o=i===void 0?e.length:i;for(;a>1;n(t,e[r])>=0?a=r+1:o=r}return o}function ie(e){let t=document.createElement(`textarea`);t.style.position=`absolute`,t.style.zIndex=`-1000`,t.value=e,document.body.appendChild(t),t.select(),document.execCommand(`copy`),t.remove()}function ae(e,t){e&&(t=le.getObject(e,t));let[n,r]=T.useState(t),i=T.useCallback(t=>{e?le.setObject(e,t):r(t)},[e,r]);return T.useEffect(()=>{if(e){let n=()=>r(le.getObject(e,t));return le.onChangeEmitter.addEventListener(e,n),()=>le.onChangeEmitter.removeEventListener(e,n)}},[t,e]),[n,i]}var oe=new Map,D=new Map,O;function se(e,t){let[n,r]=T.useState();return D.set(e,{setter:r,defaultValue:t}),[n,T.useCallback(t=>{let n=oe.get(O||`default`)||{};n[e]=t,oe.set(O||`default`,n),r(t)},[e])]}function ce(e){if(O===e)return;O=e;let t=oe.get(e)||{};for(let[e,n]of D.entries())n.setter(t[e]||n.defaultValue)}var le=new class{constructor(){this.onChangeEmitter=new EventTarget}getString(e,t){return localStorage[e]||t}setString(e,t){localStorage[e]=t,this.onChangeEmitter.dispatchEvent(new Event(e)),window.saveSettings?.()}getObject(e,t){if(!localStorage[e])return t;try{return JSON.parse(localStorage[e])}catch{return t}}setObject(e,t){localStorage[e]=JSON.stringify(t),this.onChangeEmitter.dispatchEvent(new Event(e)),window.saveSettings?.()}};function k(...e){return e.filter(Boolean).join(` `)}function A(e){e&&(e?.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e?.scrollIntoView())}var j=RegExp(`(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\/\\/|www\\.)[^\\s\\u0000-\\u0020\\u007f-\\u009f"]{2,}[^\\s\\u0000-\\u0020\\u007f-\\u009f"')}\\],:;.!?]`,`ug`);function ue(){let[e,t]=T.useState(!1);return[e,T.useCallback(()=>{let e=[];return t(n=>(e.push(setTimeout(()=>t(!1),1e3)),n?(e.push(setTimeout(()=>t(!0),50)),!1):!0)),()=>e.forEach(clearTimeout)},[t])]}var de=`system`,fe=`theme`,pe=[{label:`Dark mode`,value:`dark-mode`},{label:`Light mode`,value:`light-mode`},{label:`System`,value:`system`}],me=window.matchMedia(`(prefers-color-scheme: dark)`);function he(){document.playwrightThemeInitialized||(document.playwrightThemeInitialized=!0,document.defaultView.addEventListener(`focus`,e=>{e.target.document.nodeType===Node.DOCUMENT_NODE&&document.body.classList.remove(`inactive`)},!1),document.defaultView.addEventListener(`blur`,e=>{document.body.classList.add(`inactive`)},!1),_e(be()),me.addEventListener(`change`,()=>{_e(be())}))}var ge=new Set;function _e(e){let t=xe(),n=e===`system`?me.matches?`dark-mode`:`light-mode`:e;if(t!==n){t&&document.documentElement.classList.remove(t),document.documentElement.classList.add(n);for(let e of ge)e(n)}}function ve(e){ge.add(e)}function ye(e){ge.delete(e)}function be(){return le.getString(fe,de)}function xe(){return document.documentElement.classList.contains(`dark-mode`)?`dark-mode`:document.documentElement.classList.contains(`light-mode`)?`light-mode`:null}function Se(){let[e,t]=T.useState(be());return T.useEffect(()=>{le.setString(fe,e),_e(e)},[e]),[e,t]}var Ce=b((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,E());else{var t=n(l);t!==null&&ie(x,t.startTime-e)}}var S=!1,C=-1,w=5,ee=-1;function T(){return g?!0:!(e.unstable_now()-eet&&T());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ie(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?E():S=!1}}}var E;if(typeof y==`function`)E=function(){y(te)};else if(typeof MessageChannel<`u`){var ne=new MessageChannel,re=ne.port2;ne.port1.onmessage=te,E=function(){re.postMessage(null)}}else E=function(){_(te,0)};function ie(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ie(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,E()))),r},e.unstable_shouldYield=T,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),we=b(((e,t)=>{t.exports=Ce()})),Te=b((e=>{var t=ee();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Te()})),De=b((e=>{var t=we(),n=ee(),r=Ee();function i(e){var t=`https://react.dev/errors/`+e;if(1le||(e.current=ce[le],ce[le]=null,le--)}function j(e,t){le++,ce[le]=e.current,e.current=t}var ue=k(null),de=k(null),fe=k(null),pe=k(null);function me(e,t){switch(j(fe,t),j(de,e),j(ue,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}A(ue),j(ue,e)}function he(){A(ue),A(de),A(fe)}function ge(e){e.memoizedState!==null&&j(pe,e);var t=ue.current,n=Hd(t,e.type);t!==n&&(j(de,e),j(ue,n))}function _e(e){de.current===e&&(A(ue),A(de)),pe.current===e&&(A(pe),Qf._currentValue=se)}var ve,ye;function be(e){if(ve===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ve=t&&t[1]||``,ye=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{xe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?be(n):``}function Ce(e,t){switch(e.tag){case 26:case 27:case 5:return be(e.type);case 16:return be(`Lazy`);case 13:return e.child!==t&&t!==null?be(`Suspense Fallback`):be(`Suspense`);case 19:return be(`SuspenseList`);case 0:case 15:return Se(e.type,!1);case 11:return Se(e.type.render,!1);case 1:return Se(e.type,!0);case 31:return be(`Activity`);default:return``}}function Te(e){try{var t=``,n=null;do t+=Ce(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var De=Object.prototype.hasOwnProperty,Oe=t.unstable_scheduleCallback,ke=t.unstable_cancelCallback,Ae=t.unstable_shouldYield,je=t.unstable_requestPaint,Me=t.unstable_now,Ne=t.unstable_getCurrentPriorityLevel,Pe=t.unstable_ImmediatePriority,Fe=t.unstable_UserBlockingPriority,Ie=t.unstable_NormalPriority,Le=t.unstable_LowPriority,Re=t.unstable_IdlePriority,ze=t.log,Be=t.unstable_setDisableYieldValue,Ve=null,He=null;function Ue(e){if(typeof ze==`function`&&Be(e),He&&typeof He.setStrictMode==`function`)try{He.setStrictMode(Ve,e)}catch{}}var We=Math.clz32?Math.clz32:qe,Ge=Math.log,Ke=Math.LN2;function qe(e){return e>>>=0,e===0?32:31-(Ge(e)/Ke|0)|0}var Je=256,Ye=262144,Xe=4194304;function Ze(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Qe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ze(n))):i=Ze(o):i=Ze(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ze(n))):i=Ze(o)):i=Ze(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function $e(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function et(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function tt(){var e=Xe;return Xe<<=1,!(Xe&62914560)&&(Xe=4194304),e}function nt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function rt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function it(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),gn=!1;if(hn)try{var _n={};Object.defineProperty(_n,"passive",{get:function(){gn=!0}}),window.addEventListener(`test`,_n,_n),window.removeEventListener(`test`,_n,_n)}catch{gn=!1}var vn=null,yn=null,bn=null;function xn(){if(bn)return bn;var e,t=yn,n=t.length,r,i=`value`in vn?vn.value:vn.textContent,a=i.length;for(e=0;e=$n),nr=` `,rr=!1;function ir(e,t){switch(e){case`keyup`:return Zn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function ar(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var or=!1;function sr(e,t){switch(e){case`compositionend`:return ar(t);case`keypress`:return t.which===32?(rr=!0,nr):null;case`textInput`:return e=t.data,e===nr&&rr?null:e;default:return null}}function cr(e,t){if(or)return e===`compositionend`||!Qn&&ir(e,t)?(e=xn(),bn=yn=vn=null,or=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Ar(n)}}function Mr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Mr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Nr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ht(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ht(e.document)}return t}function Pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Fr=hn&&`documentMode`in document&&11>=document.documentMode,Ir=null,Lr=null,Rr=null,zr=!1;function Br(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;zr||Ir==null||Ir!==Ht(r)||(r=Ir,`selectionStart`in r&&Pr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Rr&&kr(Rr,r)||(Rr=r,r=Ed(Lr,`onSelect`),0>=o,i-=o,Mi=1<<32-We(t)+i|n<m?(h=d,d=null):h=d.sibling;var g=p(i,d,s[m],c);if(g===null){d===null&&(d=h);break}e&&d&&g.alternate===null&&t(i,d),a=o(g,a,m),u===null?l=g:u.sibling=g,u=g,d=h}if(m===s.length)return n(i,d),N&&Pi(i,m),l;if(d===null){for(;mh?(g=m,m=null):g=m.sibling;var y=p(a,m,v.value,l);if(y===null){m===null&&(m=g);break}e&&m&&y.alternate===null&&t(a,m),s=o(y,s,h),d===null?u=y:d.sibling=y,d=y,m=g}if(v.done)return n(a,m),N&&Pi(a,h),u;if(m===null){for(;!v.done;h++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,h),d===null?u=v:d.sibling=v,d=v);return N&&Pi(a,h),u}for(m=r(m);!v.done;h++,v=c.next())v=_(m,a,h,v.value,l),v!==null&&(e&&v.alternate!==null&&m.delete(v.key===null?h:v.key),s=o(v,s,h),d===null?u=v:d.sibling=v,d=v);return e&&m.forEach(function(e){return t(a,e)}),N&&Pi(a,h),u}function x(e,r,o,c){if(typeof o==`object`&&o&&o.type===g&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case m:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===g){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===T&&Pa(l)===r.type){n(e,r.sibling),c=a(r,o.props),Va(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===g?(c=yi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=vi(o.type,o.key,o.props,null,e.mode,c),Va(c,o),c.return=e,e=c)}return s(e);case h:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Si(o,e.mode,c),c.return=e,e=c}return s(e);case T:return o=Pa(o),x(e,r,o,c)}if(oe(o))return v(e,r,o,c);if(re(o)){if(l=re(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),y(e,r,o,c)}if(typeof o.then==`function`)return x(e,r,Ba(o),c);if(o.$$typeof===b)return x(e,r,ca(e,o),c);Ha(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=bi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{za=0;var i=x(e,t,n,r);return Ra=null,i}catch(t){if(t===Oa||t===Aa)throw t;var a=mi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Wa=Ua(!0),Ga=Ua(!1),Ka=!1;function qa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ja(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ya(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Xa(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,V&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=di(e),ui(e,null,n),t}return si(e,r,t,n),di(e)}function Za(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,at(e,n)}}function Qa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var $a=!1;function eo(){if($a){var e=ya;if(e!==null)throw e}}function to(e,t,n,r){$a=!1;var i=e.updateQueue;Ka=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var p=s.lane&-536870913,m=p!==s.lane;if(m?(W&p)===p:(r&p)===p){p!==0&&p===va&&($a=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;p=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,p);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,p=typeof h==`function`?h.call(_,d,p):h,p==null)break a;d=f({},d,p);break a;case 2:Ka=!0}}p=s.callback,p!==null&&(e.flags|=64,m&&(e.flags|=8192),m=i.callbacks,m===null?i.callbacks=[p]:m.push(p))}else m={lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=m,c=d):u=u.next=m,o|=p;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;m=s,s=m.next,m.next=null,i.lastBaseUpdate=m,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Xl|=o,e.lanes=o,e.memoizedState=d}}function no(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function ro(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=D.T,s={};D.T=s,zs(e,!1,t,n);try{var c=i(),l=D.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Rs(e,t,Sa(c,r),gu(e)):Rs(e,t,r,gu(e))}catch(n){Rs(e,t,{then:function(){},status:`rejected`,reason:n},gu())}finally{O.p=a,o!==null&&s.types!==null&&(o.types=s.types),D.T=o}}function Os(){}function ks(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=As(e).queue;Ds(e,a,t,se,n===null?Os:function(){return js(e),n(r)})}function As(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:se,baseState:se,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:se},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function js(e){var t=As(e);t.next===null&&(t=e.alternate.memoizedState),Rs(e,t.next.queue,{},gu())}function Ms(){return sa(Qf)}function Ns(){return Io().memoizedState}function Ps(){return Io().memoizedState}function Fs(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=gu();e=Ya(n);var r=Xa(t,e,n);r!==null&&(vu(r,t,n),Za(r,t,n)),t={cache:ma()},e.payload=t;return}t=t.return}}function Is(e,t,n){var r=gu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Bs(e)?Vs(t,n):(n=ci(e,t,n,r),n!==null&&(vu(n,e,r),Hs(n,t,r)))}function Ls(e,t,n){Rs(e,t,n,gu())}function Rs(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Bs(e))Vs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Or(s,o))return si(e,t,i,0),H===null&&oi(),!1}catch{}if(n=ci(e,t,i,r),n!==null)return vu(n,e,r),Hs(n,t,r),!0}return!1}function zs(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Bs(e)){if(t)throw Error(i(479))}else t=ci(e,n,r,2),t!==null&&vu(t,e,2)}function Bs(e){var t=e.alternate;return e===F||t!==null&&t===F}function Vs(e,t){xo=bo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Hs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,at(e,n)}}var Us={readContext:sa,use:zo,useCallback:L,useContext:L,useEffect:L,useImperativeHandle:L,useLayoutEffect:L,useInsertionEffect:L,useMemo:L,useReducer:L,useRef:L,useState:L,useDebugValue:L,useDeferredValue:L,useTransition:L,useSyncExternalStore:L,useId:L,useHostTransitionStatus:L,useFormState:L,useActionState:L,useOptimistic:L,useMemoCache:L,useCacheRefresh:L};Us.useEffectEvent=L;var Ws={readContext:sa,use:zo,useCallback:function(e,t){return Fo().memoizedState=[e,t===void 0?null:t],e},useContext:sa,useEffect:hs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ps(4194308,4,xs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ps(4194308,4,e,t)},useInsertionEffect:function(e,t){ps(4,2,e,t)},useMemo:function(e,t){var n=Fo();t=t===void 0?null:t;var r=e();if(So){Ue(!0);try{e()}finally{Ue(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Fo();if(n!==void 0){var i=n(t);if(So){Ue(!0);try{n(t)}finally{Ue(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Is.bind(null,F,e),[r.memoizedState,e]},useRef:function(e){var t=Fo();return e={current:e},t.memoizedState=e},useState:function(e){e=Zo(e);var t=e.queue,n=Ls.bind(null,F,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ss,useDeferredValue:function(e,t){return Ts(Fo(),e,t)},useTransition:function(){var e=Zo(!1);return e=Ds.bind(null,F,e.queue,!0,!1),Fo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=F,a=Fo();if(N){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),H===null)throw Error(i(349));W&127||Ko(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,hs(Jo.bind(null,r,o,e),[e]),r.flags|=2048,ds(9,{destroy:void 0},qo.bind(null,r,o,n,t),null),n},useId:function(){var e=Fo(),t=H.identifierPrefix;if(N){var n=Ni,r=Mi;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Co++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[ft]=t,o[pt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Rc(t)}}return z(t),zc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Rc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=fe.current,qi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=zi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[ft]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Wi(t,!0)}else e=Bd(e).createTextNode(r),e[ft]=t,t.stateNode=e}return z(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=qi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[ft]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),e=!1}else n=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(go(t),t):(go(t),null);if(t.flags&128)throw Error(i(558))}return z(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=qi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[ft]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),a=!1}else a=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(go(t),t):(go(t),null)}return go(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Vc(t,t.updateQueue),z(t),null);case 4:return he(),e===null&&Sd(t.stateNode.containerInfo),z(t),null;case 10:return ta(t.type),z(t),null;case 19:if(A(P),r=t.memoizedState,r===null)return z(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Hc(r,!1);else{if(Yl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=_o(e),o!==null){for(t.flags|=128,Hc(r,!1),e=o.updateQueue,t.updateQueue=e,Vc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)_i(n,e),n=n.sibling;return j(P,P.current&1|2),N&&Pi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Me()>iu&&(t.flags|=128,a=!0,Hc(r,!1),t.lanes=4194304)}else{if(!a)if(e=_o(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Vc(t,e),Hc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!N)return z(t),null}else 2*Me()-r.renderingStartTime>iu&&n!==536870912&&(t.flags|=128,a=!0,Hc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(z(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Me(),e.sibling=null,n=P.current,j(P,a?n&1|2:n&1),N&&Pi(t,r.treeForkCount),e);case 22:case 23:return go(t),co(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(z(t),t.subtreeFlags&6&&(t.flags|=8192)):z(t),n=t.updateQueue,n!==null&&Vc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&A(wa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ta(pa),z(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Wc(e,t){switch(Li(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ta(pa),he(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return _e(t),null;case 31:if(t.memoizedState!==null){if(go(t),t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(go(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return A(P),null;case 4:return he(),null;case 10:return ta(t.type),null;case 22:case 23:return go(t),co(),e!==null&&A(wa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ta(pa),null;case 25:return null;default:return null}}function Gc(e,t){switch(Li(t),t.tag){case 3:ta(pa),he();break;case 26:case 27:case 5:_e(t);break;case 4:he();break;case 31:t.memoizedState!==null&&go(t);break;case 13:go(t);break;case 19:A(P);break;case 10:ta(t.type);break;case 22:case 23:go(t),co(),e!==null&&A(wa);break;case 24:ta(pa)}}function Kc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){X(t,t.return,e)}}function qc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){X(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){X(t,t.return,e)}}function Jc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{ro(t,n)}catch(t){X(e,e.return,t)}}}function Yc(e,t,n){n.props=Zs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){X(e,t,n)}}function Xc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){X(e,t,n)}}function Zc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){X(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){X(e,t,n)}else n.current=null}function Qc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){X(e,e.return,t)}}function $c(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[pt]=t}catch(t){X(e,e.return,t)}}function el(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function tl(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||el(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function nl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=on));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(nl(e,t,n),e=e.sibling;e!==null;)nl(e,t,n),e=e.sibling}function rl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(rl(e,t,n),e=e.sibling;e!==null;)rl(e,t,n),e=e.sibling}function il(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[ft]=e,t[pt]=n}catch(t){X(e,e.return,t)}}var al=!1,ol=!1,sl=!1,cl=typeof WeakSet==`function`?WeakSet:Set,ll=null;function ul(e,t){if(e=e.containerInfo,Rd=sp,e=Nr(e),Pr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,ll=t;ll!==null;)if(t=ll,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,ll=e;else for(;ll!==null;){switch(t=ll,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[ft]=e,Tt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=jr(s,h),v=jr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,D.T=null,n=fu,fu=null;var o=cu,s=uu;if(su=0,lu=cu=null,uu=0,V&6)throw Error(i(331));var c=V;if(V|=4,zl(o.current),jl(o,o.current,s,n),V=c,id(0,!1),He&&typeof He.onPostCommitFiberRoot==`function`)try{He.onPostCommitFiberRoot(Ve,o)}catch{}return!0}finally{O.p=a,D.T=r,Hu(e,t)}}function Gu(e,t,n){t=wi(n,t),t=rc(e.stateNode,t,2),e=Xa(e,t,2),e!==null&&(rt(e,2),rd(e))}function X(e,t,n){if(e.tag===3)Gu(e,e,n);else for(;t!==null;){if(t.tag===3){Gu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ou===null||!ou.has(r))){e=wi(n,e),n=ic(2),r=Xa(t,n,2),r!==null&&(ac(n,r,t,e),rt(r,2),rd(r));break}}t=t.return}}function Ku(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ul;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(ql=!0,i.add(n),e=qu.bind(null,e,t,n),t.then(e,e))}function qu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,H===e&&(W&n)===n&&(Yl===4||Yl===3&&(W&62914560)===W&&300>Me()-nu?!(V&2)&&Y(e,0):Zl|=n,$l===W&&($l=0)),rd(e)}function Ju(e,t){t===0&&(t=tt()),e=li(e,t),e!==null&&(rt(e,t),rd(e))}function Yu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Ju(e,n)}function Z(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Ju(e,n)}function Xu(e,t){return Oe(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-We(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=W,a=Qe(r,r===H?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||$e(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Me(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}su!==0&&su!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Wt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),Tt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Wt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Wt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Wt(n.imageSizes)+`"]`)):i+=`[href="`+Wt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),Tt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Wt(r)+`"][href="`+Wt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),Tt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=wt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);Tt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=wt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=f({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Tt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=wt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Tt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=fe.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=wt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=wt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=wt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Wt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),Tt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Wt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Wt(n.href)+`"]`);if(r)return t.instance=r,Tt(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Tt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,Tt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),Tt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,Tt(a),a):(r=n,(a=mf.get(o))&&(r=f({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Tt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Tt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),Tt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=De()})),ke=new Map([[`Android.devices`,{internal:!0}],[`AndroidSocket.write`,{internal:!0}],[`AndroidSocket.close`,{internal:!0}],[`AndroidDevice.wait`,{title:`Wait`}],[`AndroidDevice.fill`,{title:`Fill "{text}"`}],[`AndroidDevice.tap`,{title:`Tap`}],[`AndroidDevice.drag`,{title:`Drag`}],[`AndroidDevice.fling`,{title:`Fling`}],[`AndroidDevice.longTap`,{title:`Long tap`}],[`AndroidDevice.pinchClose`,{title:`Pinch close`}],[`AndroidDevice.pinchOpen`,{title:`Pinch open`}],[`AndroidDevice.scroll`,{title:`Scroll`}],[`AndroidDevice.swipe`,{title:`Swipe`}],[`AndroidDevice.info`,{internal:!0}],[`AndroidDevice.screenshot`,{title:`Screenshot`}],[`AndroidDevice.inputType`,{title:`Type`}],[`AndroidDevice.inputPress`,{title:`Press`}],[`AndroidDevice.inputTap`,{title:`Tap`}],[`AndroidDevice.inputSwipe`,{title:`Swipe`}],[`AndroidDevice.inputDrag`,{title:`Drag`}],[`AndroidDevice.launchBrowser`,{title:`Launch browser`}],[`AndroidDevice.open`,{title:`Open app`}],[`AndroidDevice.shell`,{title:`Execute shell command`,group:`configuration`}],[`AndroidDevice.installApk`,{title:`Install apk`}],[`AndroidDevice.push`,{title:`Push`}],[`AndroidDevice.connectToWebView`,{title:`Connect to Web View`}],[`AndroidDevice.close`,{internal:!0}],[`APIRequestContext.fetch`,{title:`{method} "{url}"`}],[`APIRequestContext.fetchResponseBody`,{title:`Get response body`,group:`getter`}],[`APIRequestContext.fetchLog`,{internal:!0}],[`APIRequestContext.storageState`,{title:`Get storage state`,group:`configuration`}],[`APIRequestContext.disposeAPIResponse`,{internal:!0}],[`APIRequestContext.dispose`,{internal:!0}],[`Artifact.pathAfterFinished`,{internal:!0}],[`Artifact.saveAs`,{internal:!0}],[`Artifact.saveAsStream`,{internal:!0}],[`Artifact.failure`,{internal:!0}],[`Artifact.stream`,{internal:!0}],[`Artifact.cancel`,{internal:!0}],[`Artifact.delete`,{internal:!0}],[`Stream.read`,{internal:!0}],[`Stream.close`,{internal:!0}],[`WritableStream.write`,{internal:!0}],[`WritableStream.close`,{internal:!0}],[`Browser.startServer`,{title:`Start server`}],[`Browser.stopServer`,{title:`Stop server`}],[`Browser.close`,{title:`Close browser`,pause:!0}],[`Browser.killForTests`,{internal:!0}],[`Browser.defaultUserAgentForTest`,{internal:!0}],[`Browser.newContext`,{title:`Create context`}],[`Browser.newContextForReuse`,{internal:!0}],[`Browser.disconnectFromReusedContext`,{internal:!0}],[`Browser.newBrowserCDPSession`,{title:`Create CDP session`,group:`configuration`}],[`Browser.startTracing`,{title:`Start browser tracing`,group:`configuration`}],[`Browser.stopTracing`,{title:`Stop browser tracing`,group:`configuration`}],[`BrowserContext.addCookies`,{title:`Add cookies`,group:`configuration`}],[`BrowserContext.addInitScript`,{title:`Add init script`,group:`configuration`}],[`BrowserContext.clearCookies`,{title:`Clear cookies`,group:`configuration`}],[`BrowserContext.clearPermissions`,{title:`Clear permissions`,group:`configuration`}],[`BrowserContext.close`,{title:`Close context`,pause:!0}],[`BrowserContext.cookies`,{title:`Get cookies`,group:`getter`}],[`BrowserContext.exposeBinding`,{title:`Expose binding`,group:`configuration`}],[`BrowserContext.grantPermissions`,{title:`Grant permissions`,group:`configuration`}],[`BrowserContext.newPage`,{title:`Create page`}],[`BrowserContext.registerSelectorEngine`,{internal:!0}],[`BrowserContext.setTestIdAttributeName`,{internal:!0}],[`BrowserContext.setExtraHTTPHeaders`,{title:`Set extra HTTP headers`,group:`configuration`}],[`BrowserContext.setGeolocation`,{title:`Set geolocation`,group:`configuration`}],[`BrowserContext.setHTTPCredentials`,{title:`Set HTTP credentials`,group:`configuration`}],[`BrowserContext.setNetworkInterceptionPatterns`,{title:`Route requests`,group:`route`}],[`BrowserContext.setWebSocketInterceptionPatterns`,{title:`Route WebSockets`,group:`route`}],[`BrowserContext.setOffline`,{title:`Set offline mode`}],[`BrowserContext.storageState`,{title:`Get storage state`,group:`configuration`}],[`BrowserContext.setStorageState`,{title:`Set storage state`,group:`configuration`}],[`BrowserContext.pause`,{title:`Pause`}],[`BrowserContext.enableRecorder`,{internal:!0}],[`BrowserContext.disableRecorder`,{internal:!0}],[`BrowserContext.exposeConsoleApi`,{internal:!0}],[`BrowserContext.newCDPSession`,{title:`Create CDP session`,group:`configuration`}],[`BrowserContext.createTempFiles`,{internal:!0}],[`BrowserContext.updateSubscription`,{internal:!0}],[`BrowserContext.clockFastForward`,{title:`Fast forward clock "{ticksNumber|ticksString}"`}],[`BrowserContext.clockInstall`,{title:`Install clock "{timeNumber|timeString}"`}],[`BrowserContext.clockPauseAt`,{title:`Pause clock "{timeNumber|timeString}"`}],[`BrowserContext.clockResume`,{title:`Resume clock`}],[`BrowserContext.clockRunFor`,{title:`Run clock "{ticksNumber|ticksString}"`}],[`BrowserContext.clockSetFixedTime`,{title:`Set fixed time "{timeNumber|timeString}"`}],[`BrowserContext.clockSetSystemTime`,{title:`Set system time "{timeNumber|timeString}"`}],[`BrowserContext.credentialsInstall`,{title:`Install virtual WebAuthn authenticator`,group:`configuration`}],[`BrowserContext.credentialsCreate`,{title:`Create virtual credential for "{rpId}"`,group:`configuration`}],[`BrowserContext.credentialsGet`,{title:`Get virtual credentials`,group:`configuration`}],[`BrowserContext.credentialsDelete`,{title:`Delete virtual credential`,group:`configuration`}],[`BrowserType.launch`,{title:`Launch browser`}],[`BrowserType.launchPersistentContext`,{title:`Launch persistent context`}],[`BrowserType.connectOverCDP`,{title:`Connect over CDP`}],[`BrowserType.connectToWorker`,{title:`Connect to worker`}],[`Disposable.dispose`,{internal:!0}],[`Electron.launch`,{title:`Launch electron`}],[`ElectronApplication.browserWindow`,{internal:!0}],[`ElectronApplication.evaluateExpression`,{title:`Evaluate`}],[`ElectronApplication.evaluateExpressionHandle`,{title:`Evaluate`}],[`ElectronApplication.updateSubscription`,{internal:!0}],[`Frame.evalOnSelector`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`Frame.evalOnSelectorAll`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`Frame.addScriptTag`,{title:`Add script tag`,snapshot:!0,pause:!0}],[`Frame.addStyleTag`,{title:`Add style tag`,snapshot:!0,pause:!0}],[`Frame.ariaSnapshot`,{title:`Aria snapshot`,group:`getter`}],[`Frame.blur`,{title:`Blur`,slowMo:!0,snapshot:!0,pause:!0}],[`Frame.check`,{title:`Check`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.click`,{title:`Click`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.content`,{title:`Get content`,snapshot:!0,pause:!0}],[`Frame.dragAndDrop`,{title:`Drag and drop`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.drop`,{title:`Drop files or data onto an element`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.dblclick`,{title:`Double click`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.dispatchEvent`,{title:`Dispatch "{type}"`,slowMo:!0,snapshot:!0,pause:!0}],[`Frame.evaluateExpression`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`Frame.evaluateExpressionHandle`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`Frame.fill`,{title:`Fill "{value}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.focus`,{title:`Focus`,slowMo:!0,snapshot:!0,pause:!0}],[`Frame.frameElement`,{title:`Get frame element`,group:`getter`}],[`Frame.resolveSelector`,{internal:!0}],[`Frame.highlight`,{internal:!0}],[`Frame.hideHighlight`,{internal:!0}],[`Frame.getAttribute`,{title:`Get attribute "{name}"`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.goto`,{title:`Navigate to "{url}"`,slowMo:!0,snapshot:!0,pause:!0}],[`Frame.hover`,{title:`Hover`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.innerHTML`,{title:`Get HTML`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.innerText`,{title:`Get inner text`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.inputValue`,{title:`Get input value`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.isChecked`,{title:`Is checked`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.isDisabled`,{title:`Is disabled`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.isEnabled`,{title:`Is enabled`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.isHidden`,{title:`Is hidden`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.isVisible`,{title:`Is visible`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.isEditable`,{title:`Is editable`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.press`,{title:`Press "{key}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.querySelector`,{title:`Query selector`,snapshot:!0}],[`Frame.querySelectorAll`,{title:`Query selector all`,snapshot:!0}],[`Frame.queryCount`,{title:`Query count`,snapshot:!0,pause:!0}],[`Frame.selectOption`,{title:`Select option`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.setContent`,{title:`Set content`,snapshot:!0,pause:!0}],[`Frame.setInputFiles`,{title:`Set input files`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.tap`,{title:`Tap`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.textContent`,{title:`Get text content`,snapshot:!0,pause:!0,group:`getter`}],[`Frame.title`,{title:`Get page title`,group:`getter`}],[`Frame.type`,{title:`Type "{text}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.uncheck`,{title:`Uncheck`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`Frame.waitForTimeout`,{title:`Wait for timeout`,snapshot:!0}],[`Frame.waitForFunction`,{title:`Wait for function`,snapshot:!0,pause:!0}],[`Frame.waitForSelector`,{title:`Wait for selector`,snapshot:!0}],[`Frame.expect`,{title:`Expect "{expression}"`,snapshot:!0,pause:!0}],[`JSHandle.dispose`,{internal:!0}],[`ElementHandle.dispose`,{internal:!0}],[`JSHandle.evaluateExpression`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`ElementHandle.evaluateExpression`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`JSHandle.evaluateExpressionHandle`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`ElementHandle.evaluateExpressionHandle`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`JSHandle.getPropertyList`,{title:`Get property list`,group:`getter`}],[`ElementHandle.getPropertyList`,{title:`Get property list`,group:`getter`}],[`JSHandle.getProperty`,{title:`Get JS property`,group:`getter`}],[`ElementHandle.getProperty`,{title:`Get JS property`,group:`getter`}],[`JSHandle.jsonValue`,{title:`Get JSON value`,group:`getter`}],[`ElementHandle.jsonValue`,{title:`Get JSON value`,group:`getter`}],[`ElementHandle.evalOnSelector`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`ElementHandle.evalOnSelectorAll`,{title:`Evaluate`,snapshot:!0,pause:!0}],[`ElementHandle.boundingBox`,{title:`Get bounding box`,snapshot:!0,pause:!0}],[`ElementHandle.check`,{title:`Check`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.click`,{title:`Click`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.contentFrame`,{title:`Get content frame`,group:`getter`}],[`ElementHandle.dblclick`,{title:`Double click`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.dispatchEvent`,{title:`Dispatch event`,slowMo:!0,snapshot:!0,pause:!0}],[`ElementHandle.fill`,{title:`Fill "{value}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.focus`,{title:`Focus`,slowMo:!0,snapshot:!0,pause:!0}],[`ElementHandle.getAttribute`,{title:`Get attribute`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.hover`,{title:`Hover`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.innerHTML`,{title:`Get HTML`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.innerText`,{title:`Get inner text`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.inputValue`,{title:`Get input value`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.isChecked`,{title:`Is checked`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.isDisabled`,{title:`Is disabled`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.isEditable`,{title:`Is editable`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.isEnabled`,{title:`Is enabled`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.isHidden`,{title:`Is hidden`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.isVisible`,{title:`Is visible`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.ownerFrame`,{title:`Get owner frame`,group:`getter`}],[`ElementHandle.press`,{title:`Press "{key}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.querySelector`,{title:`Query selector`,snapshot:!0}],[`ElementHandle.querySelectorAll`,{title:`Query selector all`,snapshot:!0}],[`ElementHandle.screenshot`,{title:`Screenshot`,snapshot:!0,pause:!0}],[`ElementHandle.scrollIntoViewIfNeeded`,{title:`Scroll into view`,slowMo:!0,snapshot:!0,pause:!0}],[`ElementHandle.selectOption`,{title:`Select option`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.selectText`,{title:`Select text`,slowMo:!0,snapshot:!0,pause:!0}],[`ElementHandle.setInputFiles`,{title:`Set input files`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.tap`,{title:`Tap`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.textContent`,{title:`Get text content`,snapshot:!0,pause:!0,group:`getter`}],[`ElementHandle.type`,{title:`Type`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.uncheck`,{title:`Uncheck`,slowMo:!0,snapshot:!0,pause:!0,input:!0,isAutoWaiting:!0}],[`ElementHandle.waitForElementState`,{title:`Wait for state`,snapshot:!0,pause:!0}],[`ElementHandle.waitForSelector`,{title:`Wait for selector`,snapshot:!0}],[`LocalUtils.zip`,{internal:!0}],[`LocalUtils.harOpen`,{internal:!0}],[`LocalUtils.harLookup`,{internal:!0}],[`LocalUtils.harClose`,{internal:!0}],[`LocalUtils.harUnzip`,{internal:!0}],[`LocalUtils.connect`,{internal:!0}],[`LocalUtils.tracingStarted`,{internal:!0}],[`LocalUtils.addStackToTracingNoReply`,{internal:!0}],[`LocalUtils.traceDiscarded`,{internal:!0}],[`LocalUtils.globToRegex`,{internal:!0}],[`Request.response`,{internal:!0}],[`Request.rawRequestHeaders`,{internal:!0}],[`Route.redirectNavigationRequest`,{internal:!0}],[`Route.abort`,{title:`Abort request`,group:`route`}],[`Route.continue`,{title:`Continue request`,group:`route`}],[`Route.fulfill`,{title:`Fulfill request`,group:`route`}],[`WebSocketRoute.connect`,{title:`Connect WebSocket to server`,group:`route`}],[`WebSocketRoute.ensureOpened`,{internal:!0}],[`WebSocketRoute.sendToPage`,{title:`Send WebSocket message`,group:`route`}],[`WebSocketRoute.sendToServer`,{title:`Send WebSocket message`,group:`route`}],[`WebSocketRoute.closePage`,{internal:!0}],[`WebSocketRoute.closeServer`,{internal:!0}],[`Response.body`,{title:`Get response body`,group:`getter`}],[`Response.securityDetails`,{internal:!0}],[`Response.serverAddr`,{internal:!0}],[`Response.rawResponseHeaders`,{internal:!0}],[`Response.httpVersion`,{internal:!0}],[`Response.sizes`,{internal:!0}],[`Page.addInitScript`,{title:`Add init script`,group:`configuration`}],[`Page.close`,{title:`Close page`,pause:!0}],[`Page.runBeforeUnload`,{title:`Run beforeunload`,pause:!0}],[`Page.clearConsoleMessages`,{title:`Clear console messages`}],[`Page.consoleMessages`,{title:`Get console messages`,group:`getter`}],[`Page.emulateMedia`,{title:`Emulate media`,snapshot:!0,pause:!0}],[`Page.exposeBinding`,{title:`Expose binding`,group:`configuration`}],[`Page.goBack`,{title:`Go back`,slowMo:!0,snapshot:!0,pause:!0}],[`Page.goForward`,{title:`Go forward`,slowMo:!0,snapshot:!0,pause:!0}],[`Page.requestGC`,{title:`Request garbage collection`,group:`configuration`}],[`Page.registerLocatorHandler`,{title:`Register locator handler`}],[`Page.resolveLocatorHandlerNoReply`,{internal:!0}],[`Page.unregisterLocatorHandler`,{title:`Unregister locator handler`}],[`Page.reload`,{title:`Reload`,slowMo:!0,snapshot:!0,pause:!0}],[`Page.expectScreenshot`,{title:`Expect screenshot`,snapshot:!0,pause:!0}],[`Page.screenshot`,{title:`Screenshot`,snapshot:!0,pause:!0}],[`Page.setExtraHTTPHeaders`,{title:`Set extra HTTP headers`,group:`configuration`}],[`Page.setNetworkInterceptionPatterns`,{title:`Route requests`,group:`route`}],[`Page.setWebSocketInterceptionPatterns`,{title:`Route WebSockets`,group:`route`}],[`Page.setViewportSize`,{title:`Set viewport size`,snapshot:!0,pause:!0}],[`Page.keyboardDown`,{title:`Key down "{key}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.keyboardUp`,{title:`Key up "{key}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.keyboardInsertText`,{title:`Insert "{text}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.keyboardType`,{title:`Type "{text}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.keyboardPress`,{title:`Press "{key}"`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.mouseMove`,{title:`Mouse move`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.mouseDown`,{title:`Mouse down`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.mouseUp`,{title:`Mouse up`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.mouseClick`,{title:`Click`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.mouseWheel`,{title:`Mouse wheel`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.touchscreenTap`,{title:`Tap`,slowMo:!0,snapshot:!0,pause:!0,input:!0}],[`Page.clearPageErrors`,{title:`Clear page errors`}],[`Page.pageErrors`,{title:`Get page errors`,group:`getter`}],[`Page.pdf`,{title:`PDF`}],[`Page.requests`,{title:`Get network requests`,group:`getter`}],[`Page.startJSCoverage`,{title:`Start JS coverage`,group:`configuration`}],[`Page.stopJSCoverage`,{title:`Stop JS coverage`,group:`configuration`}],[`Page.startCSSCoverage`,{title:`Start CSS coverage`,group:`configuration`}],[`Page.stopCSSCoverage`,{title:`Stop CSS coverage`,group:`configuration`}],[`Page.bringToFront`,{title:`Bring to front`}],[`Page.pickLocator`,{title:`Pick locator`,group:`configuration`}],[`Page.cancelPickLocator`,{title:`Cancel pick locator`,group:`configuration`}],[`Page.hideHighlight`,{title:`Hide all element highlights`,group:`configuration`}],[`Page.screencastShowOverlay`,{title:`Show overlay`,group:`configuration`}],[`Page.screencastRemoveOverlay`,{title:`Remove overlay`,group:`configuration`}],[`Page.screencastChapter`,{title:`Show chapter overlay`,group:`configuration`}],[`Page.screencastSetOverlayVisible`,{title:`Set overlay visibility`,group:`configuration`}],[`Page.screencastShowActions`,{title:`Show actions`,group:`configuration`}],[`Page.screencastHideActions`,{title:`Remove actions`,group:`configuration`}],[`Page.screencastStart`,{title:`Start screencast`,group:`configuration`}],[`Page.screencastFrameAck`,{internal:!0}],[`Page.screencastStop`,{title:`Stop screencast`,group:`configuration`}],[`Page.updateSubscription`,{internal:!0}],[`Page.setDockTile`,{internal:!0}],[`Page.webStorageItems`,{title:`Get WebStorage items`,group:`getter`}],[`Page.webStorageGetItem`,{title:`Get WebStorage item`,group:`getter`}],[`Page.webStorageSetItem`,{title:`Set WebStorage item`,group:`configuration`}],[`Page.webStorageRemoveItem`,{title:`Remove WebStorage item`,group:`configuration`}],[`Page.webStorageClear`,{title:`Clear WebStorage`,group:`configuration`}],[`Root.initialize`,{internal:!0}],[`Playwright.newRequest`,{title:`Create request context`}],[`DebugController.initialize`,{internal:!0}],[`DebugController.setReportStateChanged`,{internal:!0}],[`DebugController.setRecorderMode`,{internal:!0}],[`DebugController.highlight`,{internal:!0}],[`DebugController.hideHighlight`,{internal:!0}],[`DebugController.resume`,{internal:!0}],[`DebugController.kill`,{internal:!0}],[`SocksSupport.socksConnected`,{internal:!0}],[`SocksSupport.socksFailed`,{internal:!0}],[`SocksSupport.socksData`,{internal:!0}],[`SocksSupport.socksError`,{internal:!0}],[`SocksSupport.socksEnd`,{internal:!0}],[`JsonPipe.send`,{internal:!0}],[`JsonPipe.close`,{internal:!0}],[`CDPSession.send`,{title:`Send CDP command`,group:`configuration`}],[`CDPSession.detach`,{title:`Detach CDP session`,group:`configuration`}],[`BindingCall.reject`,{internal:!0}],[`BindingCall.resolve`,{internal:!0}],[`Debugger.requestPause`,{title:`Pause on next call`,group:`configuration`}],[`Debugger.resume`,{title:`Resume`,group:`configuration`}],[`Debugger.next`,{title:`Step to next call`,group:`configuration`}],[`Debugger.runTo`,{title:`Run to location`,group:`configuration`}],[`Dialog.accept`,{title:`Accept dialog`}],[`Dialog.dismiss`,{title:`Dismiss dialog`}],[`Tracing.tracingStart`,{title:`Start tracing`,group:`configuration`}],[`Tracing.tracingStartChunk`,{title:`Start tracing`,group:`configuration`}],[`Tracing.tracingGroup`,{title:`Trace "{name}"`}],[`Tracing.tracingGroupEnd`,{title:`Group end`}],[`Tracing.tracingStopChunk`,{title:`Stop tracing`,group:`configuration`}],[`Tracing.tracingStop`,{title:`Stop tracing`,group:`configuration`}],[`Tracing.harStart`,{internal:!0}],[`Tracing.harExport`,{internal:!0}],[`Worker.disconnect`,{title:`Disconnect from worker`}],[`Worker.evaluateExpression`,{title:`Evaluate`}],[`Worker.evaluateExpressionHandle`,{title:`Evaluate`}],[`Worker.updateSubscription`,{internal:!0}]]);function Ae(e){return ke.get(e.type+`.`+e.method)}function je(e,t){return Me(e,t)?.replaceAll(` -`,`\\n`)}function Me(e,t){if(e)for(let n of t.split(`|`)){if(n===`url`)try{let t=new URL(e[n]);return t.protocol===`data:`?t.protocol:[`about:`,`chrome:`,`edge:`].includes(t.protocol)?e[n]:t.pathname+t.search}catch{if(e[n]!==void 0)return e[n]}if(n===`timeNumber`&&e[n]!==void 0)return new Date(e[n]).toString();let t=Ne(e,n);if(t!==void 0)return t}}function Ne(e,t){let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}if(r!==void 0)return String(r)}function Pe(e){return(e.title??Ae(e)?.title??e.method).replace(/\{([^}]+)\}/g,(t,n)=>je(e.params,n)??t)}function Fe(e){return Ae(e)?.group}var Ie=Symbol(`context`),Le=Symbol(`nextInContext`),Re=Symbol(`prevByEndTime`),ze=Symbol(`nextByStartTime`),Be=Symbol(`events`),Ve=class{constructor(e,t){this.pagerefToTitle=new Map,this.contextToTitle=new Map,t.forEach(e=>He(e));let n=t.find(e=>e.origin===`library`);this.traceUri=e,this.browserName=n?.browserName||``,this.sdkLanguage=n?.sdkLanguage,this.channel=n?.channel,this.testIdAttributeName=n?.testIdAttributeName,this.platform=n?.platform||``,this.playwrightVersion=t.find(e=>e.playwrightVersion)?.playwrightVersion,this.title=n?.title||``,this.options=n?.options||{},this.testTimeout=t.find(e=>e.origin===`testRunner`)?.testTimeout,this.actions=Ue(t),this.pages=[].concat(...t.map(e=>e.pages)),this.wallTime=t.map(e=>e.wallTime).reduce((e,t)=>Math.min(e||Number.MAX_VALUE,t),Number.MAX_VALUE),this.startTime=t.map(e=>e.startTime).reduce((e,t)=>Math.min(e,t),Number.MAX_VALUE),this.endTime=t.map(e=>e.endTime).reduce((e,t)=>Math.max(e,t),Number.MIN_VALUE),this.events=[].concat(...t.map(e=>e.events)),this.stdio=[].concat(...t.map(e=>e.stdio)),this.errors=[].concat(...t.map(e=>e.errors)),this.hasSource=t.some(e=>e.hasSource),this.hasStepData=t.some(e=>e.origin===`testRunner`),this.resources=[...t.map(e=>e.resources)].flat().map(e=>({...e,id:`${e.pageref}-${e.startedDateTime}-${e.request.url}`})),this.attachments=this.actions.flatMap(t=>t.attachments?.map(n=>({...n,callId:t.callId,traceUri:e}))??[]),this.visibleAttachments=this.attachments.filter(e=>!e.name.startsWith(`_`)),this.pages.forEach((e,t)=>this.pagerefToTitle.set(e.pageId,`page#`+(t+1)));let r=0,i=0;for(let e of t)e.resources.some(e=>e._apiRequest)?this.contextToTitle.set(e,`api#`+ ++r):this.contextToTitle.set(e,`browser#`+ ++i);this.events.sort((e,t)=>e.time-t.time),this.resources.sort((e,t)=>e._monotonicTime-t._monotonicTime),this.errorDescriptors=this.hasStepData?this._errorDescriptorsFromTestRunner():this._errorDescriptorsFromActions(),this.sources=tt(this.actions,this.errorDescriptors),this.actionCounters=new Map;for(let e of this.actions)e.group=e.group??Fe({type:e.class,method:e.method}),e.group&&this.actionCounters.set(e.group,1+(this.actionCounters.get(e.group)||0))}createRelativeUrl(e){let t=new URL(`http://localhost/`+e);return t.searchParams.set(`trace`,this.traceUri),t.toString().substring(17)}failedAction(){return this.actions.findLast(e=>e.error)}filteredActions(e){let t=new Set(e);return this.actions.filter(e=>!e.group||t.has(e.group))}renderActionTree(e){let{rootItem:t}=Je(this.filteredActions(e??[])),n=[],r=(e,t)=>{let i=Pe({...e.action,type:e.action.class});n.push(`${t}${i||e.id}`);for(let n of e.children)r(n,t+` `)};return t.children.forEach(e=>r(e,``)),n}_errorDescriptorsFromActions(){let e=[];for(let t of this.actions||[])t.error?.message&&e.push({action:t,stack:t.stack,message:t.error.message});return e}_errorDescriptorsFromTestRunner(){return this.errors.filter(e=>!!e.message).map((e,t)=>({stack:e.stack,message:e.message}))}};function He(e){for(let t of e.pages)t[Ie]=e;for(let t=0;t=0;n--){let r=e.actions[n];r[Le]=t,r.class!==`Route`&&(t=r)}for(let t of e.events)t[Ie]=e;for(let t of e.resources)t[Ie]=e}function Ue(e){let t=[],n=Ge(e);t.push(...n),t.sort((e,t)=>t.parentId===e.callId?1:e.parentId===t.callId?-1:e.endTime-t.endTime);for(let e=1;et.parentId===e.callId?-1:e.parentId===t.callId?1:e.startTime-t.startTime);for(let e=0;e+1e.origin===`library`),r=e.filter(e=>e.origin===`testRunner`);if(!r.length||!n.length)return e.map(e=>e.actions.map(t=>({...t,context:e}))).flat();for(let e of n)for(let n of e.actions)t.set(n.stepId||`tmp-step@${++We}`,{...n,context:e});let i=qe(r,t);i&&Ke(n,i);let a=new Map;for(let e of r)for(let n of e.actions){let r=n.stepId&&t.get(n.stepId);if(r){a.set(n.callId,r.callId),n.error&&(r.error=n.error),n.attachments&&(r.attachments=n.attachments),n.annotations&&(r.annotations=n.annotations),n.parentId&&(r.parentId=a.get(n.parentId)??n.parentId),n.group&&(r.group=n.group),r.startTime=n.startTime,r.endTime=n.endTime;continue}n.parentId&&=a.get(n.parentId)??n.parentId,t.set(n.stepId||`tmp-step@${++We}`,{...n,context:e})}return[...t.values()]}function Ke(e,t){for(let n of e){n.startTime+=t,n.endTime+=t;for(let e of n.actions)e.startTime&&(e.startTime+=t),e.endTime&&(e.endTime+=t);for(let e of n.events)e.time+=t;for(let e of n.stdio)e.timestamp+=t;for(let e of n.pages)for(let n of e.screencastFrames)n.timestamp+=t;for(let e of n.resources)e._monotonicTime&&(e._monotonicTime+=t)}}function qe(e,t){for(let n of e)for(let e of n.actions){if(!e.startTime)continue;let n=e.stepId?t.get(e.stepId):void 0;if(n)return e.startTime-n.startTime}return 0}function Je(e){let t=new Map;for(let n of e)t.set(n.callId,{id:n.callId,parent:void 0,children:[],action:n});let n={action:{...nt},id:``,parent:void 0,children:[]};for(let e of t.values()){n.action.startTime=Math.min(n.action.startTime,e.action.startTime),n.action.endTime=Math.max(n.action.endTime,e.action.endTime);let r=e.action.parentId&&t.get(e.action.parentId)||n;r.children.push(e),e.parent=r}let r=e=>{for(let t of e.children)t.action.stack=t.action.stack??e.action.stack,r(t)};return r(n),{rootItem:n,itemMap:t}}function Ye(e){return e[Ie]}function Xe(e){return e[Le]}function Ze(e){return e[Re]}function Qe(e){return e[ze]}function $e(e){let t=0,n=0;for(let r of et(e)){if(r.type===`console`){let e=r.messageType;e===`warning`?++n:e===`error`&&++t}r.type===`event`&&r.method===`pageError`&&++t}return{errors:t,warnings:n}}function et(e){let t=e[Be];if(t)return t;let n=Xe(e);return t=Ye(e).events.filter(t=>t.time>=e.startTime&&(!n||t.time{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),it=b(((e,t)=>{t.exports=rt()})),M=it(),at=50,ot=({sidebarSize:e,sidebarHidden:t=!1,sidebarIsFirst:n=!1,orientation:r=`vertical`,minSidebarSize:i=at,settingName:a,sidebar:o,main:s})=>{let c=Math.max(i,e)*window.devicePixelRatio,[l,u]=ae(a?a+`.`+r+`:size`:void 0,c),[d,f]=ae(a?a+`.`+r+`:size`:void 0,c),[p,m]=T.useState(null),[h,g]=E(),_;r===`vertical`?(_=d/window.devicePixelRatio,h&&h.height<_&&(_=h.height-10)):(_=l/window.devicePixelRatio,h&&h.width<_&&(_=h.width-10)),document.body.style.userSelect=p?`none`:`inherit`;let v={};return v=r===`vertical`?n?{top:p?0:_-4,bottom:p?0:void 0,height:p?`initial`:8}:{bottom:p?0:_-4,top:p?0:void 0,height:p?`initial`:8}:n?{left:p?0:_-4,right:p?0:void 0,width:p?`initial`:8}:{right:p?0:_-4,left:p?0:void 0,width:p?`initial`:8},(0,M.jsxs)(`div`,{className:k(`split-view`,r,n&&`sidebar-first`),ref:g,children:[(0,M.jsx)(`div`,{className:`split-view-main`,children:s}),!t&&(0,M.jsx)(`div`,{style:{flexBasis:_},className:`split-view-sidebar`,children:o}),!t&&(0,M.jsx)(`div`,{style:v,className:`split-view-resizer`,onMouseDown:e=>m({offset:r===`vertical`?e.clientY:e.clientX,size:_}),onMouseUp:()=>m(null),onMouseMove:e=>{if(!e.buttons)m(null);else if(p){let t=(r===`vertical`?e.clientY:e.clientX)-p.offset,a=n?p.size+t:p.size-t,o=e.target.parentElement.getBoundingClientRect(),s=Math.min(Math.max(i,a),(r===`vertical`?o.height:o.width)-i);r===`vertical`?f(s*window.devicePixelRatio):u(s*window.devicePixelRatio)}}})]})};function st(e){if(e<0||!isFinite(e))return`-`;if(e===0)return`0ms`;if(e<1e3)return e.toFixed(0)+`ms`;let t=e/1e3;if(t<60)return t.toFixed(1)+`s`;let n=t/60;if(n<60)return n.toFixed(1)+`m`;let r=n/60;return r<24?r.toFixed(1)+`h`:(r/24).toFixed(1)+`d`}function ct(e){if(e<0||!isFinite(e))return`-`;if(e===0)return`0`;if(e<1e3)return e.toFixed(0);let t=e/1024;if(t<1e3)return t.toFixed(1)+`K`;let n=t/1024;return n<1e3?n.toFixed(1)+`M`:(n/1024).toFixed(1)+`G`}var lt=function(e,t,n){return e>=t&&e<=n};function ut(e){return lt(e,48,57)}function dt(e){return ut(e)||lt(e,65,70)||lt(e,97,102)}function ft(e){return lt(e,65,90)}function pt(e){return lt(e,97,122)}function mt(e){return ft(e)||pt(e)}function ht(e){return e>=128}function gt(e){return mt(e)||ht(e)||e===95}function _t(e){return gt(e)||ut(e)||e===45}function vt(e){return lt(e,0,8)||e===11||lt(e,14,31)||e===127}function yt(e){return e===10}function bt(e){return yt(e)||e===9||e===32}var xt=1114111,St=class extends Error{constructor(e){super(e),this.name=`InvalidCharacterError`}};function Ct(e){let t=[];for(let n=0;n=t.length?-1:t[e]},d=function(e){if(e===void 0&&(e=1),e>3)throw`Spec Error: no more than three codepoints of lookahead.`;return u(n+e)},f=function(e){return e===void 0&&(e=1),n+=e,i=u(n),yt(i)?c():o+=e,!0},p=function(){return--n,yt(i)?(--a,o=s):--o,l.line=a,l.column=o,!0},m=function(e){return e===void 0&&(e=i),e===-1},h=function(){if(g(),f(),bt(i)){for(;bt(d());)f();return new kt}else if(i===34)return y();else if(i===35)if(_t(d())||S(d(1),d(2))){let e=new en(``);return w(d(1),d(2),d(3))&&(e.type=`id`),e.value=E(),e}else return new Yt(i);else if(i===36)return d()===61?(f(),new Gt):new Yt(i);else if(i===39)return y();else if(i===40)return new Bt;else if(i===41)return new Vt;else if(i===42)return d()===61?(f(),new Kt):new Yt(i);else if(i===43)return te()?(p(),_()):new Yt(i);else if(i===44)return new Pt;else if(i===45)return te()?(p(),_()):d(1)===45&&d(2)===62?(f(2),new jt):ee()?(p(),v()):new Yt(i);else if(i===46)return te()?(p(),_()):new Yt(i);else if(i===58)return new Mt;else if(i===59)return new Nt;else if(i===60)return d(1)===33&&d(2)===45&&d(3)===45?(f(3),new At):new Yt(i);else if(i===64)return w(d(1),d(2),d(3))?new $t(E()):new Yt(i);else if(i===91)return new Rt;else if(i===92)return C()?(p(),v()):new Yt(i);else if(i===93)return new zt;else if(i===94)return d()===61?(f(),new Wt):new Yt(i);else if(i===123)return new It;else if(i===124)return d()===61?(f(),new Ut):d()===124?(f(),new qt):new Yt(i);else if(i===125)return new Lt;else if(i===126)return d()===61?(f(),new Ht):new Yt(i);else if(ut(i))return p(),_();else if(gt(i))return p(),v();else if(m())return new Jt;else return new Yt(i)},g=function(){for(;d(1)===47&&d(2)===42;)for(f(2);;)if(f(),i===42&&d()===47){f();break}else if(m())return},_=function(){let e=ne();if(w(d(1),d(2),d(3))){let t=new on;return t.value=e.value,t.repr=e.repr,t.type=e.type,t.unit=E(),t}else if(d()===37){f();let t=new an;return t.value=e.value,t.repr=e.repr,t}else{let t=new rn;return t.value=e.value,t.repr=e.repr,t.type=e.type,t}},v=function(){let e=E();if(e.toLowerCase()===`url`&&d()===40){for(f();bt(d(1))&&bt(d(2));)f();return d()===34||d()===39||bt(d())&&(d(2)===34||d(2)===39)?new Qt(e):b()}else if(d()===40)return f(),new Qt(e);else return new Zt(e)},y=function(e){e===void 0&&(e=i);let t=``;for(;f();)if(i===e||m())return new tn(t);else if(yt(i))return p(),new Dt;else i===92?m(d())||(yt(d())?f():t+=wt(x())):t+=wt(i);throw Error(`Internal error`)},b=function(){let e=new nn(``);for(;bt(d());)f();if(m(d()))return e;for(;f();)if(i===41||m())return e;else if(bt(i)){for(;bt(d());)f();return d()===41||m(d())?(f(),e):(ie(),new Ot)}else if(i===34||i===39||i===40||vt(i))return ie(),new Ot;else if(i===92)if(C())e.value+=wt(x());else return ie(),new Ot;else e.value+=wt(i);throw Error(`Internal error`)},x=function(){if(f(),dt(i)){let e=[i];for(let t=0;t<5&&dt(d());t++)f(),e.push(i);bt(d())&&f();let t=parseInt(e.map(function(e){return String.fromCharCode(e)}).join(``),16);return t>xt&&(t=65533),t}else if(m())return 65533;else return i},S=function(e,t){return!(e!==92||yt(t))},C=function(){return S(i,d())},w=function(e,t,n){return e===45?gt(t)||t===45||S(t,n):gt(e)?!0:e===92?S(e,t):!1},ee=function(){return w(i,d(1),d(2))},T=function(e,t,n){return e===43||e===45?!!(ut(t)||t===46&&ut(n)):e===46?!!ut(t):!!ut(e)},te=function(){return T(i,d(1),d(2))},E=function(){let e=``;for(;f();)if(_t(i))e+=wt(i);else if(C())e+=wt(x());else return p(),e;throw Error(`Internal parse error`)},ne=function(){let e=``,t=`integer`;for((d()===43||d()===45)&&(f(),e+=wt(i));ut(d());)f(),e+=wt(i);if(d(1)===46&&ut(d(2)))for(f(),e+=wt(i),f(),e+=wt(i),t=`number`;ut(d());)f(),e+=wt(i);let n=d(1),r=d(2),a=d(3);if((n===69||n===101)&&ut(r))for(f(),e+=wt(i),f(),e+=wt(i),t=`number`;ut(d());)f(),e+=wt(i);else if((n===69||n===101)&&(r===43||r===45)&&ut(a))for(f(),e+=wt(i),f(),e+=wt(i),f(),e+=wt(i),t=`number`;ut(d());)f(),e+=wt(i);let o=re(e);return{type:t,value:o,repr:e}},re=function(e){return+e},ie=function(){for(;f();)if(i===41||m())return;else C()&&x()},ae=0;for(;!m(d());)if(r.push(h()),ae++,ae>t.length*2)throw Error(`I'm infinite-looping!`);return r}var Et=class{constructor(){this.tokenType=``}toJSON(){return{token:this.tokenType}}toString(){return this.tokenType}toSource(){return``+this}},Dt=class extends Et{constructor(...e){super(...e),this.tokenType=`BADSTRING`}},Ot=class extends Et{constructor(...e){super(...e),this.tokenType=`BADURL`}},kt=class extends Et{constructor(...e){super(...e),this.tokenType=`WHITESPACE`}toString(){return`WS`}toSource(){return` `}},At=class extends Et{constructor(...e){super(...e),this.tokenType=`CDO`}toSource(){return``}},Mt=class extends Et{constructor(...e){super(...e),this.tokenType=`:`}},Nt=class extends Et{constructor(...e){super(...e),this.tokenType=`;`}},Pt=class extends Et{constructor(...e){super(...e),this.tokenType=`,`}},Ft=class extends Et{constructor(...e){super(...e),this.value=``,this.mirror=``}},It=class extends Ft{constructor(){super(),this.tokenType=`{`,this.value=`{`,this.mirror=`}`}},Lt=class extends Ft{constructor(){super(),this.tokenType=`}`,this.value=`}`,this.mirror=`{`}},Rt=class extends Ft{constructor(){super(),this.tokenType=`[`,this.value=`[`,this.mirror=`]`}},zt=class extends Ft{constructor(){super(),this.tokenType=`]`,this.value=`]`,this.mirror=`[`}},Bt=class extends Ft{constructor(){super(),this.tokenType=`(`,this.value=`(`,this.mirror=`)`}},Vt=class extends Ft{constructor(){super(),this.tokenType=`)`,this.value=`)`,this.mirror=`(`}},Ht=class extends Et{constructor(...e){super(...e),this.tokenType=`~=`}},Ut=class extends Et{constructor(...e){super(...e),this.tokenType=`|=`}},Wt=class extends Et{constructor(...e){super(...e),this.tokenType=`^=`}},Gt=class extends Et{constructor(...e){super(...e),this.tokenType=`$=`}},Kt=class extends Et{constructor(...e){super(...e),this.tokenType=`*=`}},qt=class extends Et{constructor(...e){super(...e),this.tokenType=`||`}},Jt=class extends Et{constructor(...e){super(...e),this.tokenType=`EOF`}toSource(){return``}},Yt=class extends Et{constructor(e){super(),this.tokenType=`DELIM`,this.value=``,this.value=wt(e)}toString(){return`DELIM(`+this.value+`)`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}toSource(){return this.value===`\\`?`\\ -`:this.value}},Xt=class extends Et{constructor(...e){super(...e),this.value=``}ASCIIMatch(e){return this.value.toLowerCase()===e.toLowerCase()}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}},Zt=class extends Xt{constructor(e){super(),this.tokenType=`IDENT`,this.value=e}toString(){return`IDENT(`+this.value+`)`}toSource(){return sn(this.value)}},Qt=class extends Xt{constructor(e){super(),this.tokenType=`FUNCTION`,this.value=e,this.mirror=`)`}toString(){return`FUNCTION(`+this.value+`)`}toSource(){return sn(this.value)+`(`}},$t=class extends Xt{constructor(e){super(),this.tokenType=`AT-KEYWORD`,this.value=e}toString(){return`AT(`+this.value+`)`}toSource(){return`@`+sn(this.value)}},en=class extends Xt{constructor(e){super(),this.tokenType=`HASH`,this.value=e,this.type=`unrestricted`}toString(){return`HASH(`+this.value+`)`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e}toSource(){return this.type===`id`?`#`+sn(this.value):`#`+cn(this.value)}},tn=class extends Xt{constructor(e){super(),this.tokenType=`STRING`,this.value=e}toString(){return`"`+ln(this.value)+`"`}},nn=class extends Xt{constructor(e){super(),this.tokenType=`URL`,this.value=e}toString(){return`URL(`+this.value+`)`}toSource(){return`url("`+ln(this.value)+`")`}},rn=class extends Et{constructor(){super(),this.tokenType=`NUMBER`,this.type=`integer`,this.repr=``}toString(){return this.type===`integer`?`INT(`+this.value+`)`:`NUMBER(`+this.value+`)`}toJSON(){let e=super.toJSON();return e.value=this.value,e.type=this.type,e.repr=this.repr,e}toSource(){return this.repr}},an=class extends Et{constructor(){super(),this.tokenType=`PERCENTAGE`,this.repr=``}toString(){return`PERCENTAGE(`+this.value+`)`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.repr=this.repr,e}toSource(){return this.repr+`%`}},on=class extends Et{constructor(){super(),this.tokenType=`DIMENSION`,this.type=`integer`,this.repr=``,this.unit=``}toString(){return`DIM(`+this.value+`,`+this.unit+`)`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e.repr=this.repr,e.unit=this.unit,e}toSource(){let e=this.repr,t=sn(this.unit);return t[0].toLowerCase()===`e`&&(t[1]===`-`||lt(t.charCodeAt(1),48,57))&&(t=`\\65 `+t.slice(1,t.length)),e+t}};function sn(e){e=``+e;let t=``,n=e.charCodeAt(0);for(let r=0;r=128||i===45||i===95||lt(i,48,57)||lt(i,65,90)||lt(i,97,122)?t+=e[r]:t+=`\\`+e[r]}return t}function cn(e){e=``+e;let t=``;for(let n=0;n=128||r===45||r===95||lt(r,48,57)||lt(r,65,90)||lt(r,97,122)?t+=e[n]:t+=`\\`+r.toString(16)+` `}return t}function ln(e){e=``+e;let t=``;for(let n=0;ne instanceof $t||e instanceof Dt||e instanceof Ot||e instanceof qt||e instanceof At||e instanceof jt||e instanceof Nt||e instanceof It||e instanceof Lt||e instanceof nn||e instanceof an);if(r)throw new un(`Unsupported token "${r.toSource()}" while parsing css selector "${e}". Did you mean to CSS.escape it?`);let i=0,a=new Set;function o(){return new un(`Unexpected token "${n[i].toSource()}" while parsing css selector "${e}". Did you mean to CSS.escape it?`)}function s(){for(;n[i]instanceof kt;)i++}function c(e=i){return n[e]instanceof Zt}function l(e=i){return n[e]instanceof tn}function u(e=i){return n[e]instanceof rn}function d(e=i){return n[e]instanceof Pt}function f(e=i){return n[e]instanceof Bt}function p(e=i){return n[e]instanceof Vt}function m(e=i){return n[e]instanceof Qt}function h(e=i){return n[e]instanceof Yt&&n[e].value===`*`}function g(e=i){return n[e]instanceof Jt}function _(e=i){return n[e]instanceof Yt&&[`>`,`+`,`~`].includes(n[e].value)}function v(e=i){return d(e)||p(e)||g(e)||_(e)||n[e]instanceof kt}function y(){let e=[b()];for(;s(),d();)i++,e.push(b());return e}function b(){return s(),u()||l()?n[i++].value:x()}function x(){let e={simples:[]};for(s(),_()?e.simples.push({selector:{functions:[{name:`scope`,args:[]}]},combinator:``}):e.simples.push({selector:S(),combinator:``});;){if(s(),_())e.simples[e.simples.length-1].combinator=n[i++].value,s();else if(v())break;e.simples.push({combinator:``,selector:S()})}return e}function S(){let e=``,r=[];for(;!v();)if(c()||h())e+=n[i++].toSource();else if(n[i]instanceof en)e+=n[i++].toSource();else if(n[i]instanceof Yt&&n[i].value===`.`)if(i++,c())e+=`.`+n[i++].toSource();else throw o();else if(n[i]instanceof Mt)if(i++,c())if(!t.has(n[i].value.toLowerCase()))e+=`:`+n[i++].toSource();else{let e=n[i++].value.toLowerCase();r.push({name:e,args:[]}),a.add(e)}else if(m()){let c=n[i++].value.toLowerCase();if(t.has(c)?(r.push({name:c,args:y()}),a.add(c)):e+=`:${c}(${C()})`,s(),!p())throw o();i++}else throw o();else if(n[i]instanceof Rt){for(e+=`[`,i++;!(n[i]instanceof zt)&&!g();)e+=n[i++].toSource();if(!(n[i]instanceof zt))throw o();e+=`]`,i++}else throw o();if(!e&&!r.length)throw o();return{css:e||void 0,functions:r}}function C(){let e=``,t=1;for(;!g()&&((f()||m())&&t++,p()&&t--,t);)e+=n[i++].toSource();return e}let w=y();if(!g())throw o();if(w.some(e=>typeof e!=`object`||!(`simples`in e)))throw new un(`Error while parsing css selector "${e}". Did you mean to CSS.escape it?`);return{selector:w,names:Array.from(a)}}var fn=new Set([`internal:has`,`internal:has-not`,`internal:and`,`internal:or`,`internal:chain`,`left-of`,`right-of`,`above`,`below`,`near`]),pn=new Set([`left-of`,`right-of`,`above`,`below`,`near`]),mn=new Set([`not`,`is`,`where`,`has`,`scope`,`light`,`visible`,`text`,`text-matches`,`text-is`,`has-text`,`above`,`below`,`right-of`,`left-of`,`near`,`nth-match`]);function hn(e){let t=yn(e),n=[];for(let e of t.parts){if(e.name===`css`||e.name===`css:light`){e.name===`css:light`&&(e.body=`:light(`+e.body+`)`);let t=dn(e.body,mn);n.push({name:`css`,body:t.selector,source:e.body});continue}if(fn.has(e.name)){let t,r;try{let n=JSON.parse(`[`+e.body+`]`);if(!Array.isArray(n)||n.length<1||n.length>2||typeof n[0]!=`string`)throw new un(`Malformed selector: ${e.name}=`+e.body);if(t=n[0],n.length===2){if(typeof n[1]!=`number`||!pn.has(e.name))throw new un(`Malformed selector: ${e.name}=`+e.body);r=n[1]}}catch{throw new un(`Malformed selector: ${e.name}=`+e.body)}let i={name:e.name,source:e.body,body:{parsed:hn(t),distance:r}},a=[...i.body.parsed.parts].reverse().find(e=>e.name===`internal:control`&&e.body===`enter-frame`),o=a?i.body.parsed.parts.indexOf(a):-1;o!==-1&&gn(i.body.parsed.parts.slice(0,o+1),n.slice(0,o+1))&&i.body.parsed.parts.splice(0,o+1),n.push(i);continue}n.push({...e,source:e.body})}if(fn.has(n[0].name))throw new un(`"${n[0].name}" selector cannot be first`);return{capture:t.capture,parts:n}}function gn(e,t){return _n({parts:e})===_n({parts:t})}function _n(e,t){return typeof e==`string`?e:e.parts.map((n,r)=>{let i=!0;!t&&r!==e.capture&&(n.name===`css`||n.name===`xpath`&&(n.source.startsWith(`//`)||n.source.startsWith(`..`)))&&(i=!1);let a=i?n.name+`=`:``;return`${r===e.capture?`*`:``}${a}${n.source}`}).join(` >> `)}function vn(e,t){let n=(e,r)=>{for(let i of e.parts)t(i,r),fn.has(i.name)&&n(i.body.parsed,!0)};n(e,!1)}function yn(e){let t=0,n,r=0,i={parts:[]},a=()=>{let n=e.substring(r,t).trim(),a=n.indexOf(`=`),o,s;a!==-1&&n.substring(0,a).trim().match(/^[a-zA-Z_0-9-+:*]+$/)?(o=n.substring(0,a).trim(),s=n.substring(a+1)):n.length>1&&n[0]===`"`&&n[n.length-1]===`"`||n.length>1&&n[0]===`'`&&n[n.length-1]===`'`?(o=`text`,s=n):/^\(*\/\//.test(n)||n.startsWith(`..`)?(o=`xpath`,s=n):(o=`css`,s=n);let c=!1;if(o[0]===`*`&&(c=!0,o=o.substring(1)),i.parts.push({name:o,body:s}),c){if(i.capture!==void 0)throw new un(`Only one of the selectors can capture using * modifier`);i.capture=i.parts.length-1}};if(!e.includes(`>>`))return t=e.length,a(),i;let o=()=>{let n=e.substring(r,t).match(/^\s*text\s*=(.*)$/);return!!n&&!!n[1]};for(;t`&&e[t+1]===`>`?(a(),t+=2,r=t):t++}return a(),i}function bn(e,t){let n=0,r=e.length===0,i=()=>e[n]||``,a=()=>{let t=i();return++n,r=n>=e.length,t},o=t=>{throw r?new un(`Unexpected end of selector while parsing selector \`${e}\``):new un(`Error while parsing selector \`${e}\` - unexpected symbol "${i()}" at position ${n}`+(t?` during `+t:``))};function s(){for(;!r&&/\s/.test(i());)a()}function c(e){return e>=`€`||e>=`0`&&e<=`9`||e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e>=`0`&&e<=`9`||e===`_`||e===`-`}function l(){let e=``;for(s();!r&&c(i());)e+=a();return e}function u(e){let t=a();for(t!==e&&o(`parsing quoted string`);!r&&i()!==e;)i()===`\\`&&a(),t+=a();return i()!==e&&o(`parsing quoted string`),t+=a(),t}function d(){a()!==`/`&&o(`parsing regular expression`);let t=``,n=!1;for(;!r;){if(i()===`\\`)t+=a(),r&&o(`parsing regular expression`);else if(n&&i()===`]`)n=!1;else if(!n&&i()===`[`)n=!0;else if(!n&&i()===`/`)break;t+=a()}a()!==`/`&&o(`parsing regular expression`);let s=``;for(;!r&&i().match(/[dgimsuvy]/);)s+=a();try{return new RegExp(t,s)}catch(t){throw new un(`Error while parsing selector \`${e}\`: ${t.message}`)}}function f(){let e=``;return s(),e=i()===`'`||i()===`"`?u(i()).slice(1,-1):l(),e||o(`parsing property path`),e}function p(){s();let e=``;return r||(e+=a()),!r&&e!==`=`&&(e+=a()),[`=`,`*=`,`^=`,`$=`,`|=`,`~=`].includes(e)||o(`parsing operator`),e}function m(){a();let n=[];for(n.push(f()),s();i()===`.`;)a(),n.push(f()),s();if(i()===`]`)return a(),{name:n.join(`.`),jsonPath:n,op:``,value:null,caseSensitive:!1};let l=p(),m,h=!0;if(s(),i()===`/`){if(l!==`=`)throw new un(`Error while parsing selector \`${e}\` - cannot use ${l} in attribute with regular expression`);m=d()}else if(i()===`'`||i()===`"`)m=u(i()).slice(1,-1),s(),i()===`i`||i()===`I`?(h=!1,a()):(i()===`s`||i()===`S`)&&(h=!0,a());else{for(m=``;!r&&(c(i())||i()===`+`||i()===`.`);)m+=a();m===`true`?m=!0:m===`false`?m=!1:t||(m=+m,Number.isNaN(m)&&o(`parsing attribute value`))}if(s(),i()!==`]`&&o(`parsing attribute value`),a(),l!==`=`&&typeof m!=`string`)throw new un(`Error while parsing selector \`${e}\` - cannot use ${l} in attribute with non-string matching value - ${m}`);return{name:n.join(`.`),jsonPath:n,op:l,value:m,caseSensitive:h}}let h={name:``,attributes:[]};for(h.name=l(),s();i()===`[`;)h.attributes.push(m()),s();if(r||o(void 0),!h.name&&!h.attributes.length)throw new un(`Error while parsing selector \`${e}\` - selector cannot be empty`);return h}function xn(e,t){try{let n=hn(t);return Sn(n)||Tn(new On[e],n,!1,1)[0]}catch{return t}}function Sn(e){let t=e.parts[e.parts.length-1];if(t?.name===`internal:describe`){let e=JSON.parse(t.body);if(typeof e==`string`)return e}}function Cn(e,t,n=!1){return wn(e,t,n,1)[0]}function wn(e,t,n=!1,r=20,i){try{return Tn(new On[e](i),hn(t),n,r)}catch{return[t]}}function Tn(e,t,n=!1,r=20){let i=[...t.parts],a=[],o=n?`frame-locator`:`page`;for(let t=0;te.generateLocator(s,`has`,t)));continue}if(n.name===`internal:has-not`){let t=Tn(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`hasNot`,t)));continue}if(n.name===`internal:and`){let t=Tn(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`and`,t)));continue}if(n.name===`internal:or`){let t=Tn(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`or`,t)));continue}if(n.name===`internal:chain`){let t=Tn(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`chain`,t)));continue}if(n.name===`internal:label`){let{exact:t,text:r}=Dn(n.body);a.push([e.generateLocator(s,`label`,r,{exact:t})]);continue}if(n.name===`internal:role`){let t=bn(n.body,!0),r={attrs:[]};for(let e of t.attributes)if(e.name===`name`){if(r.exact!==void 0&&r.exact!==e.caseSensitive)throw Error(`Conflicting exactness in internal:role selector: ${_n({parts:[n]})}`);r.exact=e.caseSensitive,r.name=e.value}else if(e.name===`description`){if(r.exact!==void 0&&r.exact!==e.caseSensitive)throw Error(`Conflicting exactness in internal:role selector: ${_n({parts:[n]})}`);r.exact=e.caseSensitive,r.description=e.value}else e.name===`level`&&typeof e.value==`string`&&(e.value=+e.value),r.attrs.push({name:e.name===`include-hidden`?`includeHidden`:e.name,value:e.value});a.push([e.generateLocator(s,`role`,t.name,r)]);continue}if(n.name===`internal:testid`){let{value:t}=bn(n.body,!0).attributes[0];a.push([e.generateLocator(s,`test-id`,t)]);continue}if(n.name===`internal:attr`){let{name:t,value:r,caseSensitive:i}=bn(n.body,!0).attributes[0],o=r,c=!!i;if(t===`placeholder`){a.push([e.generateLocator(s,`placeholder`,o,{exact:c})]);continue}if(t===`alt`){a.push([e.generateLocator(s,`alt`,o,{exact:c})]);continue}if(t===`title`){a.push([e.generateLocator(s,`title`,o,{exact:c})]);continue}}if(n.name===`internal:control`&&n.body===`enter-frame`){let n=a[a.length-1],r=i[t-1],c=n.map(t=>e.chainLocators([t,e.generateLocator(s,`frame`,``)]));[`xpath`,`css`].includes(r.name)&&c.push(e.generateLocator(s,`frame-locator`,_n({parts:[r]})),e.generateLocator(s,`frame-locator`,_n({parts:[r]},!0))),n.splice(0,n.length,...c),o=`frame-locator`;continue}let c=i[t+1],l=_n({parts:[n]}),u=e.generateLocator(s,`default`,l);if(c&&[`internal:has-text`,`internal:has-not-text`].includes(c.name)){let{exact:n,text:r}=Dn(c.body);if(!n){let i=e.generateLocator(`locator`,c.name===`internal:has-text`?`has-text`:`has-not-text`,r,{exact:n}),o={};c.name===`internal:has-text`?o.hasText=r:o.hasNotText=r;let d=e.generateLocator(s,`default`,l,o);a.push([e.chainLocators([u,i]),d]),t++;continue}}let d;if([`xpath`,`css`].includes(n.name)){let t=_n({parts:[n]},!0);d=e.generateLocator(s,`default`,t)}a.push([u,d].filter(Boolean))}return En(e,a,r)}function En(e,t,n){let r=t.map(()=>``),i=[],a=o=>{if(o===t.length)return i.push(e.chainLocators(r)),i.lengthJSON.parse(e));for(let e=0;ePn(t,s,d.expandedItems,h||0,o),[t,s,d,h,o]),v=T.useRef(null),[y,b]=T.useState();T.useEffect(()=>{u?.(y)},[u,y]),T.useEffect(()=>{let t=v.current;if(!t)return;let n=()=>{An.set(e,t.scrollTop)};return t.addEventListener(`scroll`,n,{passive:!0}),()=>t.removeEventListener(`scroll`,n)},[e]),T.useEffect(()=>{v.current&&(v.current.scrollTop=An.get(e)||0)},[e]),T.useEffect(()=>{if(g===void 0)return;let e=v.current?.querySelector(`[aria-selected="true"]`);e&&A(e)},[g]);let x=T.useCallback(e=>{let{expanded:t}=_.get(e);if(t){for(let t=s;t;t=t.parent)if(t===e){l?.(e);break}d.expandedItems.set(e.id,!1)}else d.expandedItems.set(e.id,!0);f({...d})},[_,s,l,d,f]),S=T.useCallback(e=>{let{expanded:t}=_.get(e),n=[e];for(;n.length;){let e=n.pop();n.push(...e.children),d.expandedItems.set(e.id,!t)}f({...d})},[_,d,f]);return(0,M.jsx)(`div`,{className:k(`tree-view vbox`,e+`-tree-view`),"data-testid":m||e+`-tree`,children:(0,M.jsxs)(`div`,{className:k(`tree-view-content`),role:_.size>0?`tree`:void 0,tabIndex:0,onKeyDown:e=>{if(s&&e.key===`Enter`){c?.(s);return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`&&e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;if(e.stopPropagation(),e.preventDefault(),s&&e.key===`ArrowLeft`){let{expanded:e,parent:t}=_.get(s);e?(d.expandedItems.set(s.id,!1),f({...d})):t&&l?.(t);return}if(s&&e.key===`ArrowRight`){s.children.length&&(d.expandedItems.set(s.id,!0),f({...d}));return}let t=s;if(e.key===`ArrowDown`&&(s?t=_.get(s).next:_.size&&(t=[..._.keys()][0])),e.key===`ArrowUp`){if(s)t=_.get(s).prev;else if(_.size){let e=[..._.keys()];t=e[e.length-1]}}u?.(void 0),t&&l?.(t),b(void 0)},ref:v,children:[p&&_.size===0&&(0,M.jsx)(`div`,{className:`tree-view-empty`,children:p}),t.children.map(e=>_.get(e)&&(0,M.jsx)(Mn,{item:e,treeItems:_,selectedItem:s,onSelected:l,onAccepted:c,isError:a,toggleExpanded:x,toggleSubtree:S,highlightedItem:y,setHighlightedItem:b,render:n,icon:i,title:r},e.id))]})})}function Mn({item:e,treeItems:t,selectedItem:n,onSelected:r,highlightedItem:i,setHighlightedItem:a,isError:o,onAccepted:s,toggleExpanded:c,toggleSubtree:l,render:u,title:d,icon:f}){let p=T.useId(),m=T.useRef(null);T.useEffect(()=>{n?.id===e.id&&m.current&&A(m.current)},[e.id,n?.id]);let h=t.get(e),g=h.depth,_=h.expanded,v=`codicon-blank`;typeof _==`boolean`&&(v=_?`codicon-chevron-down`:`codicon-chevron-right`);let y=u(e),b=_&&e.children.length?e.children:[],x=d?.(e),S=f?.(e)||`codicon-blank`;return(0,M.jsxs)(`div`,{ref:m,role:`treeitem`,"aria-selected":e===n,"aria-expanded":_,"aria-controls":p,title:x,className:`vbox`,style:{flex:`none`},children:[(0,M.jsxs)(`div`,{onDoubleClick:()=>s?.(e),className:k(`tree-view-entry`,n===e&&`selected`,i===e&&`highlighted`,o?.(e)&&`error`),onClick:()=>r?.(e),onMouseEnter:()=>a(e),onMouseLeave:()=>a(void 0),children:[g?Array(g).fill(0).map((e,t)=>(0,M.jsx)(`div`,{className:`tree-view-indent`},`indent-`+t)):void 0,(0,M.jsx)(`div`,{"aria-hidden":`true`,className:`codicon `+v,style:{minWidth:16,marginRight:4},onDoubleClick:e=>{e.preventDefault(),e.stopPropagation()},onClick:t=>{t.stopPropagation(),t.preventDefault(),t.altKey?l(e):c(e)}}),f&&(0,M.jsx)(`div`,{className:`codicon `+S,style:{minWidth:16,marginRight:4},"aria-label":`[`+S.replace(`codicon`,`icon`)+`]`}),typeof y==`string`?(0,M.jsx)(`div`,{style:{textOverflow:`ellipsis`,overflow:`hidden`},children:y}):y]}),!!b.length&&(0,M.jsx)(`div`,{id:p,role:`group`,children:b.map(e=>t.get(e)&&(0,M.jsx)(Mn,{item:e,treeItems:t,selectedItem:n,onSelected:r,onAccepted:s,isError:o,toggleExpanded:c,toggleSubtree:l,highlightedItem:i,setHighlightedItem:a,render:u,title:d,icon:f},e.id))})]})}function Nn(e,t,n){let r=n.get(e.id);if(r!==void 0)return r;let i=t(e),a=i===`if-needed`?e.children.some(e=>Nn(e,t,n)):i;return n.set(e.id,a),a}function Pn(e,t,n,r,i=()=>!0){let a=new Map;if(!Nn(e,i,a))return new Map;let o=new Map,s=new Set;for(let e=t?.parent;e;e=e.parent)s.add(e.id);let c=null,l=(t,u)=>{for(let d of t.children){if(!Nn(d,i,a))continue;let f=s.has(d.id)||n.get(d.id),p=r>u&&o.size<25&&f!==!1,m=d.children.length?f??p:void 0,h={depth:u,expanded:m,parent:e===t?null:t,next:null,prev:c};c&&(o.get(c).next=d),c=d,o.set(d,h),m&&l(d,u+1)}};return l(e,0),o}var Fn=T.forwardRef(function({children:e,title:t=``,icon:n,disabled:r=!1,toggled:i=!1,onClick:a=()=>{},style:o,testId:s,className:c,ariaLabel:l,errorBadge:u},d){let f=T.useId();return(0,M.jsxs)(`button`,{ref:d,className:k(c,`toolbar-button`,n,i&&`toggled`),onMouseDown:In,onClick:a,onDoubleClick:In,title:t,disabled:!!r,style:o,"data-testid":s,"aria-label":l||t,"aria-describedby":u?f:void 0,children:[n&&(0,M.jsx)(`span`,{className:`codicon codicon-${n}`,style:e?{marginRight:5}:{}}),e,u&&(0,M.jsx)(`span`,{id:f,className:`toolbar-button-error-badge`,title:u,"aria-label":u})]})}),In=e=>{e.stopPropagation(),e.preventDefault()};function Ln(e){return e===`scheduled`?`codicon-clock`:e===`running`?`codicon-loading`:e===`failed`?`codicon-error`:e===`passed`?`codicon-check`:e===`skipped`?`codicon-circle-slash`:`codicon-circle-outline`}function Rn(e){return e===`scheduled`?`Pending`:e===`running`?`Running`:e===`failed`?`Failed`:e===`passed`?`Passed`:e===`skipped`?`Skipped`:`Did not run`}var zn=jn,Bn=({actions:e,selectedAction:t,selectedTime:n,setSelectedTime:r,treeState:i,setTreeState:a,sdkLanguage:o,onSelected:s,onHighlighted:c,revealConsole:l,revealActionAttachment:u,isLive:d,actionFilterText:f})=>{let{rootItem:p,itemMap:m}=T.useMemo(()=>Je(e),[e]),{selectedItem:h}=T.useMemo(()=>({selectedItem:t?m.get(t.callId):void 0}),[m,t]),g=T.useCallback(e=>!!e.action.error?.message,[]),_=T.useCallback(e=>r({minimum:e.action.startTime,maximum:e.action.endTime}),[r]),v=T.useCallback(e=>{let t=!!u&&!!e.action.attachments?.length;return Vn(e.action,{sdkLanguage:o,revealConsole:l,revealActionAttachment:()=>u?.(e.action.callId),isLive:d,showDuration:!0,showBadges:!0,showAttachments:t})},[d,l,u,o]),y=T.useCallback(e=>{if(!(!n||!e.action||e.action.startTime<=n.maximum&&e.action.endTime>=n.minimum))return!1;let t=Hn(e.action).title;return f?t.toLowerCase().includes(f.toLowerCase())?!0:`if-needed`:!0},[n,f]),b=T.useCallback(e=>{s?.(e.action)},[s]),x=T.useCallback(e=>{c?.(e?.action)},[c]),[S,C]=T.useState(),w=T.useCallback(()=>{r(void 0),C(e=>(e??0)+1)},[r]);return(0,M.jsxs)(`div`,{className:`vbox action-list-container`,children:[n&&(0,M.jsxs)(`div`,{className:`action-list-show-all`,onClick:w,children:[(0,M.jsx)(`span`,{className:`codicon codicon-triangle-left`}),`Show all`]}),(0,M.jsx)(zn,{name:`actions`,rootItem:p,treeState:i,setTreeState:a,selectedItem:h,onSelected:b,onHighlighted:x,onAccepted:_,isError:g,isVisible:y,render:v,autoExpandDepth:f?.trim()?5:0,revealSelectedKey:S})]})},Vn=(e,t)=>{let{sdkLanguage:n,revealConsole:r,revealActionAttachment:i,isLive:a,showDuration:o,showBadges:s,showAttachments:c}=t,{errors:l,warnings:u}=$e(e),d=e.params.selector?xn(n||`javascript`,e.params.selector):void 0,f=e.class===`Test`&&e.method===`test.step`&&e.annotations?.some(e=>e.type===`skip`),p=``;e.endTime?p=st(e.endTime-e.startTime):e.error?p=`Timed out`:a||(p=`-`);let{elements:m,title:h}=Hn(e);return(0,M.jsxs)(`div`,{className:`action-title vbox`,children:[(0,M.jsxs)(`div`,{className:`hbox`,children:[(0,M.jsx)(`span`,{className:`action-title-method`,title:h,children:m}),(o||s||c||f)&&(0,M.jsx)(`div`,{className:`spacer`}),c&&(0,M.jsx)(Fn,{icon:`attach`,title:`Open Attachment`,onClick:()=>i?.()}),o&&!f&&(0,M.jsx)(`div`,{className:`action-duration`,children:p||(0,M.jsx)(`span`,{className:`codicon codicon-loading`})}),f&&(0,M.jsx)(`span`,{className:k(`action-skipped`,`codicon`,Ln(`skipped`)),title:`skipped`}),s&&(0,M.jsxs)(`div`,{className:`action-icons`,onClick:()=>r?.(),children:[!!l&&(0,M.jsxs)(`div`,{className:`action-icon`,children:[(0,M.jsx)(`span`,{className:`codicon codicon-error`}),(0,M.jsx)(`span`,{className:`action-icon-value`,children:l})]}),!!u&&(0,M.jsxs)(`div`,{className:`action-icon`,children:[(0,M.jsx)(`span`,{className:`codicon codicon-warning`}),(0,M.jsx)(`span`,{className:`action-icon-value`,children:u})]})]})]}),d&&(0,M.jsx)(`div`,{className:`action-title-selector`,title:d,children:d})]})};function Hn(e,t){let n=e.title??Ae({type:e.class,method:e.method})?.title??e.method;n=n.replace(/\n/g,` `);let r=[],i=[],a=0,o=/\{([^}]+)\}/g,s;for(;(s=o.exec(n))!==null;){let[t,o]=s,c=n.slice(a,s.index);r.push(c),i.push(c);let l=je(e.params,o);l===void 0?(r.push(t),i.push(t)):s.index===0?(r.push(l),i.push(l)):(r.push((0,M.jsx)(`span`,{className:`action-title-param`,children:l},r.length)),i.push(l)),a=s.index+t.length}if(a{let[n,r]=T.useState(`copy`),i=T.useCallback(()=>{(typeof e==`function`?e():Promise.resolve(e)).then(e=>{navigator.clipboard.writeText(e).then(()=>{r(`check`),setTimeout(()=>{r(`copy`)},3e3)},()=>{r(`close`)})},()=>{r(`close`)})},[e]);return(0,M.jsx)(Fn,{title:t||`Copy`,icon:n,onClick:i})},Wn=({value:e,description:t,copiedDescription:n=t,style:r})=>{let[i,a]=T.useState(!1);return(0,M.jsx)(Fn,{style:r,title:t,onClick:T.useCallback(async()=>{let t=typeof e==`function`?await e():e;await navigator.clipboard.writeText(t),a(!0),setTimeout(()=>a(!1),3e3)},[e]),className:`copy-to-clipboard-text-button`,children:i?n:t})},Gn=({text:e})=>(0,M.jsx)(`div`,{className:`fill`,style:{display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:24,fontWeight:`bold`,opacity:.5},children:e}),Kn=({action:e,startTimeOffset:t,sdkLanguage:n})=>{let r=T.useMemo(()=>Object.keys(e?.params??{}).filter(e=>e!==`info`),[e]);if(!e)return(0,M.jsx)(Gn,{text:`No action selected`});let i=st(e.startTime-t),{title:a}=Hn(e);return(0,M.jsxs)(`div`,{className:`call-tab`,children:[(0,M.jsx)(`div`,{className:`call-line`,children:a}),(0,M.jsx)(`div`,{className:`call-section`,children:`Time`}),Jn({name:`start`,type:`literal`,text:i}),Jn({name:`duration`,type:`literal`,text:qn(e)}),!!r.length&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{className:`call-section`,children:`Parameters`}),r.map(t=>Jn(Yn(e,t,e.params[t],n)))]}),!!e.result&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{className:`call-section`,children:`Return value`}),Object.keys(e.result).map(t=>Jn(Yn(e,t,e.result[t],n)))]})]})};function qn(e){return e.endTime?st(e.endTime-e.startTime):e.error?`Timed Out`:`Running`}function Jn(e){let t=e.text;return t.length>1e3&&(t=t.slice(0,1e3)+`…`),t=t.replace(/\n/g,`↵`),e.type===`string`&&(t=`"${t}"`),(0,M.jsxs)(`div`,{className:`call-line`,children:[e.name,`:`,(0,M.jsx)(`span`,{className:k(`call-value`,e.type),title:t,children:t}),[`literal`,`string`,`number`,`object`,`locator`].includes(e.type)&&(0,M.jsx)(Un,{value:e.text})]},e.name)}function Yn(e,t,n,r){let i=e.method.includes(`eval`)||e.method===`waitForFunction`;if(t===`files`)return{text:``,type:`string`,name:t};if((t===`eventInit`||t===`expectedValue`||t===`arg`&&i)&&(n=Xn(n.value,Array(10).fill({handle:``}))),t===`value`&&i&&(n=Xn(n,Array(10).fill({handle:``}))),t===`received`&&e.method===`expect`){let e=n&&typeof n==`object`&&(`value`in n||`ariaSnapshot`in n)?n.value:n;n=e===void 0?void 0:Xn(e,Array(10).fill({handle:``}))}if(t===`selector`)return{text:Cn(r||`javascript`,e.params.selector),type:`locator`,name:`locator`};let a=typeof n;return a!==`object`||n===null?{text:String(n),type:a,name:t}:n.guid?{text:``,type:`handle`,name:t}:{text:JSON.stringify(n),type:`object`,name:t}}function Xn(e,t){if(e.n!==void 0)return e.n;if(e.s!==void 0)return e.s;if(e.b!==void 0)return e.b;if(e.v!==void 0){if(e.v===`undefined`)return;if(e.v===`null`)return null;if(e.v===`NaN`)return NaN;if(e.v===`Infinity`)return 1/0;if(e.v===`-Infinity`)return-1/0;if(e.v===`-0`)return-0}if(e.d!==void 0)return new Date(e.d);if(e.r!==void 0)return new RegExp(e.r.p,e.r.f);if(e.a!==void 0)return e.a.map(e=>Xn(e,t));if(e.o!==void 0){let n={};for(let{k:r,v:i}of e.o)n[r]=Xn(i,t);return n}return e.h===void 0||t===void 0?``:t[e.h]}var Zn=new Map;function Qn({name:e,items:t=[],id:n,render:r,icon:i,isError:a,isWarning:o,isInfo:s,selectedItem:c,onAccepted:l,onSelected:u,onHighlighted:d,onIconClicked:f,noItemsMessage:p,dataTestId:m,notSelectable:h,ariaLabel:g}){let _=T.useRef(null),[v,y]=T.useState();return T.useEffect(()=>{d?.(v)},[d,v]),T.useEffect(()=>{let t=_.current;if(!t)return;let n=()=>{Zn.set(e,t.scrollTop)};return t.addEventListener(`scroll`,n,{passive:!0}),()=>t.removeEventListener(`scroll`,n)},[e]),T.useEffect(()=>{_.current&&(_.current.scrollTop=Zn.get(e)||0)},[e]),(0,M.jsx)(`div`,{className:k(`list-view vbox`,e+`-list-view`),role:t.length>0?`listbox`:void 0,"aria-label":g,children:(0,M.jsxs)(`div`,{className:k(`list-view-content`,h&&`not-selectable`),tabIndex:0,onKeyDown:e=>{if(c&&e.key===`Enter`){l?.(c,t.indexOf(c));return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.stopPropagation(),e.preventDefault();let n=c?t.indexOf(c):-1,r=n;e.key===`ArrowDown`&&(r=n===-1?0:Math.min(n+1,t.length-1)),e.key===`ArrowUp`&&(r=n===-1?t.length-1:Math.max(n-1,0));let i=_.current?.children.item(r);A(i||void 0),d?.(void 0),u?.(t[r],r),y(void 0)},ref:_,children:[p&&t.length===0&&(0,M.jsx)(`div`,{className:`list-view-empty`,children:p}),t.map((e,t)=>{let d=r(e,t);return(0,M.jsxs)(`div`,{onDoubleClick:()=>l?.(e,t),role:`option`,className:k(`list-view-entry`,c===e&&`selected`,!h&&v===e&&`highlighted`,a?.(e,t)&&`error`,o?.(e,t)&&`warning`,s?.(e,t)&&`info`),"aria-selected":c===e,onClick:()=>u?.(e,t),onMouseEnter:()=>y(e),onMouseLeave:()=>y(void 0),children:[i&&(0,M.jsx)(`div`,{className:`codicon `+(i(e,t)||`codicon-blank`),style:{minWidth:16,marginRight:4},onDoubleClick:e=>{e.preventDefault(),e.stopPropagation()},onClick:n=>{n.stopPropagation(),n.preventDefault(),f?.(e,t)}}),typeof d==`string`?(0,M.jsx)(`div`,{style:{textOverflow:`ellipsis`,overflow:`hidden`},children:d}):d]},n?.(e,t)||t)})]})})}var $n=Qn,er=({action:e,isLive:t})=>{let n=T.useMemo(()=>{if(!e||!e.log.length)return[];let n=e.log,r=e.context.wallTime-e.context.startTime,i=[];for(let a=0;a0?st(e.endTime-i):t?st(Date.now()-r-i):`-`}i.push({message:n[a].message,time:o})}return i},[e,t]);return n.length?(0,M.jsx)($n,{name:`log`,ariaLabel:`Log entries`,items:n,render:e=>(0,M.jsxs)(`div`,{className:`log-list-item`,children:[(0,M.jsx)(`span`,{className:`log-list-duration`,children:e.time}),e.message]}),notSelectable:!0}):(0,M.jsx)(Gn,{text:`No log entries`})};function tr(e,t){let n=/(\x1b\[(\d+(;\d+)*)m)|([^\x1b]+)/g,r=[],i,a={},o=!1,s=t?.fg,c=t?.bg;for(;(i=n.exec(e))!==null;){let[,,e,,n]=i;if(e)for(let n of e.split(`;`)){let e=+n;switch(e){case 0:a={};break;case 1:a[`font-weight`]=`bold`;break;case 2:a.opacity=`0.8`;break;case 3:a[`font-style`]=`italic`;break;case 4:a[`text-decoration`]=`underline`;break;case 7:o=!0;break;case 8:a.display=`none`;break;case 9:a[`text-decoration`]=`line-through`;break;case 22:delete a[`font-weight`],delete a[`font-style`],delete a.opacity,delete a[`text-decoration`];break;case 23:delete a[`font-weight`],delete a[`font-style`],delete a.opacity;break;case 24:delete a[`text-decoration`];break;case 27:o=!1;break;case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:s=nr[e-30];break;case 39:s=t?.fg;break;case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:c=nr[e-40];break;case 49:c=t?.bg;break;case 53:a[`text-decoration`]=`overline`;break;case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:s=rr[e-90];break;case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:c=rr[e-100];break}}else if(n){let e={...a},t=o?c:s;t!==void 0&&(e.color=t),o&&s&&(e[`background-color`]=s),r.push(`${ir(n)}`)}}return r.join(``)}var nr={0:`var(--vscode-terminal-ansiBlack)`,1:`var(--vscode-terminal-ansiRed)`,2:`var(--vscode-terminal-ansiGreen)`,3:`var(--vscode-terminal-ansiYellow)`,4:`var(--vscode-terminal-ansiBlue)`,5:`var(--vscode-terminal-ansiMagenta)`,6:`var(--vscode-terminal-ansiCyan)`,7:`var(--vscode-terminal-ansiWhite)`},rr={0:`var(--vscode-terminal-ansiBrightBlack)`,1:`var(--vscode-terminal-ansiBrightRed)`,2:`var(--vscode-terminal-ansiBrightGreen)`,3:`var(--vscode-terminal-ansiBrightYellow)`,4:`var(--vscode-terminal-ansiBrightBlue)`,5:`var(--vscode-terminal-ansiBrightMagenta)`,6:`var(--vscode-terminal-ansiBrightCyan)`,7:`var(--vscode-terminal-ansiBrightWhite)`};function ir(e){return e.replace(/[&"<>]/g,e=>({"&":`&`,'"':`"`,"<":`<`,">":`>`})[e])}function ar(e){return Object.entries(e).map(([e,t])=>`${e}: ${t}`).join(`; `)}var or=({error:e})=>(0,M.jsx)(`div`,{className:`error-message`,dangerouslySetInnerHTML:{__html:T.useMemo(()=>tr(e,{bg:`var(--vscode-editor-background)`,fg:`var(--vscode-editor-foreground)`}),[e])||``}}),sr=({cursor:e,onPaneMouseMove:t,onPaneMouseUp:n,onPaneDoubleClick:r})=>(T.useEffect(()=>{let i=document.createElement(`div`);return i.style.position=`fixed`,i.style.top=`0`,i.style.right=`0`,i.style.bottom=`0`,i.style.left=`0`,i.style.zIndex=`9999`,i.style.cursor=e,document.body.appendChild(i),t&&i.addEventListener(`mousemove`,t),n&&i.addEventListener(`mouseup`,n),r&&document.body.addEventListener(`dblclick`,r),()=>{t&&i.removeEventListener(`mousemove`,t),n&&i.removeEventListener(`mouseup`,n),r&&document.body.removeEventListener(`dblclick`,r),document.body.removeChild(i)}},[e,t,n,r]),(0,M.jsx)(M.Fragment,{})),cr={position:`absolute`,top:0,right:0,bottom:0,left:0},lr=({orientation:e,offsets:t,setOffsets:n,resizerColor:r,resizerWidth:i,minColumnWidth:a})=>{let o=a||0,[s,c]=T.useState(null),[l,u]=E(),d={position:`absolute`,right:e===`horizontal`?void 0:0,bottom:e===`horizontal`?0:void 0,width:e===`horizontal`?7:void 0,height:e===`horizontal`?void 0:7,borderTopWidth:e===`horizontal`?void 0:(7-i)/2,borderRightWidth:e===`horizontal`?(7-i)/2:void 0,borderBottomWidth:e===`horizontal`?void 0:(7-i)/2,borderLeftWidth:e===`horizontal`?(7-i)/2:void 0,borderColor:`transparent`,borderStyle:`solid`,cursor:e===`horizontal`?`ew-resize`:`ns-resize`};return(0,M.jsxs)(`div`,{style:{position:`absolute`,top:0,right:0,bottom:0,left:-(7-i)/2,zIndex:100,pointerEvents:`none`},ref:u,children:[!!s&&(0,M.jsx)(sr,{cursor:e===`horizontal`?`ew-resize`:`ns-resize`,onPaneMouseUp:()=>c(null),onPaneMouseMove:r=>{if(!r.buttons)c(null);else if(s){let i=e===`horizontal`?r.clientX-s.clientX:r.clientY-s.clientY,a=s.offset+i,c=s.index>0?t[s.index-1]:0,u=e===`horizontal`?l.width:l.height,d=Math.min(Math.max(c+o,a),u-o)-t[s.index];for(let e=s.index;e(0,M.jsx)(`div`,{style:{...d,top:e===`horizontal`?0:t,left:e===`horizontal`?t:0,pointerEvents:`initial`},onMouseDown:e=>c({clientX:e.clientX,clientY:e.clientY,offset:t,index:n}),children:(0,M.jsx)(`div`,{style:{...cr,background:r}})},n))]})};async function ur(e){let t=new Image;return e&&(t.src=e,await new Promise((e,n)=>{t.onload=e,t.onerror=e})),t}var dr={backgroundImage:`linear-gradient(45deg, #80808020 25%, transparent 25%), - linear-gradient(-45deg, #80808020 25%, transparent 25%), - linear-gradient(45deg, transparent 75%, #80808020 75%), - linear-gradient(-45deg, transparent 75%, #80808020 75%)`,backgroundSize:`20px 20px`,backgroundPosition:`0 0, 0 10px, 10px -10px, -10px 0px`,boxShadow:`rgb(0 0 0 / 10%) 0px 1.8px 1.9px, - rgb(0 0 0 / 15%) 0px 6.1px 6.3px, - rgb(0 0 0 / 10%) 0px -2px 4px, - rgb(0 0 0 / 15%) 0px -6.1px 12px, - rgb(0 0 0 / 25%) 0px 6px 12px`},fr=({diff:e,noTargetBlank:t,hideDetails:n})=>{let[r,i]=T.useState(e.diff?`diff`:`actual`),[a,o]=T.useState(!1),[s,c]=T.useState(null),[l,u]=T.useState(`Expected`),[d,f]=T.useState(null),[p,m]=T.useState(null),[h,g]=E();T.useEffect(()=>{(async()=>{c(await ur(e.expected?.attachment.path)),u(e.expected?.title||`Expected`),f(await ur(e.actual?.attachment.path)),m(await ur(e.diff?.attachment.path))})()},[e]);let _=s&&d&&p,v=_?Math.max(s.naturalWidth,d.naturalWidth,200):500,y=_?Math.max(s.naturalHeight,d.naturalHeight,200):500,b=Math.min(1,(h.width-30)/v),x=Math.min(1,(h.width-50)/v/2),S=v*b,C=y*b,w={flex:`none`,margin:`0 10px`,cursor:`pointer`,userSelect:`none`};return(0,M.jsx)(`div`,{"data-testid":`test-result-image-mismatch`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,flex:`auto`},ref:g,children:_&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{"data-testid":`test-result-image-mismatch-tabs`,style:{display:`flex`,margin:`10px 0 20px`},children:[e.diff&&(0,M.jsx)(`div`,{style:{...w,fontWeight:r===`diff`?600:`initial`},onClick:()=>i(`diff`),children:`Diff`}),(0,M.jsx)(`div`,{style:{...w,fontWeight:r===`actual`?600:`initial`},onClick:()=>i(`actual`),children:`Actual`}),(0,M.jsx)(`div`,{style:{...w,fontWeight:r===`expected`?600:`initial`},onClick:()=>i(`expected`),children:l}),(0,M.jsx)(`div`,{style:{...w,fontWeight:r===`sxs`?600:`initial`},onClick:()=>i(`sxs`),children:`Side by side`}),(0,M.jsx)(`div`,{style:{...w,fontWeight:r===`slider`?600:`initial`},onClick:()=>i(`slider`),children:`Slider`})]}),(0,M.jsxs)(`div`,{style:{display:`flex`,justifyContent:`center`,flex:`auto`,minHeight:C+60},children:[e.diff&&r===`diff`&&(0,M.jsx)(mr,{image:p,alt:`Diff`,hideSize:n,canvasWidth:S,canvasHeight:C,scale:b}),e.diff&&r===`actual`&&(0,M.jsx)(mr,{image:d,alt:`Actual`,hideSize:n,canvasWidth:S,canvasHeight:C,scale:b}),e.diff&&r===`expected`&&(0,M.jsx)(mr,{image:s,alt:l,hideSize:n,canvasWidth:S,canvasHeight:C,scale:b}),e.diff&&r===`slider`&&(0,M.jsx)(pr,{expectedImage:s,actualImage:d,hideSize:n,canvasWidth:S,canvasHeight:C,scale:b,expectedTitle:l}),e.diff&&r===`sxs`&&(0,M.jsxs)(`div`,{style:{display:`flex`},children:[(0,M.jsx)(mr,{image:s,title:l,hideSize:n,canvasWidth:x*v,canvasHeight:x*y,scale:x}),(0,M.jsx)(mr,{image:a?p:d,title:a?`Diff`:`Actual`,onClick:()=>o(!a),hideSize:n,canvasWidth:x*v,canvasHeight:x*y,scale:x})]}),!e.diff&&r===`actual`&&(0,M.jsx)(mr,{image:d,title:`Actual`,hideSize:n,canvasWidth:S,canvasHeight:C,scale:b}),!e.diff&&r===`expected`&&(0,M.jsx)(mr,{image:s,title:l,hideSize:n,canvasWidth:S,canvasHeight:C,scale:b}),!e.diff&&r===`sxs`&&(0,M.jsxs)(`div`,{style:{display:`flex`},children:[(0,M.jsx)(mr,{image:s,title:l,canvasWidth:x*v,canvasHeight:x*y,scale:x}),(0,M.jsx)(mr,{image:d,title:`Actual`,canvasWidth:x*v,canvasHeight:x*y,scale:x})]})]}),!n&&(0,M.jsxs)(`div`,{style:{alignSelf:`start`,lineHeight:`18px`,marginLeft:`15px`},children:[(0,M.jsx)(`div`,{children:e.diff&&(0,M.jsx)(`a`,{target:`_blank`,href:e.diff.attachment.path,rel:`noreferrer`,children:e.diff.attachment.name})}),(0,M.jsx)(`div`,{children:(0,M.jsx)(`a`,{target:t?``:`_blank`,href:e.actual.attachment.path,rel:`noreferrer`,children:e.actual.attachment.name})}),(0,M.jsx)(`div`,{children:(0,M.jsx)(`a`,{target:t?``:`_blank`,href:e.expected.attachment.path,rel:`noreferrer`,children:e.expected.attachment.name})})]})]})})},pr=({expectedImage:e,actualImage:t,canvasWidth:n,canvasHeight:r,scale:i,expectedTitle:a,hideSize:o})=>{let s={position:`absolute`,top:0,left:0},[c,l]=T.useState(n/2),u=e.naturalWidth===t.naturalWidth&&e.naturalHeight===t.naturalHeight;return(0,M.jsxs)(`div`,{style:{flex:`none`,display:`flex`,alignItems:`center`,flexDirection:`column`,userSelect:`none`},children:[!o&&(0,M.jsxs)(`div`,{style:{margin:5},children:[!u&&(0,M.jsx)(`span`,{style:{flex:`none`,margin:`0 5px`},children:`Actual `}),!u&&(0,M.jsx)(`span`,{children:t.naturalWidth}),!u&&(0,M.jsx)(`span`,{style:{flex:`none`,margin:`0 5px`},children:`x`}),!u&&(0,M.jsx)(`span`,{children:t.naturalHeight}),!u&&(0,M.jsxs)(`span`,{style:{flex:`none`,margin:`0 5px 0 15px`},children:[a,` `]}),(0,M.jsx)(`span`,{children:e.naturalWidth}),(0,M.jsx)(`span`,{style:{flex:`none`,margin:`0 5px`},children:`x`}),(0,M.jsx)(`span`,{children:e.naturalHeight})]}),(0,M.jsxs)(`div`,{style:{position:`relative`,width:n,height:r,margin:15,...dr},children:[(0,M.jsx)(lr,{orientation:`horizontal`,offsets:[c],setOffsets:e=>l(e[0]),resizerColor:`#57606a80`,resizerWidth:6}),(0,M.jsx)(`img`,{alt:a,style:{width:e.naturalWidth*i,height:e.naturalHeight*i},draggable:`false`,src:e.src}),(0,M.jsx)(`div`,{style:{...s,bottom:0,overflow:`hidden`,width:c,...dr},children:(0,M.jsx)(`img`,{alt:`Actual`,style:{width:t.naturalWidth*i,height:t.naturalHeight*i},draggable:`false`,src:t.src})})]})]})},mr=({image:e,title:t,alt:n,hideSize:r,canvasWidth:i,canvasHeight:a,scale:o,onClick:s})=>(0,M.jsxs)(`div`,{style:{flex:`none`,display:`flex`,alignItems:`center`,flexDirection:`column`},children:[!r&&(0,M.jsxs)(`div`,{style:{margin:5},children:[t&&(0,M.jsx)(`span`,{style:{flex:`none`,margin:`0 5px`},children:t}),(0,M.jsx)(`span`,{children:e.naturalWidth}),(0,M.jsx)(`span`,{style:{flex:`none`,margin:`0 5px`},children:`x`}),(0,M.jsx)(`span`,{children:e.naturalHeight})]}),(0,M.jsx)(`div`,{style:{display:`flex`,flex:`none`,width:i,height:a,margin:15,...dr},children:(0,M.jsx)(`img`,{width:e.naturalWidth*o,height:e.naturalHeight*o,alt:t||n,style:{cursor:s?`pointer`:`initial`},draggable:`false`,src:e.src,onClick:s})})]}),hr=`modulepreload`,gr=function(e,t){return new URL(e,t).href},_r={},vr=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=gr(t,n),t=s(t),t in _r)return;_r[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:hr,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},yr=({text:e,highlighter:t,mimeType:n,linkify:r,readOnly:i,highlight:a,revealLine:o,lineNumbers:s,isFocused:c,focusOnChange:l,wrapLines:u,onChange:d,dataTestId:f,placeholder:p})=>{let[m,h]=E(),[g]=T.useState(vr(()=>import(`./codeMirrorModule-rXmQmLUY.js`).then(e=>e.default),__vite__mapDeps([0,1]),import.meta.url)),_=T.useRef(null),[v,y]=T.useState();return T.useEffect(()=>{(async()=>{let e=await g;Sr(e);let a=h.current;if(!a)return;let o=wr(t)||Cr(n)||(r?`text/linkified`:``);if(_.current&&o===_.current.cm.getOption(`mode`)&&!!i===_.current.cm.getOption(`readOnly`)&&s===_.current.cm.getOption(`lineNumbers`)&&u===_.current.cm.getOption(`lineWrapping`)&&p===_.current.cm.getOption(`placeholder`))return;_.current?.cm?.getWrapperElement().remove();let l=e(a,{value:``,mode:o,readOnly:!!i,lineNumbers:s,lineWrapping:u,placeholder:p,matchBrackets:!0,autoCloseBrackets:!0,extraKeys:{"Ctrl-F":`findPersistent`,"Cmd-F":`findPersistent`,Tab:!1,"Shift-Tab":!1}});return _.current={cm:l},c&&l.focus(),y(l),l})()},[g,v,h,t,n,r,s,u,i,c,p]),T.useEffect(()=>{_.current&&_.current.cm.setSize(m.width,m.height)},[m]),T.useLayoutEffect(()=>{if(!v)return;let t=!1;if(v.getValue()!==e&&(v.setValue(e),t=!0,l&&(v.execCommand(`selectAll`),v.focus())),t||JSON.stringify(a)!==JSON.stringify(_.current.highlight)){for(let e of _.current.highlight||[])v.removeLineClass(e.line-1,`wrap`);for(let e of a||[])v.addLineClass(e.line-1,`wrap`,`source-line-${e.type}`);for(let e of _.current.widgets||[])v.removeLineWidget(e);for(let e of _.current.markers||[])e.clear();let e=[],t=[];for(let n of a||[]){if(n.type!==`subtle-error`&&n.type!==`error`)continue;let r=_.current?.cm.getLine(n.line-1);if(r){let e={};e.title=n.message||``,t.push(v.markText({line:n.line-1,ch:0},{line:n.line-1,ch:n.column||r.length},{className:`source-line-error-underline`,attributes:e}))}if(n.type===`error`){let t=document.createElement(`div`);t.innerHTML=tr(n.message||``,{bg:`var(--vscode-inputValidation-errorBackground)`,fg:`var(--vscode-editor-foreground)`}),t.className=`source-line-error-widget`,e.push(v.addLineWidget(n.line,t,{above:!0,coverGutter:!1}))}}_.current.highlight=a,_.current.widgets=e,_.current.markers=t}typeof o==`number`&&_.current.cm.lineCount()>=o&&v.scrollIntoView({line:Math.max(0,o-1),ch:0},50);let n;return d&&(n=()=>d(v.getValue()),v.on(`change`,n)),()=>{n&&v.off(`change`,n)}},[v,e,a,o,l,d]),(0,M.jsx)(`div`,{"data-testid":f,className:`cm-wrapper`,ref:h,onClick:br})};function br(e){if(!(e.target instanceof HTMLElement))return;let t;e.target.classList.contains(`cm-linkified`)?t=e.target.textContent:e.target.classList.contains(`cm-link`)&&e.target.nextElementSibling?.classList.contains(`cm-url`)&&(t=e.target.nextElementSibling.textContent.slice(1,-1)),t&&(e.preventDefault(),e.stopPropagation(),window.open(t,`_blank`))}var xr=!1;function Sr(e){xr||(xr=!0,e.defineSimpleMode(`text/linkified`,{start:[{regex:j,token:`linkified`}]}))}function Cr(e){if(e){if(e.includes(`javascript`)||e.includes(`json`))return`javascript`;if(e.includes(`python`))return`python`;if(e.includes(`csharp`))return`text/x-csharp`;if(e.includes(`java`))return`text/x-java`;if(e.includes(`markdown`))return`markdown`;if(e.includes(`html`)||e.includes(`svg`))return`htmlmixed`;if(e.includes(`css`))return`css`}}function wr(e){if(e)return{javascript:`javascript`,jsonl:`javascript`,python:`python`,csharp:`text/x-csharp`,java:`text/x-java`,markdown:`markdown`,html:`htmlmixed`,css:`css`,yaml:`yaml`}[e]}function Tr(e){return!!e.match(/^(application\/json|application\/.*?\+json|text\/(x-)?json)(;\s*charset=.*)?$/)}function Er(e){return!!e.match(/^(application\/xml|application\/.*?\+xml|text\/xml)(;\s*charset=.*)?$/)}function Dr(e){return!!e.match(/^(text\/.*?|application\/(json|(x-)?javascript|xml.*?|ecmascript|graphql|x-www-form-urlencoded)|image\/svg(\+xml)?|application\/.*?(\+json|\+xml))(;\s*charset=.*)?$/)}var Or=({title:e,children:t,setExpanded:n,expanded:r,expandOnTitleClick:i,className:a})=>{let o=T.useId(),s=T.useId(),c=T.useCallback(()=>n(!r),[r,n]),l=(0,M.jsx)(`div`,{className:k(`codicon`,r?`codicon-chevron-down`:`codicon-chevron-right`),style:{cursor:`pointer`,color:`var(--vscode-foreground)`,marginLeft:`5px`},onClick:i?void 0:c});return(0,M.jsxs)(`div`,{className:k(`expandable`,r&&`expanded`,a),children:[i?(0,M.jsxs)(`div`,{id:o,role:`button`,"aria-expanded":r,"aria-controls":s,className:`expandable-title`,onClick:c,children:[l,e]}):(0,M.jsxs)(`div`,{className:`expandable-title`,children:[l,e]}),r&&(0,M.jsx)(`div`,{id:s,"aria-labelledby":o,role:`region`,className:`expandable-content`,children:t})]})};function kr(e){let t=[],n=0,r;for(;(r=j.exec(e))!==null;){let i=e.substring(n,r.index);i&&t.push(i);let a=r[0];t.push(Ar(a)),n=r.index+a.length}let i=e.substring(n);return i&&t.push(i),t}function Ar(e){let t=e;return t.startsWith(`www.`)&&(t=`https://`+t),(0,M.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:e})}var jr=T.createContext(void 0),Mr=()=>T.useContext(jr),Nr=({attachment:e,reveal:t})=>{let n=Mr(),[r,i]=T.useState(!1),[a,o]=T.useState(null),[s,c]=T.useState(null),[l,u]=ue(),d=T.useRef(null),f=Dr(e.contentType),p=!!e.sha1||!!e.path;T.useEffect(()=>{if(t)return d.current?.scrollIntoView({behavior:`smooth`}),u()},[t,u]),T.useEffect(()=>{r&&a===null&&s===null&&(c(`Loading ...`),fetch(Fr(n,e)).then(e=>e.text()).then(e=>{o(e),c(null)}).catch(e=>{c(`Failed to load: `+e.message)}))},[n,r,a,s,e]);let m=T.useMemo(()=>{let e=a?a.split(` -`).length:0;return Math.min(Math.max(5,e),20)*20},[a]),h=(0,M.jsxs)(`span`,{style:{marginLeft:5},ref:d,"aria-label":e.name,children:[(0,M.jsx)(`span`,{children:kr(e.name)}),p&&(0,M.jsx)(`a`,{style:{marginLeft:5},href:Ir(n,e),children:`download`})]});return!f||!p?(0,M.jsx)(`div`,{style:{marginLeft:20},children:h}):(0,M.jsxs)(`div`,{className:k(l&&`yellow-flash`),children:[(0,M.jsx)(Or,{title:h,expanded:r,setExpanded:i,expandOnTitleClick:!0,children:s&&(0,M.jsx)(`i`,{children:s})}),r&&a!==null&&(0,M.jsx)(`div`,{className:`vbox`,style:{height:m},children:(0,M.jsx)(yr,{text:a,readOnly:!0,mimeType:e.contentType,linkify:!0,lineNumbers:!0,wrapLines:!1})})]})},Pr=({revealedAttachmentCallId:e})=>{let t=Mr(),{diffMap:n,screenshots:r,attachments:i}=T.useMemo(()=>{let e=new Set(t?.visibleAttachments??[]),n=new Set,r=new Map;for(let t of e){if(!t.path&&!t.sha1)continue;let i=t.name.match(/^(.*)-(expected|actual|diff)\.png$/);if(i){let n=i[1],a=i[2],o=r.get(n)||{expected:void 0,actual:void 0,diff:void 0};o[a]=t,r.set(n,o),e.delete(t)}else t.contentType.startsWith(`image/`)&&(n.add(t),e.delete(t))}return{diffMap:r,attachments:e,screenshots:n}},[t]);return!n.size&&!r.size&&!i.size?(0,M.jsx)(Gn,{text:`No attachments`}):(0,M.jsxs)(`div`,{className:`attachments-tab`,children:[[...n.values()].map(({expected:e,actual:n,diff:r})=>(0,M.jsxs)(M.Fragment,{children:[e&&n&&(0,M.jsx)(`div`,{className:`attachments-section`,children:`Image diff`}),e&&n&&(0,M.jsx)(fr,{noTargetBlank:!0,diff:{name:`Image diff`,expected:{attachment:{...e,path:Ir(t,e)},title:`Expected`},actual:{attachment:{...n,path:Ir(t,n)}},diff:r?{attachment:{...r,path:Ir(t,r)}}:void 0}})]})),r.size?(0,M.jsx)(`div`,{className:`attachments-section`,children:`Screenshots`}):void 0,[...r.values()].map((e,n)=>{let r=Fr(t,e);return(0,M.jsxs)(`div`,{className:`attachment-item`,children:[(0,M.jsx)(`div`,{children:(0,M.jsx)(`img`,{draggable:`false`,src:r})}),(0,M.jsx)(`div`,{children:(0,M.jsx)(`a`,{target:`_blank`,href:r,rel:`noreferrer`,children:e.name})})]},`screenshot-${n}`)}),i.size?(0,M.jsx)(`div`,{className:`attachments-section`,children:`Attachments`}):void 0,[...i.values()].map((t,n)=>(0,M.jsx)(`div`,{className:`attachment-item`,children:(0,M.jsx)(Nr,{attachment:t,reveal:e&&t.callId===e.callId?e:void 0})},Lr(t,n)))]})};function Fr(e,t){return e&&t.sha1?e.createRelativeUrl(`sha1/${t.sha1}`):`file?path=${encodeURIComponent(t.path)}`}function Ir(e,t){let n=t.contentType?`&dn=${encodeURIComponent(t.name)}`:``;return t.contentType&&(n+=`&dct=${encodeURIComponent(t.contentType)}`),Fr(e,t)+n}function Lr(e,t){return t+`-`+(e.sha1?`sha1-`+e.sha1:`path-`+e.path)}var Rr=({prompt:e})=>(0,M.jsx)(Wn,{value:e,description:`Copy prompt`,copiedDescription:(0,M.jsxs)(M.Fragment,{children:[`Copied `,(0,M.jsx)(`span`,{className:`codicon codicon-copy`,style:{marginLeft:`5px`}})]}),style:{width:`120px`,justifyContent:`center`}});function zr(e){return T.useMemo(()=>{if(!e)return{errors:new Map};let t=new Map;for(let n of e.errorDescriptors)t.set(n.message,n);return{errors:t}},[e])}function Br({message:e,error:t,sdkLanguage:n,revealInSource:r}){let i,a,o=t.stack?.[0];return o&&(i=o.file.replace(/.*[/\\](.*)/,`$1`)+`:`+o.line,a=o.file+`:`+o.line),(0,M.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,overflowX:`clip`},children:[(0,M.jsxs)(`div`,{className:`hbox`,style:{alignItems:`center`,padding:`5px 10px`,minHeight:36,fontWeight:`bold`,color:`var(--vscode-errorForeground)`,flex:0},children:[t.action&&Vn(t.action,{sdkLanguage:n}),i&&(0,M.jsxs)(`div`,{className:`action-location`,children:[`@ `,(0,M.jsx)(`span`,{title:a,onClick:()=>r(t),children:i})]})]}),(0,M.jsx)(or,{error:e})]})}var Vr=({errorsModel:e,sdkLanguage:t,revealInSource:n,wallTime:r,testRunMetadata:i})=>{let a=Mr(),o=te(async()=>{let e=a?.attachments.find(e=>e.name===`error-context`);if(!e)return;let t=await fetch(Fr(a,e)).then(e=>e.text());if(t)return i?.gitDiff&&(t+=` - -# Local changes - -\`\`\`diff -`+i.gitDiff+"\n```"),t},[a,i],void 0);return e.errors.size?(0,M.jsxs)(`div`,{className:`fill`,style:{overflow:`auto`},children:[(0,M.jsx)(`span`,{style:{position:`absolute`,right:`5px`,top:`5px`,zIndex:1},children:o&&(0,M.jsx)(Rr,{prompt:o})}),[...e.errors.entries()].map(([e,i])=>{let a=`error-${r}-${e}`;return(0,M.jsx)(Br,{message:e,error:i,revealInSource:n,sdkLanguage:t},a)})]}):(0,M.jsx)(Gn,{text:`No errors`})},Hr=Qn,Ur={log:{bg:`var(--vscode-editor-background)`,fg:`var(--vscode-editor-foreground)`},warning:{fg:`var(--vscode-list-warningForeground)`,bg:`var(--vscode-inputValidation-warningBackground)`},error:{fg:`var(--vscode-list-errorForeground)`,bg:`var(--vscode-inputValidation-errorBackground)`}};function Wr(e,t,n){let{entries:r}=T.useMemo(()=>{if(!e)return{entries:[]};let t=t=>t&&e.pagerefToTitle.get(t)||``,r=[];function i(e){let t=r[r.length-1];t&&e.browserMessage?.bodyString===t.browserMessage?.bodyString&&e.browserMessage?.location===t.browserMessage?.location&&e.browserError===t.browserError&&e.nodeMessage?.html===t.nodeMessage?.html&&e.isError===t.isError&&e.isWarning===t.isWarning&&e.pageId===t.pageId&&e.timestamp-t.timestamp<1e3?t.repeat++:r.push({...e,repeat:1})}let a=[...e.events,...e.stdio].sort((e,t)=>(`time`in e?e.time:e.timestamp)-(`time`in t?t.time:t.timestamp));for(let e of a){if(e.type===`console`){if(n&&e.pageId!==n)continue;let r=e.messageType===`error`?Ur.error:e.messageType===`warning`?Ur.warning:Ur.log,a=e.args&&e.args.length?Kr(e.args,r):qr(e.text,r),o=e.location.url,s=`${o?o.substring(o.lastIndexOf(`/`)+1):``}:${e.location.lineNumber}`;i({browserMessage:{body:a,bodyString:e.text,location:s},isError:e.messageType===`error`,isWarning:e.messageType===`warning`,pageId:t(e.pageId),timestamp:e.time})}if(e.type===`event`&&e.method===`pageError`){if(n&&e.pageId!==n)continue;i({browserError:e.params.error,isError:!0,isWarning:!1,pageId:t(e.pageId),timestamp:e.time})}if(e.type===`stderr`||e.type===`stdout`){let t=``,n=e.type===`stderr`?Ur.error:Ur.log;e.text&&(t=tr(e.text.trim(),n)||``),e.base64&&(t=tr(atob(e.base64).trim(),n)||``),i({nodeMessage:{html:t},isError:e.type===`stderr`,isWarning:!1,pageId:``,timestamp:e.timestamp})}}return{entries:r}},[e,n]),i=T.useMemo(()=>t?r.filter(e=>e.timestamp>=t.minimum&&e.timestamp<=t.maximum):r,[r,t]),a=T.useMemo(()=>new Set(i.map(e=>e.pageId).filter(Boolean)).size>1,[i]);return{entries:i,hasMultiplePages:a,showSource:T.useMemo(()=>a||i.some(e=>!e.browserMessage&&!e.browserError),[i,a])}}var Gr=({consoleModel:e,boundaries:t,onEntryHovered:n,onAccepted:r})=>e.entries.length?(0,M.jsx)(`div`,{className:`console-tab`,children:(0,M.jsx)(Hr,{name:`console`,onAccepted:r,onHighlighted:e=>n?.(e?{minimum:e.timestamp,maximum:e.timestamp}:void 0),items:e.entries,isError:e=>e.isError,isWarning:e=>e.isWarning,render:n=>{let r=(0,M.jsx)(`span`,{className:`console-time`,children:st(n.timestamp-t.minimum)}),i=!!(n.browserMessage||n.browserError),a=i?e.hasMultiplePages&&n.pageId||`page`:`test`,o=e.showSource?(0,M.jsx)(`span`,{className:`console-source`,title:i?`Browser message`:`Runner message`,children:a}):void 0,s,c,l,u,{browserMessage:d,browserError:f,nodeMessage:p}=n;if(d&&(s=d.location,c=d.body),f){let{error:e,value:t}=f;e?(c=e.message,u=e.stack):c=String(t)}return p&&(l=p.html),(0,M.jsxs)(`div`,{className:`console-line`,children:[r,o,s&&(0,M.jsx)(`span`,{className:`console-location`,children:s}),n.repeat>1&&(0,M.jsx)(`span`,{className:`console-repeat`,children:n.repeat}),c&&(0,M.jsx)(`span`,{className:`console-line-message`,children:c}),l&&(0,M.jsx)(`span`,{className:`console-line-message`,dangerouslySetInnerHTML:{__html:l}}),u&&(0,M.jsx)(`div`,{className:`console-stack`,children:u})]})}})}):(0,M.jsx)(Gn,{text:`No console entries`});function Kr(e,t){if(e.length===1)return qr(e[0].preview,t);let n=typeof e[0].value==`string`&&e[0].value.includes(`%`),r=n?e[0].value:``,i=n?e.slice(1):e,a=0,o=/%([%sdifoOc])/g,s,c=[],l=[];c.push((0,M.jsx)(`span`,{children:l},c.length+1));let u=0;for(;(s=o.exec(r))!==null;){let e=r.substring(u,s.index);l.push((0,M.jsx)(`span`,{children:e},l.length+1)),u=s.index+2;let t=s[0][1];if(t===`%`)l.push((0,M.jsx)(`span`,{children:`%`},l.length+1));else if(t===`s`||t===`o`||t===`O`||t===`d`||t===`i`||t===`f`){let e=i[a++],t={};typeof e?.value!=`string`&&(t.color=`var(--vscode-debugTokenExpression-number)`),l.push((0,M.jsx)(`span`,{style:t,children:e?.preview||``},l.length+1))}else if(t===`c`){l=[];let e=i[a++],t=e?Jr(e.preview):{};c.push((0,M.jsx)(`span`,{style:t,children:l},c.length+1))}}for(ue[1].toUpperCase());t[a]=i}return t}catch{return{}}}function Yr(e){return[`background`,`border`,`color`,`font`,`line`,`margin`,`padding`,`text`].some(t=>e.startsWith(t))}var Xr=({noShadow:e,children:t,noMinHeight:n,className:r,sidebarBackground:i,onClick:a})=>(0,M.jsx)(`div`,{className:k(`toolbar`,e&&`no-shadow`,n&&`no-min-height`,r,i&&`toolbar-sidebar-background`),onClick:a,children:t}),Zr=({tabs:e,selectedTab:t,setSelectedTab:n,leftToolbar:r,rightToolbar:i,dataTestId:a,mode:o})=>{let s=T.useId();return t||=e[0].id,o||=`default`,(0,M.jsx)(`div`,{className:`tabbed-pane`,"data-testid":a,children:(0,M.jsxs)(`div`,{className:`vbox`,children:[(0,M.jsxs)(Xr,{children:[r&&(0,M.jsx)(`div`,{style:{flex:`none`,display:`flex`,margin:`0 4px`,alignItems:`center`},children:[...r]}),o==="default"&&(0,M.jsx)(`div`,{style:{flex:`auto`,display:`flex`,height:`100%`,overflow:`hidden`},role:`tablist`,children:[...e.map(e=>(0,M.jsx)(Qr,{id:e.id,ariaControls:`${s}-${e.id}`,title:e.title,count:e.count,errorCount:e.errorCount,selected:t===e.id,onSelect:n},e.id))]}),o===`select`&&(0,M.jsx)(`div`,{style:{flex:`auto`,display:`flex`,height:`100%`,overflow:`hidden`},role:`tablist`,children:(0,M.jsx)(`select`,{style:{width:`100%`,background:`none`,cursor:`pointer`},value:t,onChange:t=>{n?.(e[t.currentTarget.selectedIndex].id)},children:e.map(e=>{let t=``;return e.count&&(t=` (${e.count})`),e.errorCount&&(t=` (${e.errorCount})`),(0,M.jsxs)(`option`,{value:e.id,role:`tab`,"aria-controls":`${s}-${e.id}`,children:[e.title,t]},e.id)})})}),i&&(0,M.jsx)(`div`,{style:{flex:`none`,display:`flex`,alignItems:`center`},children:[...i]})]}),e.map(e=>{let n=`tab-content tab-`+e.id;if(e.component)return(0,M.jsx)(`div`,{id:`${s}-${e.id}`,role:`tabpanel`,"aria-label":e.title,className:n,style:{display:t===e.id?`inherit`:`none`},children:e.component},e.id);if(t===e.id)return(0,M.jsx)(`div`,{id:`${s}-${e.id}`,role:`tabpanel`,"aria-label":e.title,className:n,children:e.render()},e.id)})]})})},Qr=({id:e,title:t,count:n,errorCount:r,selected:i,onSelect:a,ariaControls:o})=>(0,M.jsxs)(`button`,{className:k(`tabbed-pane-tab`,i&&`selected`),onClick:()=>a?.(e),role:`tab`,title:t,"aria-controls":o,"aria-selected":i,children:[(0,M.jsx)(`div`,{className:`tabbed-pane-tab-label`,children:t}),!!n&&(0,M.jsx)(`div`,{className:`tabbed-pane-tab-counter`,children:n}),!!r&&(0,M.jsx)(`div`,{className:`tabbed-pane-tab-counter error`,children:r})]});async function $r(e,t){let n=navigator.platform.includes(`Win`)?`win`:`unix`,r=[],i=new Set([`accept-encoding`,`host`,`method`,`path`,`scheme`,`version`,`authority`,`protocol`]);function a(e){return`^"`+e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/[^a-zA-Z0-9\s_\-:=+~'\/.',?;()*`]/g,`^$&`).replace(/%(?=[a-zA-Z0-9_])/g,`%^`).replace(/[^ -~\r\n]/g,` `).replace(/\r?\n|\r/g,`^ - -`)+`^"`}function o(e){function t(e){let t=e.charCodeAt(0).toString(16);for(;t.length<4;)t=`0`+t;return`\\u`+t}return/[\0-\x1F\x7F-\x9F!]|\'/.test(e)?`$'`+e.replace(/\\/g,`\\\\`).replace(/\'/g,`\\'`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\0-\x1F\x7F-\x9F!]/g,t)+`'`:`'`+e+`'`}let s=n===`win`?a:o;r.push(s(t.request.url).replace(/[[{}\]]/g,`\\$&`));let c=`GET`,l=[],u=await ti(e,t);u&&(l.push(`--data-raw `+s(u)),i.add(`content-length`),c=`POST`),t.request.method!==c&&r.push(`-X `+s(t.request.method));let d=t.request.headers;for(let e=0;e=3?n===`win`?` ^ - `:` \\ - `:` `)}async function ei(e,t,n=0){let r=new Set([`method`,`path`,`scheme`,`version`,`accept-charset`,`accept-encoding`,`access-control-request-headers`,`access-control-request-method`,`connection`,`content-length`,`cookie`,`cookie2`,`date`,`dnt`,`expect`,`host`,`keep-alive`,`origin`,`referer`,`te`,`trailer`,`transfer-encoding`,`upgrade`,`via`,`user-agent`]),i=new Set([`cookie`,`authorization`]),a=JSON.stringify(t.request.url),o=t.request.headers,s=o.reduce((e,t)=>{let n=t.name;return!r.has(n.toLowerCase())&&!n.includes(`:`)&&e.append(n,t.value),e},new Headers),c={};for(let e of s)c[e[0]]=e[1];let l=t.request.cookies.length||o.some(({name:e})=>i.has(e.toLowerCase()))?`include`:`omit`,u=o.find(({name:e})=>e.toLowerCase()===`referer`),d=u?u.value:void 0,f=await ti(e,t),p={headers:Object.keys(c).length?c:void 0,referrer:d,body:f,method:t.request.method,mode:`cors`};if(n===1){let e=o.find(e=>e.name.toLowerCase()===`cookie`),t={};delete p.mode,e&&(t.cookie=e.value),d&&(delete p.referrer,t.Referer=d),Object.keys(t).length&&(p.headers={...c,...t})}else p.credentials=l;return`fetch(${a}, ${JSON.stringify(p,null,2)});`}async function ti(e,t){return e&&t.request.postData?._sha1?await fetch(e.createRelativeUrl(`sha1/${t.request.postData._sha1}`)).then(e=>e.text()):t.request.postData?.text}var ni=class{generatePlaywrightRequestCall(e,t){let n=e.method.toLowerCase(),r=new URL(e.url),i=`${r.origin}${r.pathname}`,a={};[`delete`,`get`,`head`,`post`,`put`,`patch`].includes(n)||(a.method=n,n=`fetch`),r.searchParams.size&&(a.params=Object.fromEntries(r.searchParams.entries())),t&&(a.data=t),e.headers.length&&(a.headers=Object.fromEntries(e.headers.map(e=>[e.name,e.value])));let o=[`'${i}'`];return Object.keys(a).length>0&&o.push(this.prettyPrintObject(a)),`await page.request.${n}(${o.join(`, `)});`}prettyPrintObject(e,t=2,n=0){if(e===null)return`null`;if(e===void 0)return`undefined`;if(typeof e!=`object`)return typeof e==`string`?this.stringLiteral(e):String(e);if(Array.isArray(e)){if(e.length===0)return`[]`;let r=` `.repeat(n*t),i=` `.repeat((n+1)*t);return`[\n${e.map(e=>`${i}${this.prettyPrintObject(e,t,n+1)}`).join(`, -`)}\n${r}]`}if(Object.keys(e).length===0)return`{}`;let r=` `.repeat(n*t),i=` `.repeat((n+1)*t);return`{\n${Object.entries(e).map(([e,r])=>{let a=this.prettyPrintObject(r,t,n+1);return`${i}${/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)?e:this.stringLiteral(e)}: ${a}`}).join(`, -`)}\n${r}}`}stringLiteral(e){return e=e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`),e.includes(` -`)||e.includes(`\r`)||e.includes(` `)?"`"+e+"`":`'${e}'`}},ri=class{generatePlaywrightRequestCall(e,t){let n=new URL(e.url),r=[`"${`${n.origin}${n.pathname}`}"`],i=e.method.toLowerCase();[`delete`,`get`,`head`,`post`,`put`,`patch`].includes(i)||(r.push(`method="${i}"`),i=`fetch`),n.searchParams.size&&r.push(`params=${this.prettyPrintObject(Object.fromEntries(n.searchParams.entries()))}`),t&&r.push(`data=${this.prettyPrintObject(t)}`),e.headers.length&&r.push(`headers=${this.prettyPrintObject(Object.fromEntries(e.headers.map(e=>[e.name,e.value])))}`);let a=r.length===1?r[0]:`\n${r.map(e=>this.indent(e,2)).join(`, -`)}\n`;return`await page.request.${i}(${a})`}indent(e,t){return e.split(` -`).map(e=>` `.repeat(t)+e).join(` -`)}prettyPrintObject(e,t=2,n=0){if(e==null)return`None`;if(typeof e!=`object`)return typeof e==`string`?this.stringLiteral(e):typeof e==`boolean`?e?`True`:`False`:String(e);if(Array.isArray(e)){if(e.length===0)return`[]`;let r=` `.repeat(n*t),i=` `.repeat((n+1)*t);return`[\n${e.map(e=>`${i}${this.prettyPrintObject(e,t,n+1)}`).join(`, -`)}\n${r}]`}if(Object.keys(e).length===0)return`{}`;let r=` `.repeat(n*t),i=` `.repeat((n+1)*t);return`{\n${Object.entries(e).map(([e,r])=>{let a=this.prettyPrintObject(r,t,n+1);return`${i}${this.stringLiteral(e)}: ${a}`}).join(`, -`)}\n${r}}`}stringLiteral(e){return JSON.stringify(e)}},ii=class{generatePlaywrightRequestCall(e,t){let n=new URL(e.url),r=`${n.origin}${n.pathname}`,i={},a=[],o=e.method.toLowerCase();[`delete`,`get`,`head`,`post`,`put`,`patch`].includes(o)||(i.Method=o,o=`fetch`),n.searchParams.size&&(i.Params=Object.fromEntries(n.searchParams.entries())),t&&(i.Data=t),e.headers.length&&(i.Headers=Object.fromEntries(e.headers.map(e=>[e.name,e.value])));let s=[`"${r}"`];return Object.keys(i).length>0&&s.push(this.prettyPrintObject(i)),`${a.join(` -`)}${a.length?` -`:``}await request.${this.toFunctionName(o)}(${s.join(`, `)});`}toFunctionName(e){return e[0].toUpperCase()+e.slice(1)+`Async`}prettyPrintObject(e,t=2,n=0){if(e==null)return`null`;if(typeof e!=`object`)return typeof e==`string`?this.stringLiteral(e):typeof e==`boolean`?e?`true`:`false`:String(e);if(Array.isArray(e)){if(e.length===0)return`new object[] {}`;let r=` `.repeat(n*t),i=` `.repeat((n+1)*t);return`new object[] {\n${e.map(e=>`${i}${this.prettyPrintObject(e,t,n+1)}`).join(`, -`)}\n${r}}`}if(Object.keys(e).length===0)return`new {}`;let r=` `.repeat(n*t),i=` `.repeat((n+1)*t);return`new() {\n${Object.entries(e).map(([e,r])=>{let a=this.prettyPrintObject(r,t,n+1);return`${i}${n===0?e:`[${this.stringLiteral(e)}]`} = ${a}`}).join(`, -`)}\n${r}}`}stringLiteral(e){return JSON.stringify(e)}},ai=class{generatePlaywrightRequestCall(e,t){let n=new URL(e.url),r=[`"${n.origin}${n.pathname}"`],i=[],a=e.method.toLowerCase();[`delete`,`get`,`head`,`post`,`put`,`patch`].includes(a)||(i.push(`setMethod("${a}")`),a=`fetch`);for(let[e,t]of n.searchParams)i.push(`setQueryParam(${this.stringLiteral(e)}, ${this.stringLiteral(t)})`);t&&i.push(`setData(${this.stringLiteral(t)})`);for(let t of e.headers)i.push(`setHeader(${this.stringLiteral(t.name)}, ${this.stringLiteral(t.value)})`);return i.length>0&&r.push(`RequestOptions.create()\n .${i.join(` - .`)}\n`),`request.${a}(${r.join(`, `)});`}stringLiteral(e){return JSON.stringify(e)}};function oi(e){if(e===`javascript`)return new ni;if(e===`python`)return new ri;if(e===`csharp`)return new ii;if(e===`java`)return new ai;throw Error(`Unsupported language: `+e)}var si=({resource:e,sdkLanguage:t,startTimeOffset:n,onClose:r})=>{let[i,a]=T.useState(`headers`),o=Mr(),s=te(async()=>{if(o&&e.request.postData){let t=e.request.headers.find(e=>e.name.toLowerCase()===`content-type`),n=t?t.value:``;return e.request.postData._sha1?{text:await(await fetch(o.createRelativeUrl(`sha1/${e.request.postData._sha1}`))).text(),mimeType:n}:{text:e.request.postData.text,mimeType:n}}else return null},[e],null);return(0,M.jsx)(Zr,{leftToolbar:[(0,M.jsx)(Fn,{icon:`close`,title:`Close`,onClick:r},`close`)],rightToolbar:[(0,M.jsx)(ci,{requestBody:s,resource:e,sdkLanguage:t},`dropdown`)],tabs:[{id:`headers`,title:`Headers`,render:()=>(0,M.jsx)(di,{resource:e,startTimeOffset:n})},{id:`payload`,title:`Payload`,render:()=>(0,M.jsx)(fi,{resource:e,requestBody:s})},{id:`response`,title:`Response`,render:()=>(0,M.jsx)(pi,{resource:e})}],selectedTab:i,setSelectedTab:a})},ci=({resource:e,sdkLanguage:t,requestBody:n})=>{let r=Mr(),i=(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`codicon codicon-check`,style:{marginRight:`5px`}}),` Copied `]});return(0,M.jsxs)(`div`,{className:`copy-request-dropdown`,children:[(0,M.jsxs)(Fn,{className:`copy-request-dropdown-toggle`,children:[(0,M.jsx)(`span`,{className:`codicon codicon-copy`,style:{marginRight:`5px`}}),`Copy request`,(0,M.jsx)(`span`,{className:`codicon codicon-chevron-down`,style:{marginLeft:`5px`}})]}),(0,M.jsxs)(`div`,{className:`copy-request-dropdown-menu`,children:[(0,M.jsx)(Wn,{description:`Copy as cURL`,copiedDescription:i,value:()=>$r(r,e)}),(0,M.jsx)(Wn,{description:`Copy as Fetch`,copiedDescription:i,value:()=>ei(r,e)}),(0,M.jsx)(Wn,{description:`Copy as Playwright`,copiedDescription:i,value:async()=>oi(t).generatePlaywrightRequestCall(e.request,n?.text)})]})]})},li=({toggled:e,error:t,onToggle:n})=>(0,M.jsx)(Fn,{icon:`json`,title:`Pretty print`,toggled:e,errorBadge:t?`Formatting failed`:void 0,onClick:e=>{e.stopPropagation(),n()}}),ui=({title:e,data:t,showCount:n,children:r,titleChildren:i,className:a})=>{let[o,s]=ae(`trace-viewer-network-details-${e.replaceAll(` `,`-`)}`,!0);return(0,M.jsxs)(Or,{expanded:o,setExpanded:s,expandOnTitleClick:!0,title:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`span`,{className:`network-request-details-header`,children:[e,n&&(0,M.jsxs)(`span`,{className:`network-request-details-header-count`,children:[` × `,t?.length??0]})]}),i]}),className:a,children:[t&&(0,M.jsx)(`table`,{className:`network-request-details-table`,children:(0,M.jsx)(`tbody`,{children:t.map(({name:e,value:t},n)=>t!==null&&(0,M.jsxs)(`tr`,{children:[(0,M.jsx)(`td`,{children:e}),(0,M.jsx)(`td`,{children:t})]},n))})}),r]})},di=({resource:e,startTimeOffset:t})=>(0,M.jsxs)(`div`,{className:`vbox network-request-details-tab`,children:[(0,M.jsx)(ui,{title:`General`,data:T.useMemo(()=>Object.entries({URL:e.request.url,Method:e.request.method,"Status Code":e.response.status===-1?`canceled`:e.response.status>0&&(0,M.jsxs)(`span`,{className:Ci(e.response.status),children:[` `,e.response.status,` `,e.response.statusText]}),Start:st(t),Duration:st(e.time)}).map(([e,t])=>({name:e,value:t})),[e,t])}),(0,M.jsx)(ui,{title:`Request Headers`,showCount:!0,data:e.request.headers}),(0,M.jsx)(ui,{title:`Response Headers`,showCount:!0,data:e.response.headers})]}),fi=({resource:e,requestBody:t})=>{let[n,r]=ae(`trace-viewer-network-details-show-formatted-payload`,!0),i=e.request.queryString.length>0,a=!!(t||e.request.postData),o=Di(t,n);return(0,M.jsxs)(`div`,{className:`vbox network-request-details-tab`,children:[!i&&!a&&(0,M.jsx)(`em`,{className:`network-request-no-payload`,children:`No payload for this request.`}),i&&(0,M.jsx)(ui,{title:`Query String Parameters`,showCount:!0,data:e.request.queryString}),t&&(0,M.jsx)(ui,{title:`Request Body`,className:`network-request-request-body`,titleChildren:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{style:{margin:`auto`}}),(0,M.jsx)(li,{toggled:n,error:o.error,onToggle:()=>r(!n)})]}),children:(0,M.jsx)(yr,{text:o.text,mimeType:t.mimeType,readOnly:!0,lineNumbers:!0})})]})},pi=({resource:e})=>{let t=Mr(),[n,r]=T.useState(null);T.useEffect(()=>{(async()=>{if(t&&e.response.content._sha1){let n=e.response.content.mimeType.includes(`image`),i=e.response.content.mimeType.includes(`font`),a=await fetch(t.createRelativeUrl(`sha1/${e.response.content._sha1}`));if(n){let e=await a.blob(),t=new FileReader,n=new Promise(e=>t.onload=e);t.readAsDataURL(e),r({dataUrl:(await n).target.result})}else r(i?{font:await a.arrayBuffer()}:{text:await a.text(),mimeType:e.response.content.mimeType})}else r(null)})()},[e,t]);let[i,a]=ae(`trace-viewer-network-details-show-formatted-response`,!0),o=Di(n,i);return(0,M.jsxs)(`div`,{className:`vbox network-request-details-tab`,children:[!e.response.content._sha1&&(0,M.jsx)(`div`,{children:`Response body is not available for this request.`}),n&&n.font&&(0,M.jsx)(mi,{font:n.font}),n&&n.dataUrl&&(0,M.jsx)(`div`,{children:(0,M.jsx)(`img`,{draggable:`false`,src:n.dataUrl})}),n&&n.text!==void 0&&(0,M.jsxs)(`div`,{className:`vbox network-response-body`,children:[(0,M.jsx)(yr,{text:o.text,mimeType:n.mimeType,readOnly:!0,lineNumbers:!0}),(0,M.jsxs)(Xr,{noShadow:!0,noMinHeight:!0,className:`network-response-toolbar`,children:[(0,M.jsx)(`div`,{style:{margin:`auto`}}),(0,M.jsx)(li,{toggled:i,error:o.error,onToggle:()=>a(!i)})]})]})]})},mi=({font:e})=>{let[t,n]=T.useState(!1);return T.useEffect(()=>{let t;try{t=new FontFace(`font-preview`,e),t.status===`loaded`&&document.fonts.add(t),t.status===`error`&&n(!0)}catch{n(!0)}return()=>{document.fonts.delete(t)}},[e]),t?(0,M.jsx)(`div`,{className:`network-font-preview-error`,children:`Could not load font preview`}):(0,M.jsxs)(`div`,{className:`network-font-preview`,children:[`ABCDEFGHIJKLM`,(0,M.jsx)(`br`,{}),`NOPQRSTUVWXYZ`,(0,M.jsx)(`br`,{}),`abcdefghijklm`,(0,M.jsx)(`br`,{}),`nopqrstuvwxyz`,(0,M.jsx)(`br`,{}),`1234567890`]})},hi=({resource:e,startTimeOffset:t,onClose:n})=>{let[r,i]=T.useState(`messages`);return(0,M.jsx)(Zr,{leftToolbar:[(0,M.jsx)(Fn,{icon:`close`,title:`Close`,onClick:n},`close`)],tabs:[{id:`headers`,title:`Headers`,render:()=>(0,M.jsx)(di,{resource:e,startTimeOffset:t})},{id:`messages`,title:`Messages`,render:()=>(0,M.jsx)(gi,{resource:e})}],selectedTab:r,setSelectedTab:i})},gi=({resource:e})=>{let t=Mr(),n=te(async()=>{if(e._webSocketMessages)return e._webSocketMessages.map((e,t)=>({...e,index:t,byteLength:xi(e)}));if(t&&e.response.content._sha1)try{let n=await fetch(t.createRelativeUrl(`sha1/${e.response.content._sha1}`));return n.ok?(await n.text()).split(` -`).filter(Boolean).map(e=>JSON.parse(e)).map((e,t)=>({...e,index:t,byteLength:xi(e)})):[]}catch{return[]}return[]},[e,t],void 0),[r,i]=T.useState(void 0),a=r===void 0?void 0:n?.[r],o=T.useMemo(()=>{if(n){for(let e of n)if(e.time>0)return e.time}},[n]);if(n===void 0)return(0,M.jsx)(Gn,{text:`Loading...`});if(n.length===0)return(0,M.jsx)(Gn,{text:`No messages captured`});let s=(0,M.jsx)(_i,{name:`network-websocket-messages`,ariaLabel:`WebSocket messages`,items:n,id:e=>String(e.index),selectedItem:a,onSelected:e=>i(e.index),render:e=>yi(e,o)});return a?(0,M.jsx)(ot,{sidebarSize:200,orientation:`vertical`,sidebarIsFirst:!1,settingName:`networkWebSocketMessageDetails`,main:s,sidebar:(0,M.jsx)(vi,{message:a})}):s},_i=Qn,vi=({message:e})=>{let[t,n]=ae(`trace-viewer-network-details-show-formatted-message`,!0),r=T.useMemo(()=>{if(e.opcode===1){let t=e.data,n;try{JSON.parse(t),n=`application/json`}catch{n=`text/plain`}return{text:t,mimeType:n}}if(e.opcode===8||e.opcode===9||e.opcode===10){if(!e.data)return{text:``};try{return{text:ki(e.data),mimeType:`text/plain`}}catch{return{text:Ai(e.data)}}}return{text:Ai(e.data)}},[e]),i=Di(r,t);return(0,M.jsxs)(`div`,{className:`vbox network-websocket-message-detail`,children:[(0,M.jsxs)(Xr,{noShadow:!0,noMinHeight:!0,className:`network-websocket-message-detail-toolbar`,children:[(0,M.jsxs)(`span`,{className:`network-websocket-message-detail-summary`,children:[e.type===`send`?`Sent`:`Received`,` · `,bi(e.opcode),` · `,ct(xi(e))]}),(0,M.jsx)(`div`,{style:{margin:`auto`}}),(0,M.jsx)(li,{toggled:t,error:i.error,onToggle:()=>n(!t)})]}),(0,M.jsx)(`div`,{className:`vbox network-websocket-message-detail-body`,children:(0,M.jsx)(yr,{text:i.text,mimeType:r.mimeType,readOnly:!0,lineNumbers:!0})})]})};function yi(e,t){let n=e.type===`send`?`codicon-arrow-up`:`codicon-arrow-down`,r=e.type===`send`?`Sent`:`Received`,i=bi(e.opcode),a=e.time>0&&t!==void 0?st(e.time-t):`-`,o=Si(e);return(0,M.jsxs)(`div`,{className:`network-websocket-message-row`,children:[(0,M.jsx)(`span`,{className:`network-websocket-message-direction-${e.type} codicon ${n}`,title:r}),(0,M.jsx)(`span`,{className:`network-websocket-message-preview`,title:o,children:o}),(0,M.jsx)(`span`,{className:`network-websocket-message-opcode`,title:`Opcode ${e.opcode}`,children:i}),(0,M.jsx)(`span`,{className:`network-websocket-message-length`,title:`${e.byteLength} bytes`,children:ct(e.byteLength)}),(0,M.jsx)(`span`,{className:`network-websocket-message-time`,children:a})]})}function bi(e){switch(e){case 0:return`Continuation`;case 1:return`Text`;case 2:return`Binary`;case 8:return`Close`;case 9:return`Ping`;case 10:return`Pong`;default:return`Opcode ${e}`}}function xi(e){return e.opcode===1?new TextEncoder().encode(e.data).length:Oi(e.data)}function Si(e){if(e.opcode===1){let t=e.data.replace(/\s+/g,` `);return t.length>200?t.substring(0,200)+`…`:t}return e.opcode===8?`(close)`:e.opcode===9?`(ping)`:e.opcode===10?`(pong)`:`(binary, ${ct(Oi(e.data))})`}function Ci(e){return e<300||e===304?`green-circle`:e<400?`yellow-circle`:`red-circle`}var wi=/<[^>]+>[^<]*<\//;function Ti(e,t=` `){let n=0,r=[],i=e.replace(/>\s* -<`).split(` -`);for(let e of i){let i=e.trim();i&&(i.startsWith(``)||i.startsWith(`T.useMemo(()=>{if(e?.text===void 0)return{text:``};if(!t)return{text:e.text};try{return{text:Ei(e.text,e.mimeType)}}catch{return{text:e.text,error:!0}}},[e,t]);function Oi(e){if(!e)return 0;let t=e[e.length-2]===`=`?2:+(e[e.length-1]===`=`);return Math.max(0,Math.floor(e.length*3/4)-t)}function ki(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e=32&&r<127?t[e+n]:`.`)}else i.push(` `);n===7&&i.push(``)}n.push(`${e.toString(16).padStart(8,`0`)} ${i.join(` `)} ${a.join(``)}`)}return n.join(` -`)}function ji(e){let[t,n]=T.useState([]);T.useEffect(()=>{let t=[];for(let n=0;n{e.setSorting?.({by:t,negate:e.sorting?.by===t?!e.sorting.negate:!1})},[e]);return(0,M.jsxs)(`div`,{className:`grid-view ${e.name}-grid-view`,children:[(0,M.jsx)(lr,{orientation:`horizontal`,offsets:t,setOffsets:r,resizerColor:`var(--vscode-panel-border)`,resizerWidth:1,minColumnWidth:25}),(0,M.jsxs)(`div`,{className:`vbox`,children:[(0,M.jsx)(`div`,{className:`grid-view-header`,children:e.columns.map((t,n)=>(0,M.jsxs)(`div`,{className:`grid-view-header-cell `+Mi(t,e.sorting),style:{width:ne.setSorting&&i(t),children:[(0,M.jsx)(`span`,{className:`grid-view-header-cell-title`,children:e.columnTitle(t)}),(0,M.jsx)(`span`,{className:`codicon codicon-triangle-up`}),(0,M.jsx)(`span`,{className:`codicon codicon-triangle-down`})]},e.columnTitle(t)))}),(0,M.jsx)(Qn,{name:e.name,items:e.items,ariaLabel:e.ariaLabel,id:e.id,render:(t,n)=>(0,M.jsx)(M.Fragment,{children:e.columns.map((r,i)=>{let{body:a,title:o}=e.render(t,r,n);return(0,M.jsx)(`div`,{className:`grid-view-cell grid-view-column-${String(r)}`,title:o,style:{width:i(0,M.jsxs)(`div`,{className:`network-filters`,children:[(0,M.jsx)(`input`,{type:`search`,placeholder:`Filter network`,spellCheck:!1,value:e.searchValue,onChange:n=>t({...e,searchValue:n.target.value})}),(0,M.jsxs)(`div`,{className:`network-filters-resource-types`,role:`tablist`,"aria-multiselectable":`true`,children:[(0,M.jsx)(`button`,{title:`All`,onClick:()=>t({...e,resourceTypes:new Set}),className:`network-filters-resource-type ${e.resourceTypes.size===0?`selected`:``}`,role:`tab`,"aria-selected":e.resourceTypes.size===0,children:`All`}),Ni.map(n=>(0,M.jsx)(`button`,{title:n,onClick:r=>{let i;i=r.ctrlKey||r.metaKey?e.resourceTypes.symmetricDifference(new Set([n])):new Set([n]),t({...e,resourceTypes:i})},className:`network-filters-resource-type ${e.resourceTypes.has(n)?`selected`:``}`,role:`tab`,"aria-selected":e.resourceTypes.has(n),children:n},n))]})]}),Ii=ji;function Li(e,t,n){return{resources:T.useMemo(()=>(e?.resources||[]).filter(e=>n&&e.pageref!==n?!1:t?!!e._monotonicTime&&e._monotonicTime>=t.minimum&&e._monotonicTime<=t.maximum:!0),[e,t,n]),model:e}}var Ri=({boundaries:e,networkModel:t,onResourceHovered:n,sdkLanguage:r})=>{let[i,a]=T.useState(void 0),[o,s]=T.useState(void 0),[c,l]=T.useState(Pi),{renderedEntries:u,multipleContexts:d}=T.useMemo(()=>{let n=t.resources.map(n=>Wi(n,e,t.model)).filter(Xi(c));return i&&qi(n,i),{renderedEntries:n,multipleContexts:new Set(n.map(e=>e.contextId).filter(Boolean)).size>1}},[t.resources,t.model,c,i,e]),f=T.useMemo(()=>o?u.find(e=>e.resource.id===o):void 0,[o,u]),[p,m]=T.useState(()=>new Map(Vi().map(e=>[e,Bi(e)]))),h=T.useCallback(e=>{l(e),s(void 0)},[]);if(!t.resources.length)return(0,M.jsx)(Gn,{text:`No network calls`});let g=(0,M.jsx)(Ii,{name:`network`,ariaLabel:`Network requests`,items:u,selectedItem:f,onSelected:e=>s(e.resource.id),onHighlighted:e=>n?.(e?Gi(e.resource):void 0),columns:N(!!f,d),columnTitle:zi,columnWidths:p,setColumnWidths:m,isError:e=>e.status.code>=400||e.status.code===-1,isInfo:e=>!!e.route,render:(e,t)=>Hi(e,t),sorting:i,setSorting:a});return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(Fi,{filterState:c,onFilterStateChange:h}),!f&&g,f&&(0,M.jsx)(ot,{sidebarSize:p.get(`name`),sidebarIsFirst:!0,orientation:`horizontal`,settingName:`networkResourceDetails`,main:f.resource._resourceType===`websocket`?(0,M.jsx)(hi,{resource:f.resource,startTimeOffset:f.start,onClose:()=>s(void 0)}):(0,M.jsx)(si,{resource:f.resource,sdkLanguage:r,startTimeOffset:f.start,onClose:()=>s(void 0)}),sidebar:g})]})},zi=e=>e===`contextId`?`Source`:e===`name`?`Name`:e===`method`?`Method`:e===`status`?`Status`:e===`contentType`?`Content Type`:e===`duration`?`Duration`:e===`size`?`Size`:e===`start`?`Start`:e===`route`?`Route`:``,Bi=e=>e===`name`?200:e===`method`||e===`status`?60:e===`contentType`?200:e===`contextId`?60:100;function N(e,t){if(e){let e=[`name`];return t&&e.unshift(`contextId`),e}let n=Vi();return t||(n=n.filter(e=>e!==`contextId`)),n}function Vi(){return[`contextId`,`name`,`method`,`status`,`contentType`,`duration`,`size`,`start`,`route`]}var Hi=(e,t)=>t===`contextId`?{body:e.contextId,title:e.name.url}:t===`name`?{body:e.name.name,title:e.name.url}:t===`method`?{body:e.method}:t===`status`?{body:e.status.code===-1?`canceled`:e.status.code>0?e.status.code:``,title:e.status.code===-1?`canceled`:e.status.text}:t===`contentType`?{body:e.contentType}:t===`duration`?{body:st(e.duration)}:t===`size`?{body:ct(e.size)}:t===`start`?{body:st(e.start)}:t===`route`?{body:e.route}:{body:``};function Ui(e,t){if(!e)return``;if(t.pageref)return e.pagerefToTitle.get(t.pageref)||``;if(t._apiRequest){let n=Ye(t);return n&&e.contextToTitle.get(n)||``}return``}var Wi=(e,t,n)=>{let r=Ki(e),i;try{let t=new URL(e.request.url);i=t.pathname.substring(t.pathname.lastIndexOf(`/`)+1),i||=t.host,t.search&&(i+=t.search)}catch{i=e.request.url}let a;if(e._resourceType===`websocket`)a=`websocket`;else{a=e.response.content.mimeType;let t=a.match(/^(.*);\s*charset=.*$/);t&&(a=t[1])}return{name:{name:i,url:e.request.url},method:e.request.method,status:{code:e.response.status,text:e.response.statusText},contentType:a,duration:e.time,size:e.response._transferSize>0?e.response._transferSize:e.response.bodySize,start:e._monotonicTime-t.minimum,route:r,resource:e,contextId:Ui(n,e)}};function Gi(e){if(e._monotonicTime)return{minimum:e._monotonicTime,maximum:e._monotonicTime+e.time}}function Ki(e){return e._wasAborted?`aborted`:e._wasContinued?`continued`:e._wasFulfilled?`fulfilled`:e._apiRequest?`api`:``}function qi(e,t){let n=Ji(t?.by);n&&e.sort(n),t.negate&&e.reverse()}function Ji(e){if(e===`start`)return(e,t)=>e.start-t.start;if(e===`duration`)return(e,t)=>e.duration-t.duration;if(e===`status`)return(e,t)=>e.status.code-t.status.code;if(e===`method`)return(e,t)=>{let n=e.method,r=t.method;return n.localeCompare(r)};if(e===`size`)return(e,t)=>e.size-t.size;if(e===`contentType`)return(e,t)=>e.contentType.localeCompare(t.contentType);if(e===`name`)return(e,t)=>e.name.name.localeCompare(t.name.name);if(e===`route`)return(e,t)=>e.route.localeCompare(t.route);if(e===`contextId`)return(e,t)=>e.contextId.localeCompare(t.contextId)}var Yi={Fetch:e=>e.contentType===`application/json`,HTML:e=>e.contentType===`text/html`,CSS:e=>e.contentType===`text/css`,JS:e=>e.contentType.includes(`javascript`),Font:e=>e.contentType.includes(`font`),Image:e=>e.contentType.includes(`image`),WS:e=>e.resource._resourceType===`websocket`};function Xi({searchValue:e,resourceTypes:t}){return n=>(t.size===0||Array.from(t).some(e=>Yi[e](n)))&&n.name.url.toLowerCase().includes(e.toLowerCase())}function Zi(e){return e.box.cursor===`pointer`}function Qi(e,t,n={}){let r=new e.LineCounter,i={keepSourceTokens:!0,lineCounter:r,...n},a=e.parseDocument(t,i),o=[],s=e=>[r.linePos(e[0]),r.linePos(e[1])],c=e=>{o.push({message:e.message,range:[r.linePos(e.pos[0]),r.linePos(e.pos[1])]})},l=(t,n)=>{for(let r of n.items){if(r instanceof e.Scalar&&typeof r.value==`string`){let e=na.parse(r,i,o);e&&(t.children=t.children||[],t.children.push(e));continue}if(r instanceof e.YAMLMap){u(t,r);continue}o.push({message:`Sequence items should be strings or maps`,range:s(r.range||n.range)})}},u=(t,n)=>{for(let r of n.items){if(t.children=t.children||[],!(r.key instanceof e.Scalar&&typeof r.key.value==`string`)){o.push({message:`Only string keys are supported`,range:s(r.key.range||n.range)});continue}let a=r.key,c=r.value;if(a.value===`text`){if(!(c instanceof e.Scalar&&typeof c.value==`string`)){o.push({message:`Text value should be a string`,range:s(r.value.range||n.range)});continue}t.children.push({kind:`text`,text:ta(c.value)});continue}if(a.value===`/children`){if(!(c instanceof e.Scalar&&typeof c.value==`string`)||c.value!==`contain`&&c.value!==`equal`&&c.value!==`deep-equal`){o.push({message:`Strict value should be "contain", "equal" or "deep-equal"`,range:s(r.value.range||n.range)});continue}t.containerMode=c.value;continue}if(a.value.startsWith(`/`)){if(!(c instanceof e.Scalar&&typeof c.value==`string`)){o.push({message:`Property value should be a string`,range:s(r.value.range||n.range)});continue}t.props=t.props??{},t.props[a.value.slice(1)]=ta(c.value);continue}let u=na.parse(a,i,o);if(u){if(c instanceof e.Scalar){let e=typeof c.value;if(e!==`string`&&e!==`number`&&e!==`boolean`){o.push({message:`Node value should be a string or a sequence`,range:s(r.value.range||n.range)});continue}t.children.push({...u,children:[{kind:`text`,text:ta(String(c.value))}]});continue}if(c instanceof e.YAMLSeq){t.children.push(u),l(u,c);continue}o.push({message:`Map values should be strings or sequences`,range:s(r.value.range||n.range)})}}},d={kind:`role`,role:`fragment`};return a.errors.forEach(c),o.length||(a.contents instanceof e.YAMLSeq||o.push({message:`Aria snapshot must be a YAML sequence, elements starting with " -"`,range:a.contents?s(a.contents.range):[{line:0,col:0},{line:0,col:0}]}),o.length)?{errors:o,fragment:d}:(l(d,a.contents),o.length?{errors:o,fragment:$i}:d.children?.length===1&&(!d.containerMode||d.containerMode===`contain`)?{fragment:d.children[0],errors:[]}:{fragment:d,errors:[]})}var $i={kind:`role`,role:`fragment`};function ea(e){return e.replace(/[\u200b\u00ad]/g,``).replace(/[\r\n\s\t]+/g,` `).trim()}function ta(e){return{raw:e,normalized:ea(e)}}var na=class e{static parse(t,n,r){try{return new e(t.value)._parse()}catch(e){if(e instanceof ra){let i=n.prettyErrors===!1?e.message:e.message+`: - -`+t.value+` -`+` `.repeat(e.pos)+`^ -`;return r.push({message:i,range:[n.lineCounter.linePos(t.range[0]),n.lineCounter.linePos(t.range[0]+e.pos)]}),null}throw e}}constructor(e){this._input=e,this._pos=0,this._length=e.length}_peek(){return this._input[this._pos]||``}_next(){return this._pos=this._length}_isWhitespace(){return!this._eof()&&/\s/.test(this._peek())}_skipWhitespace(){for(;this._isWhitespace();)this._pos++}_readIdentifier(e){this._eof()&&this._throwError(`Unexpected end of input when expecting ${e}`);let t=this._pos;for(;!this._eof()&&/[a-zA-Z]/.test(this._peek());)this._pos++;return this._input.slice(t,this._pos)}_readString(){let e=``,t=!1;for(;!this._eof();){let n=this._next();if(t)e+=n,t=!1;else if(n===`\\`)t=!0;else if(n===`"`)return e;else e+=n}this._throwError(`Unterminated string`)}_throwError(e,t=0){throw new ra(e,t||this._pos)}_readRegex(){let e=``,t=!1,n=!1;for(;!this._eof();){let r=this._next();if(t)e+=r,t=!1;else if(r===`\\`)t=!0,e+=r;else if(r===`/`&&!n)return{pattern:e};else r===`[`?(n=!0,e+=r):r===`]`&&n?(e+=r,n=!1):e+=r}this._throwError(`Unterminated regex`)}_readStringOrRegex(){let e=this._peek();return e===`"`?(this._next(),ea(this._readString())):e===`/`?(this._next(),this._readRegex()):null}_readAttributes(e){let t=this._pos;for(;this._skipWhitespace(),this._peek()===`[`;){this._next(),this._skipWhitespace(),t=this._pos;let n=this._readIdentifier(`attribute`);this._skipWhitespace();let r=``;if(this._peek()===`=`)for(this._next(),this._skipWhitespace(),t=this._pos;this._peek()!==`]`&&!this._isWhitespace()&&!this._eof();)r+=this._next();this._skipWhitespace(),this._peek()!==`]`&&this._throwError(`Expected ]`),this._next(),this._applyAttribute(e,n,r||`true`,t)}}_parse(){this._skipWhitespace();let e=this._readIdentifier(`role`);this._skipWhitespace();let t={kind:`role`,role:e,name:this._readStringOrRegex()||``};return this._readAttributes(t),this._skipWhitespace(),this._eof()||this._throwError(`Unexpected input`),t}_applyAttribute(e,t,n,r){if(t===`checked`){this._assert(n===`true`||n===`false`||n===`mixed`,`Value of "checked" attribute must be a boolean or "mixed"`,r),e.checked=n===`true`?!0:n===`false`?!1:`mixed`;return}if(t===`disabled`){this._assert(n===`true`||n===`false`,`Value of "disabled" attribute must be a boolean`,r),e.disabled=n===`true`;return}if(t===`expanded`){this._assert(n===`true`||n===`false`,`Value of "expanded" attribute must be a boolean`,r),e.expanded=n===`true`;return}if(t===`active`){this._assert(n===`true`||n===`false`,`Value of "active" attribute must be a boolean`,r),e.active=n===`true`;return}if(t===`invalid`){this._assert(n===`true`||n===`false`||n===`grammar`||n===`spelling`,`Value of "invalid" attribute must be a boolean, "grammar" or "spelling"`,r),e.invalid=n===`true`?!0:n===`false`?!1:n;return}if(t===`level`){this._assert(!isNaN(Number(n)),`Value of "level" attribute must be a number`,r),e.level=Number(n);return}if(t===`pressed`){this._assert(n===`true`||n===`false`||n===`mixed`,`Value of "pressed" attribute must be a boolean or "mixed"`,r),e.pressed=n===`true`?!0:n===`false`?!1:`mixed`;return}if(t===`selected`){this._assert(n===`true`||n===`false`,`Value of "selected" attribute must be a boolean`,r),e.selected=n===`true`;return}this._assert(!1,`Unsupported attribute [${t}]`,r)}_assert(e,t,n){e||this._throwError(t||`Assertion error`,n)}},ra=class extends Error{constructor(e,t){super(e),this.pos=t}};function ia(e,t){function n(e,t,r){let i=1,a=r+i;for(let r of e.children||[])typeof r==`string`?(i++,a++):(i+=n(r,t,a),a+=i);if(![`none`,`presentation`,`fragment`,`iframe`,`generic`].includes(e.role)&&e.name){let n=t.get(e.role);n||(n=new Map,t.set(e.role,n));let a=n.get(e.name),o=i*100-r;(!a||a.sizeAndPositiont.sizeAndPosition-e.sizeAndPosition),a[0]?.node}function aa(e,t,n){return`internal:attr=[${e}=${u(t,n?.exact||!1)}]`}function oa(e){return e.split(`,`)}function sa(e){return e.includes(`,`)?JSON.stringify(e):e}function ca(e,t){return`internal:testid=[${sa(e)}=${u(t,!0)}]`}function la(e,t){return`internal:label=`+i(e,!!t?.exact)}function ua(e,t){return aa(`alt`,e,t)}function da(e,t){return aa(`title`,e,t)}function fa(e,t){return aa(`placeholder`,e,t)}function pa(e,t){return`internal:text=`+i(e,!!t?.exact)}function ma(e,t={}){let n=[];return t.checked!==void 0&&n.push([`checked`,String(t.checked)]),t.disabled!==void 0&&n.push([`disabled`,String(t.disabled)]),t.selected!==void 0&&n.push([`selected`,String(t.selected)]),t.expanded!==void 0&&n.push([`expanded`,String(t.expanded)]),t.includeHidden!==void 0&&n.push([`include-hidden`,String(t.includeHidden)]),t.level!==void 0&&n.push([`level`,String(t.level)]),t.name!==void 0&&n.push([`name`,u(t.name,!!t.exact)]),t.description!==void 0&&n.push([`description`,u(t.description,!!t.exact)]),t.pressed!==void 0&&n.push([`pressed`,String(t.pressed)]),`internal:role=${e}${n.map(([e,t])=>`[${e}=${t}]`).join(``)}`}function ha(e){return _a(e)?`'`+e.replace(/'/g,`''`)+`'`:e}function ga(e){return _a(e)?`"`+e.replace(/[\\"\x00-\x1f\x7f-\x9f]/g,e=>{switch(e){case`\\`:return`\\\\`;case`"`:return`\\"`;case`\b`:return`\\b`;case`\f`:return`\\f`;case` -`:return`\\n`;case`\r`:return`\\r`;case` `:return`\\t`;default:return`\\x`+e.charCodeAt(0).toString(16).padStart(2,`0`)}})+`"`:e}function _a(e){return!!(e.length===0||/^\s|\s$/.test(e)||/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/.test(e)||/^-/.test(e)||/[\n:](\s|$)/.test(e)||/\s#/.test(e)||/[\n\r]/.test(e)||/^[&*\],?!>|@"'#%]/.test(e)||/[{}`]/.test(e)||/^\[/.test(e)||!isNaN(Number(e))||[`y`,`n`,`yes`,`no`,`true`,`false`,`on`,`off`,`null`].includes(e.toLowerCase()))}function va(e,t){ya(e,t.mode===`ai`?ka:Oa,t)}function ya(e,t,n){let r={snapshot:e,depth:-1,maxDepth:n.depth,ancestors:[],pendingContentRefs:new Set},i=(e,n)=>{let a=[],o=e=>{if(typeof e==`string`){a.push(e);return}r.depth=n+1;for(let n of t){let t=n.enter?.(e,r);if(t===`remove`)return;if(t===`unwrap`){e.children.forEach(o);return}}i(e,n+1),r.depth=n+1;for(let n of t){let t=n.exit?.(e,r);if(t===`remove`)return;if(t===`unwrap`){a.push(...e.children);return}}a.push(e)};r.ancestors.push(e),e.children.forEach(o),r.ancestors.pop(),e.children=a};for(let n of t)n.enter?.(e.root,r);i(e.root,-1),r.depth=-1;for(let n of t)n.exit?.(e.root,r)}function ba(e){return e.role===`generic`&&e.children.every(e=>typeof e==`string`)}function xa(e,t){return!!e.ref&&Zi(e)&&!t.ancestors.some(e=>!!e.ref&&Zi(e))}var Sa={name:`mergeStringChildren`,exit(e){let t=[],n=[],r=()=>{if(!n.length)return;let e=a(n.join(``));e&&t.push(e),n.length=0};for(let i of e.children)typeof i==`string`?n.push(i):(r(),t.push(i));r(),e.children=t,e.children.length===1&&e.children[0]===e.name&&(e.children=[])}},Ca={name:`unwrapSingleChildGenerics`,exit(e,t){if(!(e.role!==`generic`||e.name||e.children.length>1||!e.children.every(e=>typeof e!=`string`&&!!e.ref))&&!(!e.children.length&&xa(e,t)))return`unwrap`}},wa={name:`removeNamelessImages`,exit(e,t){if(e.role===`img`&&!e.name&&!e.children.length&&!xa(e,t))return`remove`}},Ta={name:`removeRedundantNames`,enter(e,t){if(e.ref){for(let n of t.snapshot.info.get(e.ref)?.nameFromContentRefs||[])t.pendingContentRefs.add(n);!(t.maxDepth&&t.depth>t.maxDepth)&&!ba(e)&&t.pendingContentRefs.delete(e.ref)}},exit(e,t){if(!e.ref)return;let n=t.snapshot.info.get(e.ref)?.nameFromContentRefs;if(n?.length)if(n.every(e=>!t.pendingContentRefs.has(e)))e.name=``;else for(let e of n)t.pendingContentRefs.delete(e)}},Ea={name:`removeNameRepeatingChild`,exit(e,t){let n=t.ancestors[t.ancestors.length-1];if(!n?.name||e.role!==`generic`||e.active||Object.keys(e.props).length)return;let r=e.children.length===1&&typeof e.children[0]==`string`?e.children[0]:void 0,i=e.name?e.children.length?void 0:e.name:r;if(i&&i===n.name)return e.ref&&t.pendingContentRefs.add(e.ref),`remove`}},Da={name:`inlineTextIntoGeneric`,exit(e){if(e.role!==`generic`||Object.keys(e.props).length||e.children.length!==1)return;let t=e.children[0];typeof t!=`string`&&(t.role!==`generic`||t.name||t.active||Object.keys(t.props).length||t.children.length===1&&typeof t.children[0]==`string`&&(e.children=[t.children[0]]))}},Oa=[Sa,Ca],ka=[Sa,wa,Ta,Da,Ea,Ca],Aa={};function ja(e){Aa=e}function Ma(e,t){for(;t;){if(e.contains(t))return!0;t=Fa(t)}return!1}function Na(e){if(e.parentElement)return e.parentElement;if(e.parentNode&&e.parentNode.nodeType===11&&e.parentNode.host)return e.parentNode.host}function Pa(e){let t=e;for(;t.parentNode;)t=t.parentNode;if(t.nodeType===11||t.nodeType===9)return t}function Fa(e){for(;e.parentElement;)e=e.parentElement;return Na(e)}function Ia(e,t,n){for(;e;){let r=e.closest(t);if(n&&r!==n&&r?.contains(n))return;if(r)return r;e=Fa(e)}}function La(e,t){let n=t===`::before`?Ga:t===`::after`?Ka:Wa;if(n&&n.has(e))return n.get(e);let r=e.ownerDocument&&e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,t):void 0;return n?.set(e,r),r}function Ra(e,t){let n=qa?.get(e);if(n!==void 0)return n;let r=za(e,t);return qa?.set(e,r),r}function za(e,t){if(t??=La(e),!t)return!0;if(Element.prototype.checkVisibility&&Aa.browserNameForWorkarounds!==`webkit`){if(!e.checkVisibility())return!1}else{let t=e.closest(`details,summary`);if(t!==e&&t?.nodeName===`DETAILS`&&!t.open)return!1}return t.visibility===`visible`}function Ba(e){let t=La(e);if(!t)return{visible:!0,inline:!1};let n=t.cursor;if(t.display===`contents`){for(let t=e.firstChild;t;t=t.nextSibling){if(t.nodeType===1&&Va(t))return{visible:!0,inline:!1,cursor:n};if(t.nodeType===3&&Ha(t))return{visible:!0,inline:!0,cursor:n}}return{visible:!1,inline:!1,cursor:n}}if(!Ra(e,t))return{cursor:n,visible:!1,inline:!1};let r=e.getBoundingClientRect();return{cursor:n,visible:r.width>0&&r.height>0,inline:t.display===`inline`}}function Va(e){return Ba(e).visible}function Ha(e){let t=e.ownerDocument.createRange();t.selectNode(e);let n=t.getBoundingClientRect();return n.width>0&&n.height>0}function Ua(e){let t=e.tagName;if(typeof t==`string`){let e=t.charCodeAt(0);return e>=97&&e<=122?t.toUpperCase():t}return e instanceof HTMLFormElement?`FORM`:e.tagName.toUpperCase()}var Wa,Ga,Ka,qa,Ja=0;function Ya(){++Ja,Wa??=new Map,Ga??=new Map,Ka??=new Map,qa??=new Map}function Xa(){--Ja||(Wa=void 0,Ga=void 0,Ka=void 0,qa=void 0)}function Za(e){return e.hasAttribute(`aria-label`)||e.hasAttribute(`aria-labelledby`)}var Qa=`article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]`,$a=[[`aria-atomic`,void 0],[`aria-busy`,void 0],[`aria-controls`,void 0],[`aria-current`,void 0],[`aria-describedby`,void 0],[`aria-details`,void 0],[`aria-dropeffect`,void 0],[`aria-flowto`,void 0],[`aria-grabbed`,void 0],[`aria-hidden`,void 0],[`aria-keyshortcuts`,void 0],[`aria-label`,[`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`]],[`aria-labelledby`,[`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`]],[`aria-live`,void 0],[`aria-owns`,void 0],[`aria-relevant`,void 0],[`aria-roledescription`,[`generic`]]];function eo(e,t){return $a.some(([n,r])=>!r?.includes(t||``)&&e.hasAttribute(n))}function to(e){return!Number.isNaN(Number(String(e.getAttribute(`tabindex`))))}function no(e){return!Xo(e)&&(ro(e)||to(e))}function ro(e){let t=Ua(e);return[`BUTTON`,`DETAILS`,`SELECT`,`TEXTAREA`].includes(t)?!0:t===`A`||t===`AREA`?e.hasAttribute(`href`):t===`INPUT`?!e.hidden:!1}var io={A:e=>e.hasAttribute(`href`)?`link`:null,AREA:e=>e.hasAttribute(`href`)?`link`:null,ARTICLE:()=>`article`,ASIDE:()=>`complementary`,BLOCKQUOTE:()=>`blockquote`,BUTTON:()=>`button`,CAPTION:()=>`caption`,CODE:()=>`code`,DATALIST:()=>`listbox`,DD:()=>`definition`,DEL:()=>`deletion`,DETAILS:()=>`group`,DFN:()=>`term`,DIALOG:()=>`dialog`,DT:()=>`term`,EM:()=>`emphasis`,FIELDSET:()=>`group`,FIGURE:()=>`figure`,FOOTER:e=>Ia(e,Qa)?null:`contentinfo`,FORM:e=>Za(e)?`form`:null,H1:()=>`heading`,H2:()=>`heading`,H3:()=>`heading`,H4:()=>`heading`,H5:()=>`heading`,H6:()=>`heading`,HEADER:e=>Ia(e,Qa)?null:`banner`,HR:()=>`separator`,HTML:()=>`document`,IMG:e=>e.getAttribute(`alt`)===``&&!e.getAttribute(`title`)&&!eo(e)&&!to(e)?`presentation`:`img`,INPUT:e=>{let t=e.type.toLowerCase();if([`email`,`search`,`tel`,`text`,`url`,``].includes(t)){let n=vo(e,e.getAttribute(`list`))[0];return n&&Ua(n)===`DATALIST`?`combobox`:t===`search`?`searchbox`:`textbox`}return t===`hidden`?null:t===`file`?`button`:bs[t]||`textbox`},INS:()=>`insertion`,LI:()=>`listitem`,MAIN:()=>`main`,MARK:()=>`mark`,MATH:()=>`math`,MENU:()=>`list`,METER:()=>`meter`,NAV:()=>`navigation`,OL:()=>`list`,OPTGROUP:()=>`group`,OPTION:()=>`option`,OUTPUT:()=>`status`,P:()=>`paragraph`,PROGRESS:()=>`progressbar`,SEARCH:()=>`search`,SECTION:e=>Za(e)?`region`:null,SELECT:e=>e.hasAttribute(`multiple`)||e.size>1?`listbox`:`combobox`,STRONG:()=>`strong`,SUB:()=>`subscript`,SUP:()=>`superscript`,SVG:()=>`img`,TABLE:()=>`table`,TBODY:()=>`rowgroup`,TD:e=>{let t=Ia(e,`table`),n=t?uo(t):``;return n===`grid`||n===`treegrid`?`gridcell`:`cell`},TEXTAREA:()=>`textbox`,TFOOT:()=>`rowgroup`,TH:e=>{let t=e.getAttribute(`scope`);if(t===`col`||t===`colgroup`)return`columnheader`;if(t===`row`||t===`rowgroup`)return`rowheader`;let n=e.nextElementSibling,r=e.previousElementSibling,i=e.parentElement&&Ua(e.parentElement)===`TR`?e.parentElement:void 0;if(!n&&!r){if(i){let e=Ia(i,`table`);if(e&&e.rows.length<=1)return null}return`columnheader`}return ao(n)&&ao(r)?`columnheader`:oo(n)||oo(r)?`rowheader`:`columnheader`},THEAD:()=>`rowgroup`,TIME:()=>`time`,TR:()=>`row`,UL:()=>`list`};function ao(e){return!!e&&Ua(e)===`TH`}function oo(e){return!e||Ua(e)!==`TD`?!1:!!(e.textContent?.trim()||e.children.length>0)}var so={DD:[`DL`,`DIV`],DIV:[`DL`],DT:[`DL`,`DIV`],LI:[`OL`,`UL`],TBODY:[`TABLE`],TD:[`TR`],TFOOT:[`TABLE`],TH:[`TR`],THEAD:[`TABLE`],TR:[`THEAD`,`TBODY`,`TFOOT`,`TABLE`]};function co(e){let t=io[Ua(e)]?.(e)||``;if(!t)return null;let n=e;for(;n;){let e=Na(n),t=so[Ua(n)];if(!t||!e||!t.includes(Ua(e)))break;let r=uo(e);if((r===`none`||r===`presentation`)&&!fo(e,r))return r;n=e}return t}var lo=`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.complementary.contentinfo.definition.deletion.dialog.directory.document.emphasis.feed.figure.form.generic.grid.gridcell.group.heading.img.insertion.link.list.listbox.listitem.log.main.mark.marquee.math.meter.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.region.row.rowgroup.rowheader.scrollbar.search.searchbox.separator.slider.spinbutton.status.strong.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem`.split(`.`);function uo(e){return(e.getAttribute(`role`)||``).split(` `).map(e=>e.trim()).find(e=>lo.includes(e))||null}function fo(e,t){return eo(e,t)||no(e)}function po(e){let t=hs?.get(e);if(t!==void 0)return t;let n=mo(e);return hs?.set(e,n),n}function mo(e){let t=uo(e);if(!t)return co(e);if(t===`none`||t===`presentation`){let t=co(e);if(fo(e,t))return t}return t}function ho(e){return e===null?void 0:e.toLowerCase()===`true`}function go(e){return[`STYLE`,`SCRIPT`,`NOSCRIPT`,`TEMPLATE`].includes(Ua(e))}function P(e){if(go(e))return!0;let t=La(e),n=e.nodeName===`SLOT`;if(t?.display===`contents`&&!n){for(let t=e.firstChild;t;t=t.nextSibling)if(t.nodeType===1&&!P(t)||t.nodeType===3&&Ha(t))return!1;return!0}return!(e.nodeName===`OPTION`&&e.closest(`select`))&&!n&&!Ra(e,t)?!0:_o(e)}function _o(e){let t=us?.get(e);if(t===void 0){if(t=!1,e.parentElement&&e.parentElement.shadowRoot&&!e.assignedSlot&&(t=!0),!t){let n=La(e);t=!n||n.display===`none`||ho(e.getAttribute(`aria-hidden`))===!0}if(!t){let n=Na(e);n&&(t=_o(n))}us?.set(e,t)}return t}function vo(e,t){if(!t)return[];let n=Pa(e);if(!n)return[];try{let e=t.split(` `).filter(e=>!!e),r=[];for(let t of e){let e=n.querySelector(`#`+CSS.escape(t));e&&!r.includes(e)&&r.push(e)}return r}catch{return[]}}function F(e){return e.trim()}function I(e){return e.split(`\xA0`).map(e=>e.replace(/\r\n/g,` -`).replace(/[\u200b\u00ad]/g,``).replace(/\s\s*/g,` `)).join(`\xA0`).trim()}function yo(e,t){let n=[...e.querySelectorAll(t)];for(let r of vo(e,e.getAttribute(`aria-owns`)))r.matches(t)&&n.push(r),n.push(...r.querySelectorAll(t));return n}function bo(e,t){let n=t===`::before`?fs:t===`::after`?ps:ds;if(n?.has(e))return n?.get(e);let r=La(e,t),i;if(r){let n=r.content;n&&n!==`none`&&n!==`normal`&&r.display!==`none`&&r.visibility!==`hidden`&&(i=xo(e,n,!!t))}return t&&i!==void 0&&(r?.display||`inline`)!==`inline`&&(i=` `+i+` `),n&&n.set(e,i),i}function xo(e,t,n){if(!(!t||t===`none`||t===`normal`))try{let r=Tt(t).filter(e=>!(e instanceof kt)),i=r.findIndex(e=>e instanceof Yt&&e.value===`/`);if(i!==-1)r=r.slice(i+1);else if(!n)return;let a=[],o=0;for(;ojo(e,{includeHidden:t,visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:P(e)}}).text).join(` `)):e.hasAttribute(`aria-description`)?I(e.getAttribute(`aria-description`)||``):I(e.getAttribute(`title`)||``),n?.set(e,r)),r}var Do=[`application`,`checkbox`,`columnheader`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`rowheader`,`searchbox`,`slider`,`spinbutton`,`switch`,`textbox`,`tree`];function Oo(e){let t=e.getAttribute(`aria-invalid`);return!t||t.trim()===``||t.toLocaleLowerCase()===`false`?`false`:t===`true`||t===`grammar`||t===`spelling`?t:`true`}function ko(e){return`validity`in e?e.validity?.valid===!1:!1}function Ao(e){let t=ls,n=ls?.get(e);if(n===void 0){n=``;let r=Oo(e)!==`false`,i=ko(e);(r||i)&&(n=vo(e,e.getAttribute(`aria-errormessage`)).map(e=>I(jo(e,{visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:P(e)}}).text)).join(` `).trim()),t?.set(e,n)}return n}function jo(e,t){if(t.visitedElements.has(e))return xs();let n={...t,embeddedInTargetElement:t.embeddedInTargetElement===`self`?`descendant`:t.embeddedInTargetElement};if(!t.includeHidden){let n=!!t.embeddedInLabelledBy?.hidden||!!t.embeddedInDescribedBy?.hidden||!!t.embeddedInNativeTextAlternative?.hidden||!!t.embeddedInLabel?.hidden;if(go(e)||!n&&P(e))return t.visitedElements.add(e),xs()}let r=So(e);if(!t.embeddedInLabelledBy){let e=Ss((r||[]).map(e=>jo(e,{...t,embeddedInLabelledBy:{element:e,hidden:P(e)},embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0})),` `,t.collectElements);if(e.text)return e}let i=po(e)||``,a=Ua(e);if(t.embeddedInLabel||t.embeddedInLabelledBy||t.embeddedInTargetElement===`descendant`){let o=[...e.labels||[]].includes(e),s=(r||[]).includes(e);if(!o&&!s){if(i===`textbox`)return t.visitedElements.add(e),R(a===`INPUT`||a===`TEXTAREA`?e.value:e.textContent,e,t.collectElements);if([`combobox`,`listbox`].includes(i)){t.visitedElements.add(e);let r;if(a===`SELECT`)r=[...e.selectedOptions],!r.length&&e.options.length&&r.push(e.options[0]);else{let t=i===`combobox`?yo(e,`*`).find(e=>po(e)===`listbox`):e;r=t?yo(t,`[aria-selected="true"]`).filter(e=>po(e)===`option`):[]}return!r.length&&a===`INPUT`?R(e.value,e,t.collectElements):Ss(r.map(e=>jo(e,n)),` `,t.collectElements)}if([`progressbar`,`scrollbar`,`slider`,`spinbutton`,`meter`].includes(i))return t.visitedElements.add(e),e.hasAttribute(`aria-valuetext`)?R(e.getAttribute(`aria-valuetext`),e,t.collectElements):e.hasAttribute(`aria-valuenow`)?R(e.getAttribute(`aria-valuenow`),e,t.collectElements):R(e.getAttribute(`value`),e,t.collectElements);if([`menu`].includes(i))return t.visitedElements.add(e),xs()}}let o=e.getAttribute(`aria-label`)||``;if(F(o))return t.visitedElements.add(e),R(o,e,t.collectElements);if(![`presentation`,`none`].includes(i)){if(a===`INPUT`&&[`button`,`submit`,`reset`].includes(e.type)){t.visitedElements.add(e);let n=e.value||``;return F(n)?R(n,e,t.collectElements):e.type===`submit`?R(`Submit`,e,t.collectElements):e.type===`reset`?R(`Reset`,e,t.collectElements):R(e.getAttribute(`title`)||``,e,t.collectElements)}if(a===`INPUT`&&e.type===`file`){t.visitedElements.add(e);let n=e.labels||[];return n.length&&!t.embeddedInLabelledBy?ts(n,t):R(`Choose File`,e,t.collectElements)}if(a===`INPUT`&&e.type===`image`){t.visitedElements.add(e);let n=e.labels||[];if(n.length&&!t.embeddedInLabelledBy)return ts(n,t);let r=e.getAttribute(`alt`)||``;if(F(r))return R(r,e,t.collectElements);let i=e.getAttribute(`title`)||``;return F(i)?R(i,e,t.collectElements):R(`Submit`,e,t.collectElements)}if(!r&&a===`BUTTON`){t.visitedElements.add(e);let n=e.labels||[];if(n.length)return ts(n,t)}if(!r&&a===`OUTPUT`){t.visitedElements.add(e);let n=e.labels||[];return n.length?ts(n,t):R(e.getAttribute(`title`)||``,e,t.collectElements)}if(!r&&(a===`TEXTAREA`||a===`SELECT`||a===`INPUT`||a===`METER`||a===`PROGRESS`)){t.visitedElements.add(e);let n=e.labels||[];if(n.length)return ts(n,t);let r=a===`INPUT`&&[`text`,`password`,`number`,`search`,`tel`,`email`,`url`].includes(e.type)||a===`TEXTAREA`,i=e.getAttribute(`placeholder`)||``,o=e.getAttribute(`title`)||``;return R(!r||o?o:i,e,t.collectElements)}if(!r&&a===`FIELDSET`){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(Ua(t)===`LEGEND`)return jo(t,{...n,embeddedInNativeTextAlternative:{element:t,hidden:P(t)}});return R(e.getAttribute(`title`)||``,e,t.collectElements)}if(!r&&a===`FIGURE`){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(Ua(t)===`FIGCAPTION`)return jo(t,{...n,embeddedInNativeTextAlternative:{element:t,hidden:P(t)}});return R(e.getAttribute(`title`)||``,e,t.collectElements)}if(a===`IMG`){t.visitedElements.add(e);let n=e.getAttribute(`alt`)||``;return F(n)?R(n,e,t.collectElements):R(e.getAttribute(`title`)||``,e,t.collectElements)}if(a===`TABLE`){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(Ua(t)===`CAPTION`)return jo(t,{...n,embeddedInNativeTextAlternative:{element:t,hidden:P(t)}});let r=e.getAttribute(`summary`)||``;if(r)return R(r,e,t.collectElements)}if(a===`AREA`){t.visitedElements.add(e);let n=e.getAttribute(`alt`)||``;return F(n)?R(n,e,t.collectElements):R(e.getAttribute(`title`)||``,e,t.collectElements)}if(a===`SVG`||e.ownerSVGElement){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(Ua(t)===`TITLE`&&t.ownerSVGElement)return jo(t,{...n,embeddedInLabelledBy:{element:t,hidden:P(t)}})}if(e.ownerSVGElement&&a===`A`){let n=e.getAttribute(`xlink:title`)||``;if(F(n))return t.visitedElements.add(e),R(n,e,t.collectElements)}}let s=a===`SUMMARY`&&![`presentation`,`none`].includes(i);if(Co(i,t.embeddedInTargetElement===`descendant`)||s||t.embeddedInLabelledBy||t.embeddedInDescribedBy||t.embeddedInLabel||t.embeddedInNativeTextAlternative){t.visitedElements.add(e);let r=Mo(e,n);if(t.embeddedInTargetElement===`self`?F(r.text):r.text)return r.elements?.add(e),r}if(![`presentation`,`none`].includes(i)||a===`IFRAME`||a===`FRAME`){t.visitedElements.add(e);let n=e.getAttribute(`title`)||``;if(F(n))return R(n,e,t.collectElements)}return t.visitedElements.add(e),xs()}function Mo(e,t){let n=[],r=t.collectElements?new Set:void 0,i=(e,i)=>{if(!(i&&e.assignedSlot))if(e.nodeType===1){let i=La(e)?.display||`inline`,a=jo(e,t),o=a.text;for(let e of a.elements||[])r?.add(e);(i!==`inline`||e.nodeName===`BR`)&&(o=` `+o+` `),n.push(o)}else e.nodeType===3&&n.push(e.textContent||``)};n.push(bo(e,`::before`)||``);let a=bo(e);if(a!==void 0)n.push(a);else{let t=e.nodeName===`SLOT`?e.assignedNodes():[];if(t.length)for(let e of t)i(e,!1);else{for(let t=e.firstChild;t;t=t.nextSibling)i(t,!0);if(e.shadowRoot)for(let t=e.shadowRoot.firstChild;t;t=t.nextSibling)i(t,!0);for(let t of vo(e,e.getAttribute(`aria-owns`)))i(t,!0)}}return n.push(bo(e,`::after`)||``),{text:n.join(``),elements:r}}var No=[`gridcell`,`option`,`row`,`tab`,`rowheader`,`columnheader`,`treeitem`];function Po(e){return Ua(e)===`OPTION`?e.selected:No.includes(po(e)||``)?ho(e.getAttribute(`aria-selected`))===!0:!1}var Fo=[`checkbox`,`menuitemcheckbox`,`option`,`radio`,`switch`,`menuitemradio`,`treeitem`];function Io(e){let t=zo(e,!0);return t===`error`?!1:t}function Lo(e){return zo(e,!0)}function Ro(e){return zo(e,!1)}function zo(e,t){let n=Ua(e);if(t&&n===`INPUT`&&e.indeterminate)return`mixed`;if(n===`INPUT`&&[`checkbox`,`radio`].includes(e.type))return e.checked;if(Fo.includes(po(e)||``)){let n=e.getAttribute(`aria-checked`);return n===`true`?!0:t&&n===`mixed`?`mixed`:!1}return`error`}var Bo=[`checkbox`,`combobox`,`grid`,`gridcell`,`listbox`,`radiogroup`,`slider`,`spinbutton`,`textbox`,`columnheader`,`rowheader`,`searchbox`,`switch`,`treegrid`];function Vo(e){let t=Ua(e);return[`INPUT`,`TEXTAREA`,`SELECT`].includes(t)?e.hasAttribute(`readonly`):Bo.includes(po(e)||``)?e.getAttribute(`aria-readonly`)===`true`:e.isContentEditable?!1:`error`}var Ho=[`button`];function Uo(e){if(Ho.includes(po(e)||``)){let t=e.getAttribute(`aria-pressed`);if(t===`true`)return!0;if(t===`mixed`)return`mixed`}return!1}var Wo=[`application`,`button`,`checkbox`,`combobox`,`gridcell`,`link`,`listbox`,`menuitem`,`row`,`rowheader`,`tab`,`treeitem`,`columnheader`,`menuitemcheckbox`,`menuitemradio`,`rowheader`,`switch`];function Go(e){if(Ua(e)===`DETAILS`)return e.open;if(Wo.includes(po(e)||``)){let t=e.getAttribute(`aria-expanded`);return t===null?void 0:t===`true`}}var Ko=[`heading`,`listitem`,`row`,`treeitem`];function qo(e){let t={H1:1,H2:2,H3:3,H4:4,H5:5,H6:6}[Ua(e)];if(t)return t;if(Ko.includes(po(e)||``)){let t=e.getAttribute(`aria-level`),n=t===null?NaN:Number(t);if(Number.isInteger(n)&&n>=1)return n}return 0}var Jo=`application.button.composite.gridcell.group.input.link.menuitem.scrollbar.separator.tab.checkbox.columnheader.combobox.grid.listbox.menu.menubar.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.searchbox.select.slider.spinbutton.switch.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`);function Yo(e){return Xo(e)||$o(e)}function Xo(e){return[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`OPTION`,`OPTGROUP`].includes(Ua(e))&&(e.hasAttribute(`disabled`)||Zo(e)||Qo(e))}function Zo(e){return Ua(e)===`OPTION`&&!!e.closest(`OPTGROUP[DISABLED]`)}function Qo(e){let t=e?.closest(`FIELDSET[DISABLED]`);if(!t)return!1;let n=t.querySelector(`:scope > LEGEND`);return!n||!n.contains(e)}function $o(e){return Jo.includes(po(e)||``)?es(e):!1}function es(e){let t=gs?.get(e);if(t===void 0){let n=(e.getAttribute(`aria-disabled`)||``).toLowerCase();if(n===`true`)t=!0;else if(n===`false`)t=!1;else{let n=Na(e);t=n?es(n):!1}gs?.set(e,t)}return t}function ts(e,t){return Ss([...e].map(e=>jo(e,{...t,embeddedInLabel:{element:e,hidden:P(e)},embeddedInNativeTextAlternative:void 0,embeddedInLabelledBy:void 0,embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0})).filter(e=>!!e.text),` `,t.collectElements)}function ns(e){let t=ms,n=e,r,i=[];for(;n;n=Na(n)){let e=t.get(n);if(e!==void 0){r=e;break}i.push(n);let a=La(n);if(!a){r=!0;break}let o=a.pointerEvents;if(o){r=o!==`none`;break}}r===void 0&&(r=!0);for(let e of i)t.set(e,r);return r}var rs,is,as,os,ss,cs,ls,us,ds,fs,ps,ms,hs,gs,_s=0;function vs(){Ya(),++_s,hs??=new Map,gs??=new Map,rs??=new Map,is??=new Map,as??=new Map,os??=new Map,ss??=new Map,cs??=new Map,ls??=new Map,us??=new Map,ds??=new Map,fs??=new Map,ps??=new Map,ms??=new Map}function ys(){--_s||(rs=void 0,is=void 0,as=void 0,os=void 0,ss=void 0,cs=void 0,ls=void 0,us=void 0,ds=void 0,fs=void 0,ps=void 0,ms=void 0,hs=void 0,gs=void 0),Xa()}var bs={button:`button`,checkbox:`checkbox`,image:`button`,number:`spinbutton`,radio:`radio`,range:`slider`,reset:`button`,submit:`button`};function xs(){return{text:``}}function R(e,t,n){return{text:e||``,elements:e&&n?new Set([t]):void 0}}function Ss(e,t,n){let r;if(n){r=new Set;for(let t of e)for(let e of t.elements||[])r.add(e)}return{text:e.map(e=>e.text).join(t),elements:r}}var Cs=0;function ws(e){let t=e.boxes;return e.mode===`ai`?{visibility:`ariaOrVisible`,refs:`interactable`,refPrefix:e.refPrefix,includeGenericRole:!0,renderActive:!e.doNotRenderActive,renderCursorPointer:!0,renderBoxes:t}:e.mode===`autoexpect`?{visibility:`ariaAndVisible`,refs:`none`,renderBoxes:t}:e.mode===`codegen`?{visibility:`aria`,refs:`none`,renderStringsAsRegex:!0,renderBoxes:t}:{visibility:`aria`,refs:`none`,renderBoxes:t}}function Ts(e,t){let n=ws(t),r=new Set,i=new Map,a={root:{role:`fragment`,name:``,children:[],props:{},box:Ba(e),receivesPointerEvents:!0},info:new Map,refs:new Map,iframeRefs:[]};Ws(a.root,e);let s=(t,o,s)=>{if(r.has(o))return;if(r.add(o),o.nodeType===Node.TEXT_NODE&&o.nodeValue){if(!s)return;let e=o.nodeValue;t.role!==`textbox`&&e&&t.children.push(o.nodeValue||``);return}if(o.nodeType!==Node.ELEMENT_NODE)return;let l=o,u=!P(l),d=u;if(n.visibility===`ariaOrVisible`&&(d=u||Va(l)),n.visibility===`ariaAndVisible`&&(d=u&&Va(l)),n.visibility===`aria`&&!d)return;let f=[];if(l.hasAttribute(`aria-owns`)){let t=l.getAttribute(`aria-owns`).split(/\s+/);for(let n of t){let t=e.ownerDocument.getElementById(n);t&&f.push(t)}}let p=d?Ds(l,n,i):null,m;if(p&&(p.ref&&(m={element:l,nameFromContentRefs:[]},a.info.set(p.ref,m),a.refs.set(l,p.ref),p.role===`iframe`&&a.iframeRefs.push(p.ref)),t.children.push(p)),c(p||t,l,f,d),m)for(let e of i.get(p)||[]){let t=a.refs.get(e);t&&t!==p.ref&&m.nameFromContentRefs.push(t)}};function c(e,t,n,r){let i=(La(t)?.display||`inline`)!==`inline`||t.nodeName===`BR`?` `:``;i&&e.children.push(i),e.children.push(bo(t,`::before`)||``);let a=t.nodeName===`SLOT`?t.assignedNodes():[];if(a.length)for(let t of a)s(e,t,r);else{for(let n=t.firstChild;n;n=n.nextSibling)n.assignedSlot||s(e,n,r);if(t.shadowRoot)for(let n=t.shadowRoot.firstChild;n;n=n.nextSibling)s(e,n,r)}for(let t of n)s(e,t,r);if(e.children.push(bo(t,`::after`)||``),i&&e.children.push(i),e.children.length===1&&e.name===e.children[0]&&(e.children=[]),e.role===`link`&&t.hasAttribute(`href`)){let n=t.getAttribute(`href`);e.props.url=o(n)}if(e.role===`textbox`&&t.hasAttribute(`placeholder`)&&t.getAttribute(`placeholder`)!==e.name){let n=t.getAttribute(`placeholder`);e.props.placeholder=n}}vs();try{s(a.root,e,!0)}finally{ys()}return va(a,t),a}function Es(e,t){if(t.refs===`none`||t.refs===`interactable`&&(!e.box.visible||!e.receivesPointerEvents))return;let n=Us(e),r=n._ariaRef;(!r||r.role!==e.role||r.name!==e.name)&&(r={role:e.role,name:e.name,ref:(t.refPrefix??``)+`e`+ ++Cs},n._ariaRef=r),e.ref=r.ref}function Ds(e,t,n){let r=e.ownerDocument.activeElement===e&&e.ownerDocument.hasFocus();if(e.nodeName===`IFRAME`||e.nodeName===`FRAME`){let n={role:`iframe`,name:``,children:[],props:{},box:Ba(e),receivesPointerEvents:!0,active:r};return Ws(n,e),Es(n,t),n}let i=t.includeGenericRole?`generic`:null,o=po(e)??i;if(!o||o===`presentation`||o===`none`)return null;let s=To(e,!1),c=ns(e),l=Ba(e);if(o===`generic`&&l.inline&&e.childNodes.length===1&&e.childNodes[0].nodeType===Node.TEXT_NODE)return null;let u={role:o,name:a(s.text),children:[],props:{},box:l,receivesPointerEvents:c,active:r};if(Ws(u,e),n.set(u,s.elements),Es(u,t),Fo.includes(o)&&(u.checked=Io(e)),Jo.includes(o)&&(u.disabled=Yo(e)),Wo.includes(o)&&(u.expanded=Go(e)),Do.includes(o)){let t=Oo(e);u.invalid=t===`false`?!1:t===`true`?!0:t}return Ko.includes(o)&&(u.level=qo(e)),Ho.includes(o)&&(u.pressed=Uo(e)),No.includes(o)&&(u.selected=Po(e)),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.type!==`checkbox`&&e.type!==`radio`&&e.type!==`file`&&(u.children=[e.value]),u}function Os(e,t){return t?e?typeof t==`string`?e===t:!!e.match(new RegExp(t.pattern)):!1:!0}function ks(e,t){if(!t?.normalized)return!0;if(!e)return!1;if(e===t.normalized||e===t.raw)return!0;let n=js(t);return n?!!e.match(n):!1}var As=Symbol(`cachedRegex`);function js(e){if(e[As]!==void 0)return e[As];let{raw:t}=e,n=t.startsWith(`/`)&&t.endsWith(`/`)&&t.length>1,r;try{r=n?new RegExp(t.slice(1,-1)):null}catch{r=null}return e[As]=r,r}function Ms(e,t){let n=Ts(e,{mode:`default`});return{matches:Ls(n.root,t,!1,!1),received:{raw:zs(n,{mode:`default`}).text,regex:zs(n,{mode:`codegen`}).text}}}function Ns(e,t){let n=Ts(e,{mode:`default`}).root;return Ls(n,t,!0,!1).map(e=>Us(e))}function Ps(e,t,n){return typeof e==`string`&&t.kind===`text`?ks(e,t.text):typeof e!=`object`||!e||t.kind!==`role`||t.role!==`fragment`&&t.role!==e.role||t.checked!==void 0&&t.checked!==e.checked||t.disabled!==void 0&&t.disabled!==e.disabled||t.expanded!==void 0&&t.expanded!==e.expanded||t.invalid!==void 0&&t.invalid!==e.invalid||t.level!==void 0&&t.level!==e.level||t.pressed!==void 0&&t.pressed!==e.pressed||t.selected!==void 0&&t.selected!==e.selected||!Os(e.name,t.name)||!ks(e.props.url,t.props?.url)?!1:t.containerMode===`contain`?Is(e.children||[],t.children||[]):t.containerMode===`equal`?Fs(e.children||[],t.children||[],!1):t.containerMode===`deep-equal`||n?Fs(e.children||[],t.children||[],!0):Is(e.children||[],t.children||[])}function Fs(e,t,n){if(t.length!==e.length)return!1;for(let r=0;re.length)return!1;let n=e.slice(),r=t.slice();for(let e of r){let t=n.shift();for(;t&&!Ps(t,e,!1);)t=n.shift();if(!t)return!1}return!0}function Ls(e,t,n,r){let i=[],a=(e,o)=>{if(Ps(e,t,r)){let t=typeof e==`string`?o:e;return t&&i.push(t),!n}if(typeof e==`string`)return!1;for(let t of e.children||[])if(a(t,e))return!0;return!1};return a(e,null),i}function Rs(e){return` `.repeat(e)}function zs(e,t){let n=ws(t),r=[],i={},a=n.renderStringsAsRegex?Vs:()=>!0,o=n.renderStringsAsRegex?Bs:e=>e,s=e.root.role===`fragment`?e.root.children:[e.root],c=(e,n)=>{if(t.depth&&n>t.depth)return;let i=ga(o(e));i&&r.push(Rs(n)+`- text: `+i)},l=(e,t)=>{let r=e.role;if(e.name&&e.name.length<=900){let t=o(e.name);if(t){let e=t.startsWith(`/`)&&t.endsWith(`/`)?t:JSON.stringify(t);r+=` `+e}}if(e.checked===`mixed`&&(r+=` [checked=mixed]`),e.checked===!0&&(r+=` [checked]`),e.disabled&&(r+=` [disabled]`),e.expanded&&(r+=` [expanded]`),e.active&&n.renderActive&&(r+=` [active]`),(e.invalid===`grammar`||e.invalid===`spelling`)&&(r+=` [invalid=${e.invalid}]`),e.invalid===!0&&(r+=` [invalid]`),e.level&&(r+=` [level=${e.level}]`),e.pressed===`mixed`&&(r+=` [pressed=mixed]`),e.pressed===!0&&(r+=` [pressed]`),e.selected===!0&&(r+=` [selected]`),e.ref&&(r+=` [ref=${e.ref}]`,t&&Zi(e)&&(r+=` [cursor=pointer]`)),n.renderBoxes){let t=Us(e);if(t){let e=t.getBoundingClientRect();r+=` [box=${Math.round(e.x)},${Math.round(e.y)},${Math.round(e.width)},${Math.round(e.height)}]`}}return r},u=e=>e.children.length===1&&typeof e.children[0]==`string`&&!Object.keys(e.props).length?e.children[0]:void 0,d=(e,n,s)=>{if(t.depth&&n>t.depth)return;e.role===`iframe`&&e.ref&&(i[e.ref]=n);let f=Rs(n)+`- `+ha(l(e,s)),p=u(e),m=!!t.depth&&n===t.depth;if(!p&&(!e.children.length||m)&&!Object.keys(e.props).length)r.push(f);else if(p!==void 0)a(e,p)?r.push(f+`: `+ga(o(p))):r.push(f);else{r.push(f+`:`);for(let[t,i]of Object.entries(e.props))r.push(Rs(n+1)+`- /`+t+`: `+ga(i));let t=!!e.ref&&s&&Zi(e);for(let r of e.children)typeof r==`string`?c(a(e,r)?r:``,n+1):d(r,n+1,s&&!t)}};for(let e of s)typeof e==`string`?c(e,0):d(e,0,!!n.renderCursorPointer);return{text:r.join(` -`),iframeDepths:i}}function Bs(t){let n=[{regex:/\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\b/,replacement:`[0-9a-fA-F-]+`},{regex:/\b[\d,.]+[bkmBKM]+\b/,replacement:`[\\d,.]+[bkmBKM]+`},{regex:/\b\d+[hmsp]+\b/,replacement:`\\d+[hmsp]+`},{regex:/\b[\d,.]+[hmsp]+\b/,replacement:`[\\d,.]+[hmsp]+`},{regex:/\b\d+,\d+\b/,replacement:`\\d+,\\d+`},{regex:/\b\d+\.\d{2,}\b/,replacement:`\\d+\\.\\d+`},{regex:/\b\d{2,}\.\d+\b/,replacement:`\\d+\\.\\d+`},{regex:/\b\d{2,}\b/,replacement:`\\d+`}],r=``,i=0,a=new RegExp(n.map(e=>`(`+e.regex.source+`)`).join(`|`),`g`);return t.replace(a,(a,...o)=>{let s=o[o.length-2],c=o.slice(0,-2);r+=e(t.slice(i,s));for(let e=0;e.1}var Hs=Symbol(`element`);function Us(e){return e[Hs]}function Ws(e,t){e[Hs]=t}function Gs(e,t){let n=ia(e,t);return n?Us(n):void 0}var Ks=`:host{color:#333;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,Ubuntu,Droid Sans,sans-serif;font-size:13px}svg{height:0;position:absolute}x-pw-tooltip{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#fff;border-radius:6px;flex-direction:column;max-width:600px;padding:0;font-size:12.8px;font-weight:400;line-height:1.5;display:none;position:absolute;top:0;left:0;overflow:hidden;box-shadow:0 .5rem 1.2rem #0000004d}x-pw-tooltip-line{-webkit-user-select:none;user-select:none;cursor:pointer;max-width:600px;padding:6px;display:flex}x-pw-tooltip-footer{-webkit-user-select:none;user-select:none;color:#777;max-width:600px;padding:6px;display:flex}x-pw-dialog{pointer-events:auto;z-index:10;background-color:#fff;border-radius:6px;flex-direction:column;font-size:13px;display:flex;position:absolute;box-shadow:0 .5rem 1.2rem #0000004d}x-pw-dialog:not(.autosize){width:400px;height:150px}x-pw-dialog-body{flex-direction:column;flex:auto;display:flex}x-pw-dialog-body label{flex-direction:row;align-items:center;margin:5px 8px;display:flex}x-pw-highlight{width:0;height:0;position:absolute;top:0;left:0}x-pw-action-point{z-index:2;background:red;border-radius:10px;width:20px;height:20px;margin:-10px 0 0 -10px;position:absolute}x-pw-action-cursor{pointer-events:none;z-index:4;filter:drop-shadow(0 1px 2px #0006);width:18px;height:22px;position:absolute}x-pw-action-cursor svg{width:100%;height:100%;position:static}x-pw-title{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:#fff;white-space:nowrap;-webkit-user-select:none;user-select:none;z-index:3;background-color:#00000080;border-radius:6px;padding:6px;font-size:24px;line-height:1.4;position:absolute}x-pw-user-overlays,x-pw-user-overlay{position:absolute;inset:0}@keyframes pw-fade-out{0%{opacity:1}to{opacity:0}}x-pw-separator{background:#949494e6;height:1px;margin:6px 9px}x-pw-tool-gripper{cursor:grab;width:24px;height:28px;margin:2px 0}x-pw-tool-gripper:active{cursor:grabbing}x-pw-tool-gripper>x-div{clip-path:url(#icon-gripper);background-color:#555;width:16px;height:16px;margin:6px 4px}x-pw-tools-list>label{-webkit-user-select:none;user-select:none;align-items:center;margin:0 10px;display:flex}x-pw-tools-list{border-bottom:1px solid #ddd;width:100%;display:flex}x-pw-tool-item{pointer-events:auto;border-radius:3px;width:28px;height:28px}x-pw-tool-item:not(.disabled){cursor:pointer}x-pw-tool-item:not(.disabled):hover{background-color:#dbdbdb}x-pw-tool-item.toggled{background-color:#8acae480}x-pw-tool-item.toggled:not(.disabled):hover{background-color:#8acae4c4}x-pw-tool-item>x-div{background-color:#3a3a3a;width:16px;height:16px;margin:6px}x-pw-tool-item.disabled>x-div{cursor:default;background-color:#61616180}x-pw-tool-item.record.toggled{background-color:#0000}x-pw-tool-item.record.toggled:not(.disabled):hover{background-color:#dbdbdb}x-pw-tool-item.record.toggled>x-div{background-color:#a1260d}x-pw-tool-item.record.disabled.toggled>x-div{opacity:.8}x-pw-tool-item.accept>x-div{background-color:#388a34}x-pw-tool-item.record>x-div{clip-path:url(#icon-circle-large-filled)}x-pw-tool-item.record.toggled>x-div{clip-path:url(#icon-stop-circle)}x-pw-tool-item.pick-locator>x-div{clip-path:url(#icon-inspect)}x-pw-tool-item.text>x-div{clip-path:url(#icon-whole-word)}x-pw-tool-item.visibility>x-div{clip-path:url(#icon-eye)}x-pw-tool-item.value>x-div{clip-path:url(#icon-symbol-constant)}x-pw-tool-item.snapshot>x-div{clip-path:url(#icon-gist)}x-pw-tool-item.accept>x-div{clip-path:url(#icon-check)}x-pw-tool-item.cancel>x-div{clip-path:url(#icon-close)}x-pw-tool-item.succeeded>x-div{clip-path:url(#icon-pass);background-color:#388a34!important}x-pw-overlay{z-index:2147483647;pointer-events:auto;background:0 0;max-width:min-content;position:absolute;top:0}x-pw-overlay x-pw-tools-list{background-color:#fffd;border-bottom:none;border-radius:3px;box-shadow:0 5px 5px #0000001a}x-pw-overlay x-pw-tool-item{margin:2px}textarea.text-editor{color:#333;resize:none;border:none;flex:auto;margin:6px 10px;padding:0;font-family:system-ui,Ubuntu,Droid Sans,sans-serif;font-size:13px;outline:1px solid #0000!important}textarea.text-editor.does-not-match{outline:1px solid red!important}x-div{display:block}x-spacer{flex:auto}*{box-sizing:border-box}[hidden]{display:none!important}x-locator-editor{border-bottom:1px solid #ddd;outline:1px solid #0000;flex:none;width:100%;height:60px;padding:4px}x-locator-editor.does-not-match{outline:1px solid red}.CodeMirror{width:100%!important;height:100%!important}x-pw-action-list{-webkit-user-select:none;user-select:none;flex-direction:column;flex:auto;display:flex}x-pw-action-item{cursor:pointer;padding:6px 10px;overflow:hidden}x-pw-action-item:hover{background-color:#f2f2f2}x-pw-action-item:last-child{border-bottom-right-radius:6px;border-bottom-left-radius:6px}`,qs=class{constructor(e){this._renderedEntries=[],this._userOverlays=new Map,this._userOverlayHidden=!1,this._language=`javascript`,this._elementHighlightSelectors=new Map,this._injectedScript=e;let t=e.document;if(this._isUnderTest=e.isUnderTest,this._glassPaneElement=t.createElement(`x-pw-glass`),this._glassPaneElement.setAttribute(`popover`,`manual`),this._glassPaneElement.style.inset=`0`,this._glassPaneElement.style.width=`100%`,this._glassPaneElement.style.height=`100%`,this._glassPaneElement.style.maxWidth=`none`,this._glassPaneElement.style.maxHeight=`none`,this._glassPaneElement.style.padding=`0`,this._glassPaneElement.style.margin=`0`,this._glassPaneElement.style.border=`none`,this._glassPaneElement.style.overflow=`visible`,this._glassPaneElement.style.pointerEvents=`none`,this._glassPaneElement.style.display=`flex`,this._glassPaneElement.style.backgroundColor=`transparent`,this._actionPointElement=t.createElement(`x-pw-action-point`),this._actionPointElement.setAttribute(`hidden`,`true`),this._actionCursorElement=t.createElement(`x-pw-action-cursor`),this._actionCursorElement.style.visibility=`hidden`,this._actionCursorElement.appendChild(this._createCursorSvg(t)),this._titleElement=t.createElement(`x-pw-title`),this._titleElement.setAttribute(`hidden`,`true`),this._userOverlayContainer=t.createElement(`x-pw-user-overlays`),this._userOverlayContainer.setAttribute(`hidden`,`true`),this._glassPaneShadow=this._glassPaneElement.attachShadow({mode:this._isUnderTest?`open`:`closed`}),typeof this._glassPaneShadow.adoptedStyleSheets.push==`function`){let e=new this._injectedScript.window.CSSStyleSheet;e.replaceSync(Ks),this._glassPaneShadow.adoptedStyleSheets.push(e)}else{let e=this._injectedScript.document.createElement(`style`);e.textContent=Ks,this._glassPaneShadow.appendChild(e)}this._glassPaneShadow.appendChild(this._actionPointElement),this._glassPaneShadow.appendChild(this._actionCursorElement),this._glassPaneShadow.appendChild(this._titleElement),this._glassPaneShadow.appendChild(this._userOverlayContainer)}install(){this._injectedScript.document.documentElement&&((!this._injectedScript.document.documentElement.contains(this._glassPaneElement)||this._glassPaneElement.nextElementSibling)&&this._injectedScript.document.documentElement.appendChild(this._glassPaneElement),this._bringToFront())}_bringToFront(){this._glassPaneElement.hidePopover(),this._glassPaneElement.showPopover()}setLanguage(e){this._language=e}addElementHighlight(e,t){let n=_n(e);this._elementHighlightSelectors.set(n,{selector:e,cssStyle:t}),this._ensureElementHighlightRaf()}removeElementHighlight(e){let t=_n(e);this._elementHighlightSelectors.delete(t)&&this._elementHighlightSelectors.size===0&&(this._rafRequest&&=(this._injectedScript.utils.builtins.cancelAnimationFrame(this._rafRequest),void 0),this.clearHighlight())}_ensureElementHighlightRaf(){if(this._rafRequest)return;let e=()=>{let t=[];for(let{selector:e,cssStyle:n}of this._elementHighlightSelectors.values()){let r=this._injectedScript.querySelectorAll(e,this._injectedScript.document.documentElement),i=Cn(this._language,_n(e)),a=r.length>1?`#f6b26b7f`:`#6fa8dc7f`;for(let e=0;e1?` [${e+1} of ${r.length}]`:``;t.push({element:r[e],color:a,tooltipText:i+o,cssStyle:n})}}this.updateHighlight(t),this._rafRequest=this._injectedScript.utils.builtins.requestAnimationFrame(e)};this._rafRequest=this._injectedScript.utils.builtins.requestAnimationFrame(e)}uninstall(){this._rafRequest&&=(this._injectedScript.utils.builtins.cancelAnimationFrame(this._rafRequest),void 0),this._elementHighlightSelectors.clear(),this._glassPaneElement.remove()}showActionPoint(e,t,n){this._actionPointElement.style.top=t+`px`,this._actionPointElement.style.left=e+`px`,this._actionPointElement.hidden=!1,n?this._actionPointElement.style.animation=`pw-fade-out ${n}ms ease-out forwards`:this._actionPointElement.style.animation=``}hideActionPoint(){this._actionPointElement.hidden=!0}moveActionCursor(e,t,n){let r=n?Math.max(80,Math.min(n*.6,400)):0;this._actionCursorElement.style.transition=`top ${r}ms ease, left ${r}ms ease`,this._actionCursorElement.style.left=e+`px`,this._actionCursorElement.style.top=t+`px`,this._actionCursorElement.style.visibility=`visible`}hideActionCursor(){this._actionCursorElement.style.visibility=`hidden`}_createCursorSvg(e){let t=`http://www.w3.org/2000/svg`,n=e.createElementNS(t,`svg`);n.setAttribute(`viewBox`,`0 0 18 22`);let r=e.createElementNS(t,`path`);return r.setAttribute(`d`,`M1 1 L1 17 L5.5 13 L8 20.5 L11 19.5 L8.5 12 L15 12 Z`),r.setAttribute(`fill`,`white`),r.setAttribute(`stroke`,`black`),r.setAttribute(`stroke-width`,`1.5`),r.setAttribute(`stroke-linejoin`,`round`),n.appendChild(r),n}showActionTitle(e,t,n,r){if(this._titleElement.textContent=e,this._titleElement.hidden=!1,t){let e=t/4;this._titleElement.style.animation=`pw-fade-out ${e}ms ease-out ${t-e}ms forwards`}else this._titleElement.style.animation=``;switch(this._titleElement.style.top=``,this._titleElement.style.bottom=``,this._titleElement.style.left=``,this._titleElement.style.right=``,this._titleElement.style.transform=``,n){case`top-left`:this._titleElement.style.top=`6px`,this._titleElement.style.left=`6px`;break;case`top`:this._titleElement.style.top=`6px`,this._titleElement.style.left=`50%`,this._titleElement.style.transform=`translateX(-50%)`;break;case`bottom-left`:this._titleElement.style.bottom=`6px`,this._titleElement.style.left=`6px`;break;case`bottom`:this._titleElement.style.bottom=`6px`,this._titleElement.style.left=`50%`,this._titleElement.style.transform=`translateX(-50%)`;break;case`bottom-right`:this._titleElement.style.bottom=`6px`,this._titleElement.style.right=`6px`;break;default:this._titleElement.style.top=`6px`,this._titleElement.style.right=`6px`;break}r&&(this._titleElement.style.fontSize=r+`px`)}hideActionTitle(){this._titleElement.hidden=!0}addUserOverlay(e,t){let n=this._injectedScript.document.createElement(`div`);n.className=`x-pw-user-overlay`,n.innerHTML=t;for(let e of n.querySelectorAll(`script`))e.remove();for(let e of n.querySelectorAll(`*`))for(let t of[...e.attributes])t.name.startsWith(`on`)&&e.removeAttribute(t.name);return this._userOverlays.set(e,n),this._userOverlayContainer.appendChild(n),this._userOverlayContainer.hidden=this._userOverlayHidden,e}getUserOverlay(e){return this._userOverlays.get(e)}removeUserOverlay(e){let t=this._userOverlays.get(e);t&&(t.remove(),this._userOverlays.delete(e)),this._userOverlays.size===0&&(this._userOverlayContainer.hidden=!0)}setUserOverlaysVisible(e){this._userOverlayHidden=!e,this._userOverlayContainer.hidden=!e||this._userOverlays.size===0}clearHighlight(){for(let e of this._renderedEntries)e.highlightElement?.remove(),e.tooltipElement?.remove();this._renderedEntries=[]}addMaskedElements(e,t){let n=this._renderedEntries.map(e=>({element:e.targetElement,color:e.color})),r=e.map(e=>({element:e,color:t}));this.updateHighlight([...n,...r])}updateHighlight(e){if(!this._highlightIsUpToDate(e)){this.clearHighlight();for(let t of e){let e=this._createHighlightElement();this._glassPaneShadow.appendChild(e);let n;if(t.tooltipText){n=this._injectedScript.document.createElement(`x-pw-tooltip`),this._glassPaneShadow.appendChild(n),n.style.top=`0`,n.style.left=`0`,n.style.display=`flex`;let e=this._injectedScript.document.createElement(`x-pw-tooltip-line`);e.textContent=t.tooltipText,n.appendChild(e)}this._renderedEntries.push({targetElement:t.element,box:Js(t.box),color:t.color,borderColor:t.borderColor,fadeDuration:t.fadeDuration,cssStyle:t.cssStyle,tooltipElement:n,highlightElement:e})}for(let e of this._renderedEntries){if(!e.box&&!e.targetElement||(e.box=e.box||e.targetElement.getBoundingClientRect(),!e.tooltipElement))continue;let{anchorLeft:t,anchorTop:n}=this.tooltipPosition(e.box,e.tooltipElement);e.tooltipTop=n,e.tooltipLeft=t}for(let e of this._renderedEntries){e.tooltipElement&&(e.tooltipElement.style.top=e.tooltipTop+`px`,e.tooltipElement.style.left=e.tooltipLeft+`px`);let t=e.box;e.highlightElement.style.backgroundColor=e.color,e.highlightElement.style.left=t.x+`px`,e.highlightElement.style.top=t.y+`px`,e.highlightElement.style.width=t.width+`px`,e.highlightElement.style.height=t.height+`px`,e.highlightElement.style.display=`block`,e.borderColor&&(e.highlightElement.style.border=`2px solid `+e.borderColor),e.fadeDuration&&(e.highlightElement.style.animation=`pw-fade-out ${e.fadeDuration}ms ease-out forwards`),e.cssStyle&&(e.highlightElement.style.cssText+=`;`+e.cssStyle),this._isUnderTest&&console.error(`Highlight box for test: `+JSON.stringify({x:t.x,y:t.y,width:t.width,height:t.height}))}}}firstBox(){return this._renderedEntries[0]?.box}firstTooltipBox(){let e=this._renderedEntries[0];if(!(!e||!e.tooltipElement||e.tooltipLeft===void 0||e.tooltipTop===void 0))return{x:e.tooltipLeft,y:e.tooltipTop,left:e.tooltipLeft,top:e.tooltipTop,width:e.tooltipElement.offsetWidth,height:e.tooltipElement.offsetHeight,bottom:e.tooltipTop+e.tooltipElement.offsetHeight,right:e.tooltipLeft+e.tooltipElement.offsetWidth,toJSON:()=>{}}}tooltipPosition(e,t){let n=t.offsetWidth,r=t.offsetHeight,i=this._glassPaneElement.offsetWidth,a=this._glassPaneElement.offsetHeight,o=Math.max(5,e.left);o+n>i-5&&(o=i-n-5);let s=Math.max(0,e.bottom)+5;return s+r>a-5&&(s=Math.max(0,e.top)>r+5?Math.max(0,e.top)-r-5:a-5-r),{anchorLeft:o,anchorTop:s}}_highlightIsUpToDate(e){if(e.length!==this._renderedEntries.length)return!1;for(let t=0;tn))return r+Math.max(t.bottom-e.bottom,0)+Math.max(e.top-t.top,0)}function Xs(e,t,n){let r=t.left-e.right;if(!(r<0||n!==void 0&&r>n))return r+Math.max(t.bottom-e.bottom,0)+Math.max(e.top-t.top,0)}function Zs(e,t,n){let r=t.top-e.bottom;if(!(r<0||n!==void 0&&r>n))return r+Math.max(e.left-t.left,0)+Math.max(t.right-e.right,0)}function Qs(e,t,n){let r=e.top-t.bottom;if(!(r<0||n!==void 0&&r>n))return r+Math.max(e.left-t.left,0)+Math.max(t.right-e.right,0)}function $s(e,t,n){let r=n===void 0?50:n,i=0;return e.left-t.right>=0&&(i+=e.left-t.right),t.left-e.right>=0&&(i+=t.left-e.right),t.top-e.bottom>=0&&(i+=t.top-e.bottom),e.top-t.bottom>=0&&(i+=e.top-t.bottom),i>r?void 0:i}var ec=[`left-of`,`right-of`,`above`,`below`,`near`];function tc(e,t,n,r){let i=t.getBoundingClientRect(),a={"left-of":Xs,"right-of":Ys,above:Zs,below:Qs,near:$s}[e],o;for(let e of n){if(e===t)continue;let n=a(i,e.getBoundingClientRect(),r);n!==void 0&&(o===void 0||n`?!!n:t.op===`=`?r instanceof RegExp?typeof n==`string`&&!!n.match(r):n===r:typeof n!=`string`||typeof r!=`string`?!1:t.op===`*=`?n.includes(r):t.op===`^=`?n.startsWith(r):t.op===`$=`?n.endsWith(r):t.op===`|=`?n===r||n.startsWith(r+`-`):t.op===`~=`?n.split(` `).includes(r):!1}function rc(e){let t=e.ownerDocument;return e.nodeName===`SCRIPT`||e.nodeName===`NOSCRIPT`||e.nodeName===`STYLE`||t.head&&t.head.contains(e)}function ic(e,t){let n=e.get(t);if(n===void 0){if(n={full:``,normalized:``,immediate:[]},!rc(t)){let r=``;if(t instanceof HTMLInputElement&&(t.type===`submit`||t.type===`button`||t.type===`reset`))n={full:t.value,normalized:a(t.value),immediate:[t.value]};else{for(let i=t.firstChild;i;i=i.nextSibling)if(i.nodeType===Node.TEXT_NODE)n.full+=i.nodeValue||``,r+=i.nodeValue||``;else if(i.nodeType===Node.COMMENT_NODE)continue;else r&&n.immediate.push(r),r=``,i.nodeType===Node.ELEMENT_NODE&&(n.full+=ic(e,i).full);r&&n.immediate.push(r),t.shadowRoot&&(n.full+=ic(e,t.shadowRoot).full),n.full&&(n.normalized=a(n.full))}}e.set(t,n)}return n}function ac(e,t,n){if(rc(t)||!n(ic(e,t)))return`none`;for(let r=t.firstChild;r;r=r.nextSibling)if(r.nodeType===Node.ELEMENT_NODE&&n(ic(e,r)))return`selfAndChildren`;return t.shadowRoot&&n(ic(e,t.shadowRoot))?`selfAndChildren`:`self`}function oc(e,t){let n=So(t);if(n)return n.map(t=>ic(e,t));let r=t.getAttribute(`aria-label`);if(r!==null&&r.trim())return[{full:r,normalized:a(r),immediate:[r]}];let i=t.nodeName===`INPUT`&&t.type!==`hidden`;if([`BUTTON`,`METER`,`OUTPUT`,`PROGRESS`,`SELECT`,`TEXTAREA`].includes(t.nodeName)||i){let n=t.labels;if(n)return[...n].map(t=>ic(e,t))}return[]}var sc=[`selected`,`checked`,`pressed`,`expanded`,`level`,`disabled`,`name`,`description`,`include-hidden`];sc.sort();function cc(e,t,n){if(!t.includes(n))throw Error(`"${e}" attribute is only supported for roles: ${t.slice().sort().map(e=>`"${e}"`).join(`, `)}`)}function lc(e,t){if(e.op!==``&&!t.includes(e.value))throw Error(`"${e.name}" must be one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`)}function uc(e,t){if(!t.includes(e.op))throw Error(`"${e.name}" does not support "${e.op}" matcher`)}function dc(e,t){let n={role:t};for(let r of e)switch(r.name){case`checked`:cc(r.name,Fo,t),lc(r,[!0,!1,`mixed`]),uc(r,[``,`=`]),n.checked=r.op===``?!0:r.value;break;case`pressed`:cc(r.name,Ho,t),lc(r,[!0,!1,`mixed`]),uc(r,[``,`=`]),n.pressed=r.op===``?!0:r.value;break;case`selected`:cc(r.name,No,t),lc(r,[!0,!1]),uc(r,[``,`=`]),n.selected=r.op===``?!0:r.value;break;case`expanded`:cc(r.name,Wo,t),lc(r,[!0,!1]),uc(r,[``,`=`]),n.expanded=r.op===``?!0:r.value;break;case`level`:if(cc(r.name,Ko,t),typeof r.value==`string`&&(r.value=+r.value),r.op!==`=`||typeof r.value!=`number`||Number.isNaN(r.value))throw Error(`"level" attribute must be compared to a number`);n.level=r.value;break;case`disabled`:lc(r,[!0,!1]),uc(r,[``,`=`]),n.disabled=r.op===``?!0:r.value;break;case`name`:if(r.op===``)throw Error(`"name" attribute must have a value`);if(typeof r.value!=`string`&&!(r.value instanceof RegExp))throw Error(`"name" attribute must be a string or a regular expression`);n.name=r.value,n.nameOp=r.op,n.nameExact=r.caseSensitive;break;case`description`:if(r.op===``)throw Error(`"description" attribute must have a value`);if(typeof r.value!=`string`&&!(r.value instanceof RegExp))throw Error(`"description" attribute must be a string or a regular expression`);n.description=r.value,n.descriptionOp=r.op,n.descriptionExact=r.caseSensitive;break;case`include-hidden`:lc(r,[!0,!1]),uc(r,[``,`=`]),n.includeHidden=r.op===``?!0:r.value;break;default:throw Error(`Unknown attribute "${r.name}", must be one of ${sc.map(e=>`"${e}"`).join(`, `)}.`)}return n}function fc(e,t,n){let r=[],i=e=>{if(po(e)===t.role&&!(t.selected!==void 0&&Po(e)!==t.selected)&&!(t.checked!==void 0&&Io(e)!==t.checked)&&!(t.pressed!==void 0&&Uo(e)!==t.pressed)&&!(t.expanded!==void 0&&Go(e)!==t.expanded)&&!(t.level!==void 0&&qo(e)!==t.level)&&!(t.disabled!==void 0&&Yo(e)!==t.disabled)&&!(!t.includeHidden&&P(e))){if(t.name!==void 0){let r=a(Eo(e,!!t.includeHidden));if(typeof t.name==`string`&&(t.name=a(t.name)),n&&!t.nameExact&&t.nameOp===`=`&&(t.nameOp=`*=`),!nc(r,{name:``,jsonPath:[],op:t.nameOp||`=`,value:t.name,caseSensitive:!!t.nameExact}))return}if(t.description!==void 0){let r=a(L(e,!!t.includeHidden));if(typeof t.description==`string`&&(t.description=a(t.description)),n&&!t.descriptionExact&&t.descriptionOp===`=`&&(t.descriptionOp=`*=`),!nc(r,{name:``,jsonPath:[],op:t.descriptionOp||`=`,value:t.description,caseSensitive:!!t.descriptionExact}))return}r.push(e)}},o=e=>{let t=[];e.shadowRoot&&t.push(e.shadowRoot);for(let n of e.querySelectorAll(`*`))i(n),n.shadowRoot&&t.push(n.shadowRoot);t.forEach(o)};return o(e),r}function pc(e){return{queryAll:(t,n)=>{let r=bn(n,!0),i=r.name.toLowerCase();if(!i)throw Error(`Role must not be empty`);let a=dc(r.attributes,i);vs();try{return fc(t,a,e)}finally{ys()}}}}var mc=class{constructor(){this._retainCacheCounter=0,this._cacheText=new Map,this._cacheQueryCSS=new Map,this._cacheMatches=new Map,this._cacheQuery=new Map,this._cacheMatchesSimple=new Map,this._cacheMatchesParents=new Map,this._cacheCallMatches=new Map,this._cacheCallQuery=new Map,this._cacheQuerySimple=new Map,this._engines=new Map,this._engines.set(`not`,vc),this._engines.set(`is`,hc),this._engines.set(`where`,hc),this._engines.set(`has`,gc),this._engines.set(`scope`,_c),this._engines.set(`light`,yc),this._engines.set(`visible`,bc),this._engines.set(`text`,xc),this._engines.set(`text-is`,Sc),this._engines.set(`text-matches`,Cc),this._engines.set(`has-text`,wc),this._engines.set(`right-of`,Tc(`right-of`)),this._engines.set(`left-of`,Tc(`left-of`)),this._engines.set(`above`,Tc(`above`)),this._engines.set(`below`,Tc(`below`)),this._engines.set(`near`,Tc(`near`)),this._engines.set(`nth-match`,Ec);let e=[...this._engines.keys()];e.sort();let t=[...mn];if(t.sort(),e.join(`|`)!==t.join(`|`))throw Error(`Please keep customCSSNames in sync with evaluator engines: ${e.join(`|`)} vs ${t.join(`|`)}`)}begin(){++this._retainCacheCounter}end(){--this._retainCacheCounter,this._retainCacheCounter||(this._cacheQueryCSS.clear(),this._cacheMatches.clear(),this._cacheQuery.clear(),this._cacheMatchesSimple.clear(),this._cacheMatchesParents.clear(),this._cacheCallMatches.clear(),this._cacheCallQuery.clear(),this._cacheQuerySimple.clear(),this._cacheText.clear())}_cached(e,t,n,r){e.has(t)||e.set(t,[]);let i=e.get(t),a=i.find(e=>n.every((t,n)=>e.rest[n]===t));if(a)return a.result;let o=r();return i.push({rest:n,result:o}),o}_checkSelector(e){if(!(typeof e==`object`&&e&&(Array.isArray(e)||`simples`in e&&e.simples.length)))throw Error(`Malformed selector "${e}"`);return e}matches(e,t,n){let r=this._checkSelector(t);this.begin();try{return this._cached(this._cacheMatches,e,[r,n.scope,n.pierceShadow,n.originalScope],()=>Array.isArray(r)?this._matchesEngine(hc,e,r,n):(this._hasScopeClause(r)&&(n=this._expandContextForScopeMatching(n)),this._matchesSimple(e,r.simples[r.simples.length-1].selector,n)?this._matchesParents(e,r,r.simples.length-2,n):!1))}finally{this.end()}}query(e,t){let n=this._checkSelector(t);this.begin();try{return this._cached(this._cacheQuery,n,[e.scope,e.pierceShadow,e.originalScope],()=>{if(Array.isArray(n))return this._queryEngine(hc,e,n);this._hasScopeClause(n)&&(e=this._expandContextForScopeMatching(e));let t=this._scoreMap;this._scoreMap=new Map;let r=this._querySimple(e,n.simples[n.simples.length-1].selector);return r=r.filter(t=>this._matchesParents(t,n,n.simples.length-2,e)),this._scoreMap.size&&r.sort((e,t)=>{let n=this._scoreMap.get(e),r=this._scoreMap.get(t);return n===r?0:n===void 0?1:r===void 0?-1:n-r}),this._scoreMap=t,r})}finally{this.end()}}_markScore(e,t){this._scoreMap&&this._scoreMap.set(e,t)}_hasScopeClause(e){return e.simples.some(e=>e.selector.functions.some(e=>e.name===`scope`))}_expandContextForScopeMatching(e){if(e.scope.nodeType!==1)return e;let t=Na(e.scope);return t?{...e,scope:t,originalScope:e.originalScope||e.scope}:e}_matchesSimple(e,t,n){return this._cached(this._cacheMatchesSimple,e,[t,n.scope,n.pierceShadow,n.originalScope],()=>{if(e===n.scope||t.css&&!this._matchesCSS(e,t.css))return!1;for(let r of t.functions)if(!this._matchesEngine(this._getEngine(r.name),e,r.args,n))return!1;return!0})}_querySimple(e,t){return t.functions.length?this._cached(this._cacheQuerySimple,t,[e.scope,e.pierceShadow,e.originalScope],()=>{let n=t.css,r=t.functions;n===`*`&&r.length&&(n=void 0);let i,a=-1;n===void 0?(a=r.findIndex(e=>this._getEngine(e.name).query!==void 0),a===-1&&(a=0),i=this._queryEngine(this._getEngine(r[a].name),e,r[a].args)):i=this._queryCSS(e,n);for(let t=0;tthis._matchesEngine(n,i,r[t].args,e)))}for(let t=0;tthis._matchesEngine(n,i,r[t].args,e)))}return i}):this._queryCSS(e,t.css||`*`)}_matchesParents(e,t,n,r){return n<0?!0:this._cached(this._cacheMatchesParents,e,[t,n,r.scope,r.pierceShadow,r.originalScope],()=>{let{selector:i,combinator:a}=t.simples[n];if(a===`>`){let a=Dc(e,r);return!a||!this._matchesSimple(a,i,r)?!1:this._matchesParents(a,t,n-1,r)}if(a===`+`){let a=Oc(e,r);return!a||!this._matchesSimple(a,i,r)?!1:this._matchesParents(a,t,n-1,r)}if(a===``){let a=Dc(e,r);for(;a;){if(this._matchesSimple(a,i,r)){if(this._matchesParents(a,t,n-1,r))return!0;if(t.simples[n-1].combinator===``)break}a=Dc(a,r)}return!1}if(a===`~`){let a=Oc(e,r);for(;a;){if(this._matchesSimple(a,i,r)){if(this._matchesParents(a,t,n-1,r))return!0;if(t.simples[n-1].combinator===`~`)break}a=Oc(a,r)}return!1}if(a===`>=`){let a=e;for(;a;){if(this._matchesSimple(a,i,r)){if(this._matchesParents(a,t,n-1,r))return!0;if(t.simples[n-1].combinator===``)break}a=Dc(a,r)}return!1}throw Error(`Unsupported combinator "${a}"`)})}_matchesEngine(e,t,n,r){if(e.matches)return this._callMatches(e,t,n,r);if(e.query)return this._callQuery(e,n,r).includes(t);throw Error(`Selector engine should implement "matches" or "query"`)}_queryEngine(e,t,n){if(e.query)return this._callQuery(e,n,t);if(e.matches)return this._queryCSS(t,`*`).filter(r=>this._callMatches(e,r,n,t));throw Error(`Selector engine should implement "matches" or "query"`)}_callMatches(e,t,n,r){return this._cached(this._cacheCallMatches,t,[e,r.scope,r.pierceShadow,r.originalScope,...n],()=>e.matches(t,n,r,this))}_callQuery(e,t,n){return this._cached(this._cacheCallQuery,e,[n.scope,n.pierceShadow,n.originalScope,...t],()=>e.query(n,t,this))}_matchesCSS(e,t){return e.matches(t)}_queryCSS(e,t){return this._cached(this._cacheQueryCSS,t,[e.scope,e.pierceShadow,e.originalScope],()=>{let n=[];function r(i){if(n=n.concat([...i.querySelectorAll(t)]),e.pierceShadow){i.shadowRoot&&r(i.shadowRoot);for(let e of i.querySelectorAll(`*`))e.shadowRoot&&r(e.shadowRoot)}}return r(e.scope),n})}_getEngine(e){let t=this._engines.get(e);if(!t)throw Error(`Unknown selector engine "${e}"`);return t}},hc={matches(e,t,n,r){if(t.length===0)throw Error(`"is" engine expects non-empty selector list`);return t.some(t=>r.matches(e,t,n))},query(e,t,n){if(t.length===0)throw Error(`"is" engine expects non-empty selector list`);let r=[];for(let i of t)r=r.concat(n.query(e,i));return t.length===1?r:kc(r)}},gc={matches(e,t,n,r){if(t.length===0)throw Error(`"has" engine expects non-empty selector list`);return r.query({...n,scope:e},t).length>0}},_c={matches(e,t,n,r){if(t.length!==0)throw Error(`"scope" engine expects no arguments`);let i=n.originalScope||n.scope;return i.nodeType===9?e===i.documentElement:e===i},query(e,t,n){if(t.length!==0)throw Error(`"scope" engine expects no arguments`);let r=e.originalScope||e.scope;if(r.nodeType===9){let e=r.documentElement;return e?[e]:[]}return r.nodeType===1?[r]:[]}},vc={matches(e,t,n,r){if(t.length===0)throw Error(`"not" engine expects non-empty selector list`);return!r.matches(e,t,n)}},yc={query(e,t,n){return n.query({...e,pierceShadow:!1},t)},matches(e,t,n,r){return r.matches(e,t,{...n,pierceShadow:!1})}},bc={matches(e,t,n,r){if(t.length)throw Error(`"visible" engine expects no arguments`);return Va(e)}},xc={matches(e,t,n,r){if(t.length!==1||typeof t[0]!=`string`)throw Error(`"text" engine expects a single string`);let i=a(t[0]).toLowerCase();return ac(r._cacheText,e,e=>e.normalized.toLowerCase().includes(i))===`self`}},Sc={matches(e,t,n,r){if(t.length!==1||typeof t[0]!=`string`)throw Error(`"text-is" engine expects a single string`);let i=a(t[0]);return ac(r._cacheText,e,e=>!i&&!e.immediate.length?!0:e.immediate.some(e=>a(e)===i))!==`none`}},Cc={matches(e,t,n,r){if(t.length===0||typeof t[0]!=`string`||t.length>2||t.length===2&&typeof t[1]!=`string`)throw Error(`"text-matches" engine expects a regexp body and optional regexp flags`);let i=new RegExp(t[0],t.length===2?t[1]:void 0);return ac(r._cacheText,e,e=>i.test(e.full))===`self`}},wc={matches(e,t,n,r){if(t.length!==1||typeof t[0]!=`string`)throw Error(`"has-text" engine expects a single string`);if(rc(e))return!1;let i=a(t[0]).toLowerCase();return(e=>e.normalized.toLowerCase().includes(i))(ic(r._cacheText,e))}};function Tc(e){return{matches(t,n,r,i){let a=n.length&&typeof n[n.length-1]==`number`?n[n.length-1]:void 0,o=a===void 0?n:n.slice(0,n.length-1);if(n.length<1+(a===void 0?0:1))throw Error(`"${e}" engine expects a selector list and optional maximum distance in pixels`);let s=tc(e,t,i.query(r,o),a);return s===void 0?!1:(i._markScore(t,s),!0)}}}var Ec={query(e,t,n){let r=t[t.length-1];if(t.length<2)throw Error(`"nth-match" engine expects non-empty selector list and an index argument`);if(typeof r!=`number`||r<1)throw Error(`"nth-match" engine expects a one-based index as the last argument`);let i=hc.query(e,t.slice(0,t.length-1),n);return r--,r1){let t=new Set(n.children);n.children=[];let r=e.firstElementChild;for(;r&&n.children.lengthll(e)))]}else i=[ll(nl(r,e,t,n)||sl(e,t,n))]}let a=i[0],o=e.parseSelector(a);return{selector:a,selectors:i,elements:e.querySelectorAll(o,n.root??t.ownerDocument)}}finally{Xa(),ys(),e._evaluator.end()}}function nl(e,t,n,r){if(r.root&&!Ma(r.root,n))throw Error(`Target element must belong to the root's subtree`);if(n===r.root)return[{engine:`css`,selector:`:scope`,score:1}];if(n.ownerDocument.documentElement===n)return[{engine:`css`,selector:`html`,score:1}];let i=null,a=e=>{(!i||ul(e)ul(e.candidate)-ul(t.candidate));for(let{candidate:s,isTextCandidate:c}of o){let o=t.querySelectorAll(t.parseSelector(ll(s)),r.root??n.ownerDocument);if(!o.includes(n))continue;if(o.length===1){a(s);break}let l=o.indexOf(n);if(!(l>5)&&(a([...s,{engine:`nth`,selector:String(l),score:Qc}]),!r.isRecursive))for(let u=Na(n);u&&u!==r.root;u=Na(u)){let d=o.filter(e=>Ma(u,e)&&e!==u),f=d.indexOf(n);if(d.length>5||f===-1||f===l&&d.length>1)continue;let p=d.length===1?s:[...s,{engine:`nth`,selector:String(f),score:Qc}];if(i&&ul([{engine:``,selector:``,score:1},...p])>=ul(i))continue;let m=!!r.noText||c,h=m?e.disallowText:e.allowText,g=h.get(u);g===void 0&&(g=nl(e,t,u,{...r,isRecursive:!0,noText:m})||sl(t,u,r),h.set(u,g)),g&&a([...g,...p])}}return i}function rl(e,t,n){let r=[],a=oa(n.testIdAttributeName);for(let e of[`data-testid`,`data-test-id`,`data-test`])!a.includes(e)&&t.getAttribute(e)&&r.push({engine:`css`,selector:`[${e}=${p(t.getAttribute(e))}]`,score:Mc});if(!n.noCSSId){let e=t.getAttribute(`id`);e&&!dl(e)&&r.push({engine:`css`,selector:al(e),score:Jc})}if(r.push({engine:`css`,selector:pl(t),score:Zc}),t.nodeName===`IFRAME`||t.nodeName===`FRAME`){for(let e of[`name`,`title`])t.getAttribute(e)&&r.push({engine:`css`,selector:`${pl(t)}[${e}=${p(t.getAttribute(e))}]`,score:Nc});for(let e of a)t.getAttribute(e)&&r.push({engine:`css`,selector:`[${e}=${p(t.getAttribute(e))}]`,score:jc});return cl([r]),r}for(let e of a)t.getAttribute(e)&&r.push({engine:`internal:testid`,selector:`[${e}=${u(t.getAttribute(e),!0)}]`,score:jc});if(t.nodeName===`INPUT`||t.nodeName===`TEXTAREA`){let e=t;if(e.placeholder){r.push({engine:`internal:attr`,selector:`[placeholder=${u(e.placeholder,!0)}]`,score:Hc});for(let t of B(e.placeholder))r.push({engine:`internal:attr`,selector:`[placeholder=${u(t.text,!1)}]`,score:Ic-t.scoreBonus})}}let o=oc(e._evaluator._cacheText,t);for(let e of o){let t=e.normalized;r.push({engine:`internal:label`,selector:i(t,!0),score:z});for(let e of B(t))r.push({engine:`internal:label`,selector:i(e.text,!1),score:Lc-e.scoreBonus})}let s=po(t);return s&&![`none`,`presentation`].includes(s)&&r.push({engine:`internal:role`,selector:s,score:Yc}),t.getAttribute(`name`)&&[`BUTTON`,`FORM`,`FIELDSET`,`FRAME`,`IFRAME`,`INPUT`,`KEYGEN`,`OBJECT`,`OUTPUT`,`SELECT`,`TEXTAREA`,`MAP`,`META`,`PARAM`].includes(t.nodeName)&&r.push({engine:`css`,selector:`${pl(t)}[name=${p(t.getAttribute(`name`))}]`,score:Xc}),[`INPUT`,`TEXTAREA`].includes(t.nodeName)&&t.getAttribute(`type`)!==`hidden`&&t.getAttribute(`type`)&&r.push({engine:`css`,selector:`${pl(t)}[type=${p(t.getAttribute(`type`))}]`,score:Xc}),[`INPUT`,`TEXTAREA`,`SELECT`].includes(t.nodeName)&&t.getAttribute(`type`)!==`hidden`&&r.push({engine:`css`,selector:pl(t),score:521}),cl([r]),r}function il(t,n,r){if(n.nodeName===`SELECT`)return[];let a=[],o=n.getAttribute(`title`);if(o){a.push([{engine:`internal:attr`,selector:`[title=${u(o,!0)}]`,score:Kc}]);for(let e of B(o))a.push([{engine:`internal:attr`,selector:`[title=${u(e.text,!1)}]`,score:Bc-e.scoreBonus}])}let s=n.getAttribute(`alt`);if(s&&[`APPLET`,`AREA`,`IMG`,`INPUT`].includes(n.nodeName)){a.push([{engine:`internal:attr`,selector:`[alt=${u(s,!0)}]`,score:Wc}]);for(let e of B(s))a.push([{engine:`internal:attr`,selector:`[alt=${u(e.text,!1)}]`,score:Rc-e.scoreBonus}])}let c=ic(t._evaluator._cacheText,n).normalized,l=c?B(c):[];if(c){if(r){c.length<=80&&a.push([{engine:`internal:text`,selector:i(c,!0),score:Gc}]);for(let e of l)a.push([{engine:`internal:text`,selector:i(e.text,!1),score:zc-e.scoreBonus}])}let t={engine:`css`,selector:pl(n),score:Zc};for(let e of l)a.push([t,{engine:`internal:has-text`,selector:i(e.text,!1),score:zc-e.scoreBonus}]);if(r&&c.length<=80){let n=RegExp(`^`+e(c)+`$`);a.push([t,{engine:`internal:has-text`,selector:i(n,!1),score:Vc}])}}let d=po(n);if(d&&![`none`,`presentation`].includes(d)){let t=Eo(n,!1);if(t&&!t.match(/^\p{Co}+$/u)){let e={engine:`internal:role`,selector:`${d}[name=${u(t,!0)}]`,score:Uc};a.push([e]);for(let e of B(t))a.push([{engine:`internal:role`,selector:`${d}[name=${u(e.text,!1)}]`,score:Fc-e.scoreBonus}]);let r=L(n,!1);if(r){a.push([{engine:`internal:role`,selector:`${d}[name=${u(t,!0)}][description=${u(r,!0)}]`,score:106}]);for(let e of B(t))a.push([{engine:`internal:role`,selector:`${d}[name=${u(e.text,!1)}][description=${u(r,!1)}]`,score:Fc-e.scoreBonus+1}])}}else{let t={engine:`internal:role`,selector:`${d}`,score:Yc},o=L(n,!1);o&&a.push([{engine:`internal:role`,selector:`${d}[description=${u(o,!0)}]`,score:511}]);for(let e of l)a.push([t,{engine:`internal:has-text`,selector:i(e.text,!1),score:zc-e.scoreBonus}]);if(r&&c.length<=80){let n=RegExp(`^`+e(c)+`$`);a.push([t,{engine:`internal:has-text`,selector:i(n,!1),score:Vc}])}}}return cl(a),a}function al(e){return/^[a-zA-Z][a-zA-Z0-9\-\_]+$/.test(e)?`#`+e:`[id=${p(e)}]`}function ol(e){return e.some(e=>e.engine===`css`&&(e.selector.startsWith(`#`)||e.selector.startsWith(`[id="`)))}function sl(e,t,n){let r=n.root??t.ownerDocument,i=[];function a(n){let a=i.slice();n&&a.unshift(n);let o=a.join(` > `),s=e.parseSelector(o);return e.querySelector(s,r,!1)===t?o:void 0}function o(n){let i={engine:`css`,selector:n,score:$c},a=e.parseSelector(n),o=e.querySelectorAll(a,r);return o.length===1?[i]:[i,{engine:`nth`,selector:String(o.indexOf(t)),score:Qc}]}for(let e=t;e&&e!==r;e=Na(e)){let t=``;if(e.id&&!n.noCSSId){let n=al(e.id),r=a(n);if(r)return o(r);t=n}let r=e.parentNode,s=[...e.classList].map(ml);for(let e=0;ee.nodeName===i).indexOf(e)===0?pl(e):`${pl(e)}:nth-child(${1+n.indexOf(e)})`,c=a(s);if(c)return o(c);t||=s}else t||=pl(e);i.unshift(t)}return o(a())}function cl(e){for(let t of e)for(let e of t)e.score>Pc&&e.score>`),n=r,r===`css`?t.push(i):t.push(`${r}=${i}`);return t.join(` `)}function ul(e){let t=0;for(let n=0;n=`a`&&i<=`z`?`lower`:i>=`A`&&i<=`Z`?`upper`:i>=`0`&&i<=`9`?`digit`:`other`,a===`lower`&&t===`upper`){t=a;continue}t&&t!==a&&++n,t=a}}return n>=e.length/4}function fl(e,t){if(e.length<=t)return e;e=e.substring(0,t);let n=e.match(/^(.*)\b(.+?)$/);return n?n[1].trimEnd():``}function B(e){let t=[];{let n=e.match(/^([\d.,]+)[^.,\w]/),r=n?n[1].length:0;if(r){let n=fl(e.substring(r).trimStart(),80);t.push({text:n,scoreBonus:n.length<=30?2:1})}}{let n=e.match(/[^.,\w]([\d.,]+)$/),r=n?n[1].length:0;if(r){let n=fl(e.substring(0,e.length-r).trimEnd(),80);t.push({text:n,scoreBonus:n.length<=30?2:1})}}return e.length<=30?t.push({text:e,scoreBonus:0}):(t.push({text:fl(e,80),scoreBonus:0}),t.push({text:fl(e,30),scoreBonus:1})),t=t.filter(e=>e.text),t.length||t.push({text:e.substring(0,80),scoreBonus:0}),t}function pl(e){return e.nodeName.toLocaleLowerCase().replace(/[:\.]/g,e=>`\\`+e)}function ml(e){let t=``;for(let n=0;n=1&&n<=31||n>=48&&n<=57&&(t===0||t===1&&e.charCodeAt(0)===45)?`\\`+n.toString(16)+` `:t===0&&n===45&&e.length===1?`\\`+e.charAt(t):n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122?e.charAt(t):`\\`+e.charAt(t)}var gl={queryAll(e,t){t.startsWith(`/`)&&e.nodeType!==Node.DOCUMENT_NODE&&(t=`.`+t);let n=[],r=e.ownerDocument||e;if(!r)return n;let i=r.evaluate(t,e,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE);for(let e=i.iterateNext();e;e=i.iterateNext())e.nodeType===Node.ELEMENT_NODE&&n.push(e);return n}},_l=Symbol(`selector`),vl=class e{constructor(t,n,r){if(r?.hasText&&(n+=` >> internal:has-text=${i(r.hasText,!1)}`),r?.hasNotText&&(n+=` >> internal:has-not-text=${i(r.hasNotText,!1)}`),r?.has&&(n+=` >> internal:has=`+JSON.stringify(r.has[_l])),r?.hasNot&&(n+=` >> internal:has-not=`+JSON.stringify(r.hasNot[_l])),r?.visible!==void 0&&(n+=` >> visible=${r.visible?`true`:`false`}`),this[_l]=n,n){let e=t.parseSelector(n);this.element=t.querySelector(e,t.document,!1),this.elements=t.querySelectorAll(e,t.document)}let a=n,o=this;o.locator=(n,r)=>new e(t,a?a+` >> `+n:n,r),o.getByTestId=e=>o.locator(ca(t.testIdAttributeNameForStrictErrorAndConsoleCodegen(),e)),o.getByAltText=(e,t)=>o.locator(ua(e,t)),o.getByLabel=(e,t)=>o.locator(la(e,t)),o.getByPlaceholder=(e,t)=>o.locator(fa(e,t)),o.getByText=(e,t)=>o.locator(pa(e,t)),o.getByTitle=(e,t)=>o.locator(da(e,t)),o.getByRole=(e,t={})=>o.locator(ma(e,t)),o.filter=r=>new e(t,n,r),o.first=()=>o.locator(`nth=0`),o.last=()=>o.locator(`nth=-1`),o.nth=e=>o.locator(`nth=${e}`),o.and=n=>new e(t,a+` >> internal:and=`+JSON.stringify(n[_l])),o.or=n=>new e(t,a+` >> internal:or=`+JSON.stringify(n[_l]))}},yl=class{constructor(e){this._injectedScript=e}install(){this._injectedScript.window.playwright||(this._injectedScript.window.playwright={$:(e,t)=>this._querySelector(e,!!t),$$:e=>this._querySelectorAll(e),inspect:e=>this._inspect(e),selector:e=>this._selector(e),generateLocator:(e,t)=>this._generateLocator(e,t),ariaSnapshot:(e,t)=>this._injectedScript.ariaSnapshot(e||this._injectedScript.document.body,t||{mode:`default`}),resume:()=>this._resume(),...new vl(this._injectedScript,``)},delete this._injectedScript.window.playwright.filter,delete this._injectedScript.window.playwright.first,delete this._injectedScript.window.playwright.last,delete this._injectedScript.window.playwright.nth,delete this._injectedScript.window.playwright.and,delete this._injectedScript.window.playwright.or)}_querySelector(e,t){if(typeof e!=`string`)throw Error(`Usage: playwright.query('Playwright >> selector').`);let n=this._injectedScript.parseSelector(e);return this._injectedScript.querySelector(n,this._injectedScript.document,t)}_querySelectorAll(e){if(typeof e!=`string`)throw Error(`Usage: playwright.$$('Playwright >> selector').`);let t=this._injectedScript.parseSelector(e);return this._injectedScript.querySelectorAll(t,this._injectedScript.document)}_inspect(e){if(typeof e!=`string`)throw Error(`Usage: playwright.inspect('Playwright >> selector').`);this._injectedScript.window.inspect(this._querySelector(e,!1))}_selector(e){if(!(e instanceof Element))throw Error(`Usage: playwright.selector(element).`);return this._injectedScript.generateSelectorSimple(e)}_generateLocator(e,t){if(!(e instanceof Element))throw Error(`Usage: playwright.locator(element).`);let n=this._injectedScript.generateSelectorSimple(e);return Cn(t||`javascript`,n)}_resume(){if(!this._injectedScript.window.__pw_resume)return!1;this._injectedScript.window.__pw_resume().catch(()=>{})}},bl=`__playwright__binding__controller__`;function xl(e){try{return e instanceof RegExp||Object.prototype.toString.call(e)===`[object RegExp]`}catch{return!1}}function Sl(e){try{return e instanceof Date||Object.prototype.toString.call(e)===`[object Date]`}catch{return!1}}function Cl(e){try{return e instanceof URL||Object.prototype.toString.call(e)===`[object URL]`}catch{return!1}}function wl(e){try{return e instanceof Error||e&&Object.getPrototypeOf(e)?.name===`Error`}catch{return!1}}function Tl(e,t){try{return e instanceof t||Object.prototype.toString.call(e)===`[object ${t.name}]`}catch{return!1}}function El(e){try{return e instanceof ArrayBuffer||Object.prototype.toString.call(e)===`[object ArrayBuffer]`}catch{return!1}}var Dl={i8:Int8Array,ui8:Uint8Array,ui8c:Uint8ClampedArray,i16:Int16Array,ui16:Uint16Array,i32:Int32Array,ui32:Uint32Array,f32:Float32Array,f64:Float64Array,bi64:BigInt64Array,bui64:BigUint64Array};function Ol(e){if(`toBase64`in e)return e.toBase64();let t=Array.from(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).map(e=>String.fromCharCode(e)).join(``);return btoa(t)}function kl(e,t){let n=atob(e),r=new Uint8Array(n.length);for(let e=0;eglobalThis[bl].callBinding(t,...e)}if(`ta`in e)return kl(e.ta.b,Dl[e.ta.k]);if(`ab`in e)return kl(e.ab.b,Uint8Array).buffer}return e}}function jl(e,t){return Ml(e,t,{visited:new Map,lastId:0})}function Ml(e,t,n){if(e&&typeof e==`object`){if(typeof globalThis.Window==`function`&&e instanceof globalThis.Window)return`ref: `;if(typeof globalThis.Document==`function`&&e instanceof globalThis.Document)return`ref: `;if(typeof globalThis.Node==`function`&&e instanceof globalThis.Node)return`ref: `}return Nl(e,t,n)}function Nl(e,t,n){let r=t(e);if(`fallThrough`in r)e=r.fallThrough;else return r;if(typeof e==`symbol`||Object.is(e,void 0))return{v:`undefined`};if(Object.is(e,null))return{v:`null`};if(Object.is(e,NaN))return{v:`NaN`};if(Object.is(e,1/0))return{v:`Infinity`};if(Object.is(e,-1/0))return{v:`-Infinity`};if(Object.is(e,-0))return{v:`-0`};if(typeof e==`boolean`||typeof e==`number`||typeof e==`string`)return e;if(typeof e==`bigint`)return{bi:e.toString()};if(wl(e)){let t;return t=e.stack?.startsWith(e.name+`: `+e.message)?e.stack:`${e.name}: ${e.message}\n${e.stack}`,{e:{n:e.name,m:e.message,s:t}}}if(Sl(e))return{d:e.toJSON()};if(Cl(e))return{u:e.toJSON()};if(xl(e))return{r:{p:e.source,f:e.flags}};for(let[t,n]of Object.entries(Dl))if(Tl(e,n))return{ta:{b:Ol(e),k:t}};if(El(e))return{ab:{b:Ol(new Uint8Array(e))}};let i=n.visited.get(e);if(i)return{ref:i};if(Array.isArray(e)){let r=[],i=++n.lastId;n.visited.set(e,i);for(let i=0;i({fallThrough:e}))}_promiseAwareJsonValueNoThrow(e){let t=e=>{try{return this.jsonValue(!0,e)}catch{return}};return e&&typeof e==`object`&&typeof e.then==`function`?(async()=>t(await e))():t(e)}},Fl=class{constructor(e,t){this._testIdAttributeNameForStrictErrorAndConsoleCodegen=`data-testid`,this.utils={asLocator:Cn,cacheNormalizedWhitespaces:s,elementText:ic,getAriaRole:po,getElementAccessibleNameText:Eo,getElementAccessibleDescription:L,isElementVisible:Va,isInsideScope:Ma,normalizeWhiteSpace:a,parseAriaSnapshot:Qi,generateAriaTree:Ts,findNewElement:Gs,builtins:null},this.window=e,this.document=e.document,this.isUnderTest=t.isUnderTest,this.utils.builtins=new Pl(e,t.isUnderTest).builtins,this._sdkLanguage=t.sdkLanguage,this._frameSeq=t.frameSeq,this._testIdAttributeNameForStrictErrorAndConsoleCodegen=t.testIdAttributeName,this._evaluator=new mc,this.consoleApi=new yl(this),this.onGlobalListenersRemoved=new Set,this._autoClosingTags=new Set([`AREA`,`BASE`,`BR`,`COL`,`COMMAND`,`EMBED`,`HR`,`IMG`,`INPUT`,`KEYGEN`,`LINK`,`MENUITEM`,`META`,`PARAM`,`SOURCE`,`TRACK`,`WBR`]),this._booleanAttributes=new Set([`checked`,`selected`,`disabled`,`readonly`,`multiple`]),this._eventTypes=new Map([[`auxclick`,`mouse`],[`click`,`mouse`],[`dblclick`,`mouse`],[`mousedown`,`mouse`],[`mouseeenter`,`mouse`],[`mouseleave`,`mouse`],[`mousemove`,`mouse`],[`mouseout`,`mouse`],[`mouseover`,`mouse`],[`mouseup`,`mouse`],[`mouseleave`,`mouse`],[`mousewheel`,`mouse`],[`keydown`,`keyboard`],[`keyup`,`keyboard`],[`keypress`,`keyboard`],[`textInput`,`keyboard`],[`touchstart`,`touch`],[`touchmove`,`touch`],[`touchend`,`touch`],[`touchcancel`,`touch`],[`pointerover`,`pointer`],[`pointerout`,`pointer`],[`pointerenter`,`pointer`],[`pointerleave`,`pointer`],[`pointerdown`,`pointer`],[`pointerup`,`pointer`],[`pointermove`,`pointer`],[`pointercancel`,`pointer`],[`gotpointercapture`,`pointer`],[`lostpointercapture`,`pointer`],[`focus`,`focus`],[`blur`,`focus`],[`drag`,`drag`],[`dragstart`,`drag`],[`dragend`,`drag`],[`dragover`,`drag`],[`dragenter`,`drag`],[`dragleave`,`drag`],[`dragexit`,`drag`],[`drop`,`drag`],[`wheel`,`wheel`],[`deviceorientation`,`deviceorientation`],[`deviceorientationabsolute`,`deviceorientation`],[`devicemotion`,`devicemotion`]]),this._hoverHitTargetInterceptorEvents=new Set([`mousemove`]),this._tapHitTargetInterceptorEvents=new Set([`pointerdown`,`pointerup`,`touchstart`,`touchend`,`touchcancel`]),this._mouseHitTargetInterceptorEvents=new Set([`mousedown`,`mouseup`,`pointerdown`,`pointerup`,`click`,`auxclick`,`dblclick`,`contextmenu`]),this._allHitTargetInterceptorEvents=new Set([...this._hoverHitTargetInterceptorEvents,...this._tapHitTargetInterceptorEvents,...this._mouseHitTargetInterceptorEvents]),this._engines=new Map,this._engines.set(`xpath`,gl),this._engines.set(`xpath:light`,gl),this._engines.set(`role`,pc(!1)),this._engines.set(`text`,this._createTextEngine(!0,!1)),this._engines.set(`text:light`,this._createTextEngine(!1,!1)),this._engines.set(`id`,this._createAttributeEngine(`id`,!0)),this._engines.set(`id:light`,this._createAttributeEngine(`id`,!1)),this._engines.set(`data-testid`,this._createAttributeEngine(`data-testid`,!0)),this._engines.set(`data-testid:light`,this._createAttributeEngine(`data-testid`,!1)),this._engines.set(`data-test-id`,this._createAttributeEngine(`data-test-id`,!0)),this._engines.set(`data-test-id:light`,this._createAttributeEngine(`data-test-id`,!1)),this._engines.set(`data-test`,this._createAttributeEngine(`data-test`,!0)),this._engines.set(`data-test:light`,this._createAttributeEngine(`data-test`,!1)),this._engines.set(`css`,this._createCSSEngine()),this._engines.set(`nth`,{queryAll:()=>[]}),this._engines.set(`visible`,this._createVisibleEngine()),this._engines.set(`internal:control`,this._createControlEngine()),this._engines.set(`internal:has`,this._createHasEngine()),this._engines.set(`internal:has-not`,this._createHasNotEngine()),this._engines.set(`internal:and`,{queryAll:()=>[]}),this._engines.set(`internal:or`,{queryAll:()=>[]}),this._engines.set(`internal:chain`,this._createInternalChainEngine()),this._engines.set(`internal:label`,this._createInternalLabelEngine()),this._engines.set(`internal:text`,this._createTextEngine(!0,!0)),this._engines.set(`internal:has-text`,this._createInternalHasTextEngine()),this._engines.set(`internal:has-not-text`,this._createInternalHasNotTextEngine()),this._engines.set(`internal:attr`,this._createNamedAttributeEngine()),this._engines.set(`internal:testid`,this._createTestIdEngine()),this._engines.set(`internal:role`,pc(!0)),this._engines.set(`internal:describe`,this._createDescribeEngine()),this._engines.set(`aria-ref`,this._createAriaRefEngine());for(let{name:e,source:n}of t.customEngines)this._engines.set(e,this.eval(n));this._stableRafCount=t.stableRafCount,this._browserName=t.browserName,this._shouldPrependErrorPrefix=!!t.shouldPrependErrorPrefix,this._isUtilityWorld=!!t.isUtilityWorld,ja({browserNameForWorkarounds:t.browserName}),this._setupGlobalListenersRemovalDetection(),this._setupHitTargetInterceptors(),this.isUnderTest&&(this.window.__injectedScript=this)}eval(e){return this.window.eval(e)}testIdAttributeNameForStrictErrorAndConsoleCodegen(){return this._testIdAttributeNameForStrictErrorAndConsoleCodegen}parseSelector(e){let t=hn(e);return vn(t,t=>{if(!this._engines.has(t.name))throw this.createStacklessError(`Unknown engine "${t.name}" while parsing selector ${e}`)}),t}generateSelector(e,t){return tl(this,e,t)}generateSelectorSimple(e,t){return tl(this,e,{...t,testIdAttributeName:this._testIdAttributeNameForStrictErrorAndConsoleCodegen}).selector}querySelector(e,t,n){let r=this.querySelectorAll(e,t);if(n&&r.length>1)throw this.strictModeViolationError(e,r);return this.checkDeprecatedSelectorUsage(e,r),r[0]}_queryNth(e,t){let n=[...e],r=+t.body;return r===-1&&(r=n.length-1),new Set(n.slice(r,r+1))}_queryLayoutSelector(e,t,n){let r=t.name,i=t.body,a=[],o=this.querySelectorAll(i.parsed,n);for(let t of e){let e=tc(r,t,o,i.distance);e!==void 0&&a.push({element:t,score:e})}return a.sort((e,t)=>e.score-t.score),new Set(a.map(e=>e.element))}ariaSnapshot(e,t){return this.ariaSnapshotWithRefs(e,t).text}ariaSnapshotWithRefs(e,t){if(e.nodeType!==Node.ELEMENT_NODE)throw this.createStacklessError(`Can only capture aria snapshot of Element nodes.`);t={...t,refPrefix:this._frameSeq&&t.mode===`ai`?`f`+this._frameSeq:``};let n=Ts(e,t),r=zs(n,t);return this._lastAriaSnapshotForQuery=n,{text:r.text,iframeRefs:n.iframeRefs,iframeDepths:r.iframeDepths}}ariaSnapshotForRecorder(){let e=Ts(this.document.body,{mode:`ai`}),{text:t}=zs(e,{mode:`ai`});return{ariaSnapshot:t,refs:e.refs}}ariaSnapshotForExpectFailure(e,t){return zs(Ts(e,t),t).text}getAllElementsMatchingExpectAriaTemplate(e,t){return Ns(e.documentElement,t)}querySelectorAll(e,t){if(e.capture!==void 0){if(e.parts.some(e=>e.name===`nth`))throw this.createStacklessError(`Can't query n-th element in a request with the capture.`);let n={parts:e.parts.slice(0,e.capture+1)};if(e.capturen.has(e)))}else if(r.name===`internal:or`){let e=this.querySelectorAll(r.body.parsed,t);n=new Set(kc(new Set([...n,...e])))}else if(ec.includes(r.name))n=this._queryLayoutSelector(n,r,t);else{let e=new Set;for(let t of n){let n=this._queryEngineAll(r,t);for(let t of n)e.add(t)}n=e}return[...n]}finally{this._evaluator.end()}}_queryEngineAll(e,t){let n=this._engines.get(e.name).queryAll(t,e.body);for(let e of n)if(!(`nodeName`in e))throw this.createStacklessError(`Expected a Node but got ${Object.prototype.toString.call(e)}`);return n}_createAttributeEngine(e,t){let n=t=>[{simples:[{selector:{css:`[${e}=${JSON.stringify(t)}]`,functions:[]},combinator:``}]}];return{queryAll:(e,r)=>this._evaluator.query({scope:e,pierceShadow:t},n(r))}}_createCSSEngine(){return{queryAll:(e,t)=>this._evaluator.query({scope:e,pierceShadow:!0},t)}}_createTextEngine(e,t){return{queryAll:(n,r)=>{let{matcher:i,kind:a}=zl(r,t),o=[],s=null,c=e=>{if(a===`lax`&&s&&s.contains(e))return!1;let n=ac(this._evaluator._cacheText,e,i);n===`none`&&(s=e),(n===`self`||n===`selfAndChildren`&&a===`strict`&&!t)&&o.push(e)};n.nodeType===Node.ELEMENT_NODE&&c(n);let l=this._evaluator._queryCSS({scope:n,pierceShadow:e},`*`);for(let e of l)c(e);return o}}}_createInternalHasTextEngine(){return{queryAll:(e,t)=>{if(e.nodeType!==1)return[];let n=e,r=ic(this._evaluator._cacheText,n),{matcher:i}=zl(t,!0);return i(r)?[n]:[]}}}_createInternalHasNotTextEngine(){return{queryAll:(e,t)=>{if(e.nodeType!==1)return[];let n=e,r=ic(this._evaluator._cacheText,n),{matcher:i}=zl(t,!0);return i(r)?[]:[n]}}}_createInternalLabelEngine(){return{queryAll:(e,t)=>{let{matcher:n}=zl(t,!0);return this._evaluator._queryCSS({scope:e,pierceShadow:!0},`*`).filter(e=>oc(this._evaluator._cacheText,e).some(e=>n(e)))}}}_createNamedAttributeEngine(){return{queryAll:(e,t)=>{let n=bn(t,!0);if(n.name||n.attributes.length!==1)throw Error(`Malformed attribute selector: `+t);let{name:r}=n.attributes[0],i=Ll(n.attributes[0]);return this._evaluator._queryCSS({scope:e,pierceShadow:!0},`[${r}]`).filter(e=>i(e.getAttribute(r)))}}}_createTestIdEngine(){return{queryAll:(e,t)=>{let n=bn(t,!0);if(n.name||n.attributes.length!==1)throw Error(`Malformed test id selector: `+t);let r=oa(n.attributes[0].name),i=Ll(n.attributes[0]),a=r.map(e=>`[${e}]`).join(`,`);return this._evaluator._queryCSS({scope:e,pierceShadow:!0},a).filter(e=>r.some(t=>{let n=e.getAttribute(t);return n!==null&&i(n)}))}}}_createDescribeEngine(){return{queryAll:e=>e.nodeType===1?[e]:[]}}_createControlEngine(){return{queryAll(e,t){if(t===`enter-frame`||t===`return-empty`)return[];if(t===`component`)return e.nodeType===1?[e.childElementCount===1?e.firstElementChild:e]:[];throw Error(`Internal error, unknown internal:control selector ${t}`)}}}_createHasEngine(){return{queryAll:(e,t)=>e.nodeType===1&&this.querySelector(t.parsed,e,!1)?[e]:[]}}_createHasNotEngine(){return{queryAll:(e,t)=>e.nodeType===1?this.querySelector(t.parsed,e,!1)?[]:[e]:[]}}_createVisibleEngine(){return{queryAll:(e,t)=>{if(e.nodeType!==1)return[];let n=t===`true`;return Va(e)===n?[e]:[]}}}_createInternalChainEngine(){return{queryAll:(e,t)=>this.querySelectorAll(t.parsed,e)}}extend(e,t){return new(this.window.eval(` - (() => { - const module = {}; - ${e} - return module.exports.default(); - })()`))(this,t)}async viewportRatio(e){return await new Promise(t=>{let n=new IntersectionObserver(e=>{t(e[0].intersectionRatio),n.disconnect()});n.observe(e),this.utils.builtins.requestAnimationFrame(()=>{})})}getElementBorderWidth(e){if(e.nodeType!==Node.ELEMENT_NODE||!e.ownerDocument||!e.ownerDocument.defaultView)return{left:0,top:0};let t=e.ownerDocument.defaultView.getComputedStyle(e);return{left:parseInt(t.borderLeftWidth||``,10),top:parseInt(t.borderTopWidth||``,10)}}describeIFrameStyle(e){if(!e.ownerDocument||!e.ownerDocument.defaultView)return`error:notconnected`;let t=e.ownerDocument.defaultView;for(let n=e;n;n=Na(n))if(t.getComputedStyle(n).transform!==`none`)return`transformed`;let n=t.getComputedStyle(e);return{left:parseInt(n.borderLeftWidth||``,10)+parseInt(n.paddingLeft||``,10),top:parseInt(n.borderTopWidth||``,10)+parseInt(n.paddingTop||``,10)}}retarget(e,t){let n=e.nodeType===Node.ELEMENT_NODE?e:e.parentElement;if(!n)return null;if(t===`none`)return n;if(!n.matches(`input, textarea, select`)&&!n.isContentEditable&&(n=t===`button-link`?n.closest(`button, [role=button], a, [role=link]`)||n:n.closest(`button, [role=button], [role=checkbox], [role=radio]`)||n),t===`follow-label`&&!n.matches(`a, input, textarea, button, select, [role=link], [role=button], [role=checkbox], [role=radio]`)&&!n.isContentEditable){let e=n.closest(`label`);e&&e.control&&(n=e.control)}return n}async checkElementStates(e,t){if(t.includes(`stable`)){let t=await this._checkElementIsStable(e);if(t===!1)return{missingState:`stable`};if(t===`error:notconnected`)return`error:notconnected`}for(let n of t)if(n!==`stable`){let t=this.elementState(e,n);if(t.received===`error:notconnected`)return`error:notconnected`;if(!t.matches)return{missingState:n}}}async _checkElementIsStable(e){let t=Symbol(`continuePolling`),n,r=0,i=0,a=()=>{let a=this.retarget(e,`no-follow-label`);if(!a)return`error:notconnected`;let o=this.utils.builtins.performance.now();if(this._stableRafCount>1&&o-i<15)return t;i=o;let s=a.getBoundingClientRect(),c={x:s.top,y:s.left,width:s.width,height:s.height};if(n){if(!(c.x===n.x&&c.y===n.y&&c.width===n.width&&c.height===n.height))return!1;if(++r>=this._stableRafCount)return!0}return n=c,t},o,s,c=new Promise((e,t)=>{o=e,s=t}),l=()=>{try{let e=a();e===t?this.utils.builtins.requestAnimationFrame(l):o(e)}catch(e){s(e)}};return this.utils.builtins.requestAnimationFrame(l),c}_createAriaRefEngine(){return{queryAll:(e,t)=>{let n=this._lastAriaSnapshotForQuery?.info?.get(t);return n&&n.element.isConnected?[n.element]:[]}}}elementState(e,t){let n=this.retarget(e,[`visible`,`hidden`].includes(t)?`none`:`follow-label`);if(!n||!n.isConnected)return t===`hidden`?{matches:!0,received:`hidden`}:{matches:!1,received:`error:notconnected`};if(t===`visible`||t===`hidden`){let e=Va(n);return{matches:t===`visible`?e:!e,received:e?`visible`:`hidden`}}if(t===`disabled`||t===`enabled`){let e=Yo(n);return{matches:t===`disabled`?e:!e,received:e?`disabled`:`enabled`}}if(t===`editable`){let e=Yo(n),t=Vo(n);if(t===`error`)throw this.createStacklessError(`Element is not an , -214 / 500 characters - - - - - -
- -
- -
-

Support Contact

-

- How buyers can reach you for inquiries regarding custom orders or product details. -

-
- -
-
-
- - -
-
- - -
-
-
-
- -
- - -
- - - - \ No newline at end of file diff --git a/seller_settings/screen.png b/seller_settings/screen.png deleted file mode 100644 index 033d6c3..0000000 Binary files a/seller_settings/screen.png and /dev/null differ diff --git a/src/App.css b/src/App.css deleted file mode 100644 index f90339d..0000000 --- a/src/App.css +++ /dev/null @@ -1,184 +0,0 @@ -.counter { - font-size: 16px; - padding: 5px 10px; - border-radius: 5px; - color: var(--accent); - background: var(--accent-bg); - border: 2px solid transparent; - transition: border-color 0.3s; - margin-bottom: 24px; - - &:hover { - border-color: var(--accent-border); - } - &:focus-visible { - outline: 2px solid var(--accent); - outline-offset: 2px; - } -} - -.hero { - position: relative; - - .base, - .framework, - .vite { - inset-inline: 0; - margin: 0 auto; - } - - .base { - width: 170px; - position: relative; - z-index: 0; - } - - .framework, - .vite { - position: absolute; - } - - .framework { - z-index: 1; - top: 34px; - height: 28px; - transform: perspective(2000px) rotateZ(300deg) rotateX(44deg) rotateY(39deg) - scale(1.4); - } - - .vite { - z-index: 0; - top: 107px; - height: 26px; - width: auto; - transform: perspective(2000px) rotateZ(300deg) rotateX(40deg) rotateY(39deg) - scale(0.8); - } -} - -#center { - display: flex; - flex-direction: column; - gap: 25px; - place-content: center; - place-items: center; - flex-grow: 1; - - @media (max-width: 1024px) { - padding: 32px 20px 24px; - gap: 18px; - } -} - -#next-steps { - display: flex; - border-top: 1px solid var(--border); - text-align: left; - - & > div { - flex: 1 1 0; - padding: 32px; - @media (max-width: 1024px) { - padding: 24px 20px; - } - } - - .icon { - margin-bottom: 16px; - width: 22px; - height: 22px; - } - - @media (max-width: 1024px) { - flex-direction: column; - text-align: center; - } -} - -#docs { - border-right: 1px solid var(--border); - - @media (max-width: 1024px) { - border-right: none; - border-bottom: 1px solid var(--border); - } -} - -#next-steps ul { - list-style: none; - padding: 0; - display: flex; - gap: 8px; - margin: 32px 0 0; - - .logo { - height: 18px; - } - - a { - color: var(--text-h); - font-size: 16px; - border-radius: 6px; - background: var(--social-bg); - display: flex; - padding: 6px 12px; - align-items: center; - gap: 8px; - text-decoration: none; - transition: box-shadow 0.3s; - - &:hover { - box-shadow: var(--shadow); - } - .button-icon { - height: 18px; - width: 18px; - } - } - - @media (max-width: 1024px) { - margin-top: 20px; - flex-wrap: wrap; - justify-content: center; - - li { - flex: 1 1 calc(50% - 8px); - } - - a { - width: 100%; - justify-content: center; - box-sizing: border-box; - } - } -} - -#spacer { - height: 88px; - border-top: 1px solid var(--border); - @media (max-width: 1024px) { - height: 48px; - } -} - -.ticks { - position: relative; - width: 100%; - - &::before, - &::after { - content: ''; - position: absolute; - top: -4.5px; - border: 5px solid transparent; - } - - &::before { - left: 0; - border-left-color: var(--border); - } - &::after { - right: 0; - border-right-color: var(--border); - } -} diff --git a/src/App.test.tsx b/src/App.test.tsx deleted file mode 100644 index 8124435..0000000 --- a/src/App.test.tsx +++ /dev/null @@ -1,366 +0,0 @@ -import { render, screen, fireEvent } from '@testing-library/react' -import { describe, it, expect, vi, beforeAll, beforeEach } from 'vitest' -import App from './App' - -// Mock window.scrollTo and fetch since jsdom does not implement them -beforeAll(() => { - window.scrollTo = vi.fn() - globalThis.fetch = vi.fn((url) => { - let responseData: any = {}; - if (url.includes('/api/auth/register') || url.includes('/api/auth/login')) { - responseData = { - access_token: 'mock_access_token', - refresh_token: 'mock_refresh_token', - user: { - id: 1, - username: 'test_seller', - email: 'test@example.com', - profile: { onboarding_step: 4, phone_verified: true, email_verified: true, is_gstin_verified: true, aadhar_s3_key: 'mock_aadhar', pan_s3_key: 'mock_pan', store_name: 'Crafty Store', logo_s3_key: 'mock_logo', street: '123 Loom Lane', status: 'pending_approval' } - } - }; - } else if (url.includes('/api/auth/verify-otp')) { - responseData = { verified: true, next_step: 'complete_profile' }; - } else if (url.includes('/api/profile/submit-gstin')) { - responseData = { verified: true, business_name: 'TEST BUSINESS', address: 'Test address', gstin_status: 'Active' }; - } else if (url.includes('/api/profile/presigned-url')) { - responseData = { presigned_url: 'https://s3.mock/upload', s3_key: 'suppliers/1/mock_key.jpg' }; - } else if (url.includes('/api/profile/')) { - responseData = { - id: 1, - username: 'test_seller', - email: 'test@example.com', - profile: { onboarding_step: 4, phone_verified: true, email_verified: true, is_gstin_verified: true, aadhar_s3_key: 'mock_aadhar', pan_s3_key: 'mock_pan', store_name: 'Crafty Store', logo_s3_key: 'mock_logo', street: '123 Loom Lane', status: 'pending_approval' } - }; - } else if (url.includes('/api/products')) { - responseData = []; - } else if (url.includes('/api/orders')) { - responseData = []; - } else if (url.includes('/api/returns')) { - responseData = []; - } else if (url.includes('/api/wallet')) { - responseData = { outstanding: 850.00, withdrawn: 1250.00, transactions: [] }; - } - return Promise.resolve({ - ok: true, - json: () => Promise.resolve(responseData) - } as Response); - }) -}) - -beforeEach(() => { - localStorage.clear() -}) - -describe('Supplier Portal Onboarding & Active Dashboard Tests', () => { - it('renders landing page with correct primary titles', () => { - render() - - expect(screen.getByText(/Sell Authentic Handcrafted Products Across India & Worldwide/i)).toBeInTheDocument() - - expect(screen.getByRole('heading', { name: /^Featured Seller Categories$/i })).toBeInTheDocument() - }) - - it('navigates to Support page and handles contact form submission', () => { - render() - - const supportBtn = screen.getByText('Contact Us') - fireEvent.click(supportBtn) - - const nameInput = screen.getByPlaceholderText(/e.g. Ananya Sharma/i) - const emailInput = screen.getByPlaceholderText(/e.g. ananya@example.com/i) - const msgInput = screen.getByPlaceholderText(/How can we assist you today\?/i) - - fireEvent.change(nameInput, { target: { value: 'John Doe' } }) - fireEvent.change(emailInput, { target: { value: 'john@example.com' } }) - fireEvent.change(msgInput, { target: { value: 'Hello support!' } }) - - const alertMock = vi.spyOn(window, 'alert').mockImplementation(() => {}) - - const submitBtn = screen.getByText('Send Message') - fireEvent.click(submitBtn) - - expect(alertMock).toHaveBeenCalled() - alertMock.mockRestore() - }) - - it('signs up successfully and completes profile to active dashboard', async () => { - render() - - const getStartedBtn = screen.getByText(/^Get started$/i) - fireEvent.click(getStartedBtn) - // fireEvent.click(screen.getByText(/Create an account/i)) - - const emailInput = screen.getByPlaceholderText(/Enter your email/i) - const phoneInput = screen.getByPlaceholderText(/9876543210/i) - const passInput = screen.getByPlaceholderText(/Create a password/i) - const confirmPassInput = screen.getByPlaceholderText(/Repeat your password/i) - const policyCheckbox = screen.getByLabelText(/I agree to the/i) - - fireEvent.change(emailInput, { target: { value: 'seller@example.com' } }) - fireEvent.change(phoneInput, { target: { value: '9876543210' } }) - fireEvent.change(passInput, { target: { value: 'password123' } }) - fireEvent.change(confirmPassInput, { target: { value: 'password123' } }) - fireEvent.click(policyCheckbox) - - const alertMock = vi.spyOn(window, 'alert').mockImplementation(() => {}) - - const registerBtn = screen.getByRole('button', { name: /Create Account/i }) - fireEvent.click(registerBtn) - - expect(await screen.findByText(/Welcome to Tradhox/i)).toBeInTheDocument() - // Redirects to Dashboard Page - expect(screen.getByText(/Welcome to Tradhox/i)).toBeInTheDocument() - expect(screen.getByText(/Welcome to Tradhox/i)).toBeInTheDocument() - - alertMock.mockRestore() - }) - - it('logs in successfully and navigates dashboard tools', async () => { - render() - - const loginBtn = screen.getByText(/^Login$/i) - fireEvent.click(loginBtn) - - const emailInput = screen.getByPlaceholderText(/you@example.com/i) - const passInput = screen.getByPlaceholderText(/••••••••/) - - fireEvent.change(emailInput, { target: { value: 'seller@example.com' } }) - fireEvent.change(passInput, { target: { value: 'password123' } }) - - const submitBtn = screen.getByRole('button', { name: /Sign In/i }) - fireEvent.click(submitBtn) - - // Check dashboard rendering - expect(await screen.findByText(/Total Sales/i)).toBeInTheDocument() - - // Check Sidebar Tab click: Manage Products - const productsTabBtn = screen.getAllByText(/^Products$/i)[0] - fireEvent.click(productsTabBtn) - - expect(screen.getAllByText(/Products/i).length).toBeGreaterThan(0) - expect(screen.getAllByText(/Add Product/i).length).toBeGreaterThan(0) - - // Check Sidebar Tab click: Orders & Transit - const ordersTabBtn = screen.getByText(/Orders/i) - fireEvent.click(ordersTabBtn) - - expect(screen.getByText(/All Orders/i)).toBeInTheDocument() - - // Check Sidebar Tab click: Payments - const walletTabBtn = screen.getByText(/Payments & Earnings/i) - fireEvent.click(walletTabBtn) - - expect(screen.getByText(/Available for Payout/i)).toBeInTheDocument() - expect(screen.getByText(/Transaction History/i)).toBeInTheDocument() - }) - - it('navigates to How It Works page from landing nav and renders 6-step journey', () => { - render() - - const howItWorksBtn = screen.getAllByRole('button', { name: /^How it works$/i })[0] - fireEvent.click(howItWorksBtn) - - expect(screen.getByText(/How it works — The Seller Journey/i)).toBeInTheDocument() - expect(screen.getByText(/The 6-Step Journey/i)).toBeInTheDocument() - expect(screen.getByText(/Guaranteed 7-Day Payouts/i)).toBeInTheDocument() - }) - - it('navigates to Pricing page and calculates artisan net payout correctly', () => { - render() - - const pricingBtn = screen.getAllByRole('button', { name: /^Pricing$/i })[0] - fireEvent.click(pricingBtn) - - expect(screen.getByText(/Transparent Pricing Built Solely for Maker Prosperity/i)).toBeInTheDocument() - expect(screen.getByText(/Estimate Your Net Take-Home Earnings/i)).toBeInTheDocument() - expect(screen.getByText(/Net Bank Payout/i)).toBeInTheDocument() - }) - - it('navigates to Grow Your Business page and renders growth initiatives', () => { - render() - - const growBtn = screen.getAllByRole('button', { name: /^Grow your business$/i })[0] - fireEvent.click(growBtn) - - expect(screen.getByText(/Scale Your Authentic Artisan Brand With Tradhox/i)).toBeInTheDocument() - expect(screen.getByText(/Early Maker Initiative/i)).toBeInTheDocument() - expect(screen.getByText(/Curated Artisan Showcases/i)).toBeInTheDocument() - }) - - it('progresses through the full 7-step onboarding wizard to Application Submitted', async () => { - render() - - // Sign up to enter wizard - const getStartedBtn = screen.getByText(/^Get started$/i) - fireEvent.click(getStartedBtn) - - fireEvent.change(screen.getByPlaceholderText(/Enter your email/i), { target: { value: 'artisan@tradhox.com' } }) - fireEvent.change(screen.getByPlaceholderText(/9876543210/i), { target: { value: '9876543210' } }) - fireEvent.change(screen.getByPlaceholderText(/Create a password/i), { target: { value: 'artisanPass123' } }) - fireEvent.change(screen.getByPlaceholderText(/Repeat your password/i), { target: { value: 'artisanPass123' } }) - fireEvent.click(screen.getByLabelText(/I agree to the/i)) - - const alertMock = vi.spyOn(window, 'alert').mockImplementation(() => {}) - fireEvent.click(screen.getByRole('button', { name: /Create Account/i })) - - // Now in Step 1 of Onboarding Wizard - expect(await screen.findByText(/Welcome to Tradhox/i)).toBeInTheDocument() - expect(screen.getByText(/Step 1: Account/i)).toBeInTheDocument() - - // Step 1 -> Step 2 - fireEvent.click(screen.getByRole('button', { name: /Save & Continue/i })) - expect(screen.getByText(/Step 2: Business & GST/i)).toBeInTheDocument() - - // Step 2 -> Step 3 - fireEvent.click(screen.getByRole('button', { name: /Save & Continue/i })) - expect(screen.getByText(/Step 3: Pickup Address/i)).toBeInTheDocument() - - // Step 3 -> Step 4 - fireEvent.click(screen.getByRole('button', { name: /Save & Continue/i })) - expect(screen.getByText(/Step 4: Bank Details/i)).toBeInTheDocument() - - // Step 4 -> Step 5 - fireEvent.click(screen.getByRole('button', { name: /Save & Continue/i })) - expect(screen.getByText(/Step 5: Categories/i)).toBeInTheDocument() - - // Select category in Step 5 - const categoryCard = screen.getByText(/Handloom & Textiles/i) - fireEvent.click(categoryCard) - - // Step 5 -> Step 6 - fireEvent.click(screen.getByRole('button', { name: /Save & Continue/i })) - expect(screen.getByText(/Step 6: Products/i)).toBeInTheDocument() - - // Step 6 -> Step 7 - fireEvent.click(screen.getByRole('button', { name: /Save & Continue/i })) - expect(screen.getByText(/Step 7: Store Profile/i)).toBeInTheDocument() - - // Step 7 Submit Application -> Application Submitted confirmation screen - const submitAppBtn = screen.getByRole('button', { name: /Submit Application/i }) - fireEvent.click(submitAppBtn) - - expect(screen.getByText(/Application submitted!/i)).toBeInTheDocument() - expect(screen.getByText(/What happens next:/i)).toBeInTheDocument() - - alertMock.mockRestore() - }) - - it('allows demo login with any custom email and password without server session', async () => { - const originalFetch = globalThis.fetch - globalThis.fetch = vi.fn().mockRejectedValue(new Error('Server offline')) - - render() - - const loginBtn = screen.getByText(/^Login$/i) - fireEvent.click(loginBtn) - - const emailInput = screen.getByPlaceholderText(/you@example.com/i) - const passInput = screen.getByPlaceholderText(/••••••••/) - - fireEvent.change(emailInput, { target: { value: 'random_artisan_demo@craft.org' } }) - fireEvent.change(passInput, { target: { value: 'any_password_123' } }) - - const submitBtn = screen.getByRole('button', { name: /Sign In/i }) - fireEvent.click(submitBtn) - - expect(await screen.findByText(/Total Sales/i)).toBeInTheDocument() - - globalThis.fetch = originalFetch - }) - - it('allows login directly without entering any password', async () => { - render() - - const loginBtn = screen.getByText(/^Login$/i) - fireEvent.click(loginBtn) - - const submitBtn = screen.getByRole('button', { name: /Sign In/i }) - fireEvent.click(submitBtn) - - expect(await screen.findByText(/Total Sales/i)).toBeInTheDocument() - }) - - it('allows signup without entering any password', async () => { - render() - - const getStartedBtn = screen.getByText(/^Get started$/i) - fireEvent.click(getStartedBtn) - - fireEvent.change(screen.getByPlaceholderText(/Enter your email/i), { target: { value: 'artisan_nopass@tradhox.com' } }) - fireEvent.change(screen.getByPlaceholderText(/9876543210/i), { target: { value: '9876543210' } }) - fireEvent.click(screen.getByLabelText(/I agree to the/i)) - - const alertMock = vi.spyOn(window, 'alert').mockImplementation(() => {}) - fireEvent.click(screen.getByRole('button', { name: /Create Account/i })) - - expect(await screen.findByText(/Welcome to Tradhox/i)).toBeInTheDocument() - alertMock.mockRestore() - }) - - it('navigates to Analytics tab in dashboard and displays KPIs and charts', async () => { - render() - - const loginBtn = screen.getByText(/^Login$/i) - fireEvent.click(loginBtn) - - const submitBtn = screen.getByRole('button', { name: /Sign In/i }) - fireEvent.click(submitBtn) - - expect(await screen.findByText(/Total Sales/i)).toBeInTheDocument() - - const analyticsTabBtn = screen.getByText(/Analytics/i) - fireEvent.click(analyticsTabBtn) - - expect(await screen.findByText(/Analytics Overview/i)).toBeInTheDocument() - expect(screen.getByText(/Conversion Rate/i)).toBeInTheDocument() - expect(screen.getByText(/Top Categories/i)).toBeInTheDocument() - }) - - it('navigates to Settings tab in dashboard and renders new design without legacy verification or document sections', async () => { - render() - - const loginBtn = screen.getByText(/^Login$/i) - fireEvent.click(loginBtn) - - const submitBtn = screen.getByRole('button', { name: /Sign In/i }) - fireEvent.click(submitBtn) - - expect(await screen.findByText(/Total Sales/i)).toBeInTheDocument() - - const settingsTabLinks = screen.getAllByText(/^Settings$/i) - fireEvent.click(settingsTabLinks[settingsTabLinks.length - 1]) - - // Verify header and tabs from new design - expect(await screen.findByText(/Manage your artisan store profile, account details, and preferences/i)).toBeInTheDocument() - expect(screen.getByRole('button', { name: /^Store Profile$/i })).toBeInTheDocument() - expect(screen.getByRole('button', { name: /^Account Settings$/i })).toBeInTheDocument() - expect(screen.getByRole('button', { name: /^Shipping Preferences$/i })).toBeInTheDocument() - expect(screen.getByRole('button', { name: /^Notifications$/i })).toBeInTheDocument() - - // Verify Public Profile section - expect(screen.getByRole('heading', { name: /Public Profile/i })).toBeInTheDocument() - expect(screen.getByText(/Change Logo/i)).toBeInTheDocument() - expect(screen.getByText(/JPG, GIF or PNG. Max size of 800K/i)).toBeInTheDocument() - expect(screen.getByPlaceholderText('Heritage Weaves & Co.')).toBeInTheDocument() - expect(screen.getByText('tradhox.com/store/')).toBeInTheDocument() - expect(screen.getByPlaceholderText(/Preserving centuries-old handloom techniques/i)).toBeInTheDocument() - - // Verify Support Contact section - expect(screen.getByRole('heading', { name: /Support Contact/i })).toBeInTheDocument() - expect(screen.getByPlaceholderText('hello@heritageweaves.in')).toBeInTheDocument() - - // Verify buttons - expect(screen.getByRole('button', { name: /Discard Changes/i })).toBeInTheDocument() - expect(screen.getByRole('button', { name: /Save Profile/i })).toBeInTheDocument() - - // Verify that legacy/extra things are NOT present - expect(screen.queryByText(/Registered Email/i)).not.toBeInTheDocument() - expect(screen.queryByText(/Registered Phone/i)).not.toBeInTheDocument() - expect(screen.queryByText(/Business Documents \(Legal\)/i)).not.toBeInTheDocument() - expect(screen.queryByText(/Enter 15-digit GSTIN/i)).not.toBeInTheDocument() - expect(screen.queryByText(/Choose Aadhar\.\.\./i)).not.toBeInTheDocument() - expect(screen.queryByText(/Choose PAN\.\.\./i)).not.toBeInTheDocument() - expect(screen.queryByText(/Street Address/i)).not.toBeInTheDocument() - }) -}) - diff --git a/src/App.tsx b/src/App.tsx deleted file mode 100644 index 3a9df62..0000000 --- a/src/App.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; -import { SellerProvider, useSeller } from './context/SellerContext'; -import Header from './components/layout/Header'; -import Footer from './components/layout/Footer'; -import LandingPage from './components/pages/LandingPage'; -import HowItWorksPage from './components/pages/HowItWorksPage'; -import PricingPage from './components/pages/PricingPage'; -import GrowBusinessPage from './components/pages/GrowBusinessPage'; -import AboutPage from './components/pages/AboutPage'; -import ContactPage from './components/pages/ContactPage'; -import LoginPage from './components/pages/LoginPage'; -import AuthForms from './components/pages/AuthForms'; -import OnboardingWizard from './components/pages/OnboardingWizard'; -import DashboardLayout from './components/dashboard/DashboardLayout'; - -function AppRouter() { - const { currentPage } = useSeller(); - - if (currentPage === 'dashboard') { - return ; - } - - return ( -
-
-
- {currentPage === 'home' && } - {currentPage === 'how-it-works' && } - {currentPage === 'pricing' && } - {currentPage === 'grow-business' && } - {currentPage === 'signup' && } - {currentPage === 'profile-completion' && } - {currentPage === 'about' && } - {currentPage === 'contact' && } - {currentPage === 'login' && } -
-
-
- ); -} - -export default function App() { - return ( - - - - ); -} diff --git a/src/assets/hero.png b/src/assets/hero.png deleted file mode 100644 index 02251f4..0000000 Binary files a/src/assets/hero.png and /dev/null differ diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/vite.svg b/src/assets/vite.svg deleted file mode 100644 index 5101b67..0000000 --- a/src/assets/vite.svg +++ /dev/null @@ -1 +0,0 @@ -Vite diff --git a/src/components/dashboard/DashboardLayout.tsx b/src/components/dashboard/DashboardLayout.tsx deleted file mode 100644 index 261b455..0000000 --- a/src/components/dashboard/DashboardLayout.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { useSeller } from '../../context/SellerContext'; -import Sidebar from '../layout/Sidebar'; -import DashboardHeader from '../layout/DashboardHeader'; -import OverviewTab from './tabs/OverviewTab'; -import OrdersTab from './tabs/OrdersTab'; -import ProductsTab from './tabs/ProductsTab'; -import AddProductTab from './tabs/AddProductTab'; -import PaymentsTab from './tabs/PaymentsTab'; -import AnalyticsTab from './tabs/AnalyticsTab'; -import SettingsTab from './tabs/SettingsTab'; - -export default function DashboardLayout() { - const { dashTab } = useSeller(); - - const renderContent = () => { - switch (dashTab) { - case 'overview': return ; - case 'orders': return ; - case 'products': return ; - case 'add-product': return ; - case 'payments': return ; - case 'analytics': return ; - case 'settings': return ; - default: return ; - } - }; - - return ( -
- -
-
- -
-
-
- {renderContent()} -
-
-
-
- ); -} diff --git a/src/components/dashboard/tabs/AddProductTab.tsx b/src/components/dashboard/tabs/AddProductTab.tsx deleted file mode 100644 index 2f9a625..0000000 --- a/src/components/dashboard/tabs/AddProductTab.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../../context/SellerContext'; - -export default function AddProductTab() { - const { setDashTab, productForm, setProductForm, handleSaveProduct, isEditingProduct } = useSeller(); - - const [imagePreview, setImagePreview] = useState(null); - const [isSubmitting, setIsSubmitting] = useState(false); - - const handleImageChange = (e: React.ChangeEvent) => { - const file = e.target.files?.[0]; - if (file) { - const reader = new FileReader(); - reader.onloadend = () => { - const result = reader.result as string; - setImagePreview(result); - setProductForm({...productForm, image: result}); - }; - reader.readAsDataURL(file); - } - }; - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); - setIsSubmitting(true); - // Call the actual API save logic - handleSaveProduct(e); - - // Simulate animation and redirect - setTimeout(() => { - setIsSubmitting(false); - setDashTab('products'); - }, 1500); - }; - - return ( -
-
- -

- {isEditingProduct ? 'Edit Product' : 'Add New Product'} -

-
- -
-
-
- - {/* Left Column: Basic Info */} -
-
- -
- setProductForm({...productForm, title: e.target.value})} /> -
-
- -
- -
- -
-
- -
-
-
- -
- setProductForm({...productForm, price: Number(e.target.value)})} /> - - currency_rupee - -
-
-
-
-
- -
- setProductForm({...productForm, stock: Number(e.target.value)})} /> - - inventory_2 - -
-
-
-
-
- - {/* Right Column: Imagery & Category */} -
-
- -
-
- -
- {imagePreview && ( -

- setImagePreview(null)} className="has-text-danger">Remove image -

- )} -
-
- -
- -
-
- -
-
-
-
- -
- -
- - -
-
-
-
- ); -} diff --git a/src/components/dashboard/tabs/AnalyticsTab.tsx b/src/components/dashboard/tabs/AnalyticsTab.tsx deleted file mode 100644 index 427f3ff..0000000 --- a/src/components/dashboard/tabs/AnalyticsTab.tsx +++ /dev/null @@ -1,279 +0,0 @@ -import React, { useState } from 'react'; -import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; -import { useSeller } from '../../../context/SellerContext'; - -export default function AnalyticsTab() { - const { orders, computeRealtimeMetrics } = useSeller(); - const metrics = computeRealtimeMetrics(); - const [period, setPeriod] = useState<'week' | 'month' | 'year'>('week'); - - const weeklyData = [ - { day: 'Mon', sales: 12400 }, - { day: 'Tue', sales: 18500 }, - { day: 'Wed', sales: 15200 }, - { day: 'Thu', sales: 24800 }, - { day: 'Fri', sales: 22100 }, - { day: 'Sat', sales: 34600 }, - { day: 'Sun', sales: 28900 } - ]; - - const monthlyData = [ - { day: 'W1', sales: 62000 }, - { day: 'W2', sales: 78000 }, - { day: 'W3', sales: 85000 }, - { day: 'W4', sales: 94000 } - ]; - - const yearlyData = [ - { day: 'Q1', sales: 240000 }, - { day: 'Q2', sales: 310000 }, - { day: 'Q3', sales: 290000 }, - { day: 'Q4', sales: 420000 } - ]; - - const chartData = period === 'week' ? weeklyData : period === 'month' ? monthlyData : yearlyData; - - const totalRev = metrics.totalSales > 0 ? metrics.totalSales : 124500; - const orderCount = orders.length > 0 ? orders.length : 342; - const avgOrderVal = orderCount > 0 ? Math.round(totalRev / orderCount) : 364; - - return ( -
- {/* Header */} -
-

- Analytics Overview -

-

Track your store's performance and artisan reach.

-
- - {/* Bento Grid KPIs */} -
-
-
-
-
-

Total Revenue

- - account_balance_wallet - -
-

- ₹{totalRev.toLocaleString('en-IN')} -

-

- trending_up - +12% from last month -

-
-
-
- -
-
-
-
-

Orders

- - local_shipping - -
-

- {orderCount} -

-

- trending_up - +5% from last month -

-
-
-
- -
-
-
-
-

Avg. Order Value

- - receipt_long - -
-

- ₹{avgOrderVal.toLocaleString('en-IN')} -

-

- trending_flat - Stable -

-
-
-
- -
-
-
-
-

Conversion Rate

- - insights - -
-

- 3.2% -

-

- trending_up - +0.4% from last month -

-
-
-
-
- - {/* Main Charts & Categories Area */} -
- {/* Sales Over Time Chart */} -
-
-
-
-

Sales Over Time

-

Revenue trends across selected interval

-
-
- - - -
-
- -
- - - - - `₹${v / 1000}k`} /> - [`₹${Number(value).toLocaleString('en-IN')}`, 'Sales']} /> - - - -
-
-
- - {/* Top Categories */} -
-
-

Top Categories

-

Share of total catalog sales

- -
-
-
- Handloom Textiles - 45% -
- 45% -
- -
-
- Pottery & Ceramics - 30% -
- 30% -
- -
-
- Wood Carving - 15% -
- 15% -
- -
-
- Brass Sculptures & Jewelry - 10% -
- 10% -
-
-
-
-
- - {/* Demographics & Top Regions */} -
-
-
-

Customer Demographics

-

Domestic vs global customer distribution

-
-
-
- 68% -
-
-
-
-
- Domestic (India) — 68% -
-
-
- International — 32% -
-
-
-
-
- -
-
-

Top Artisan Regions

-

Where your crafts are loved most

-
- {[ - { city: 'Varanasi', state: 'Uttar Pradesh', share: '32%', badge: 'GI Textiles' }, - { city: 'Kanchipuram', state: 'Tamil Nadu', share: '24%', badge: 'Silk Weaving' }, - { city: 'Jaipur', state: 'Rajasthan', share: '18%', badge: 'Blue Pottery' }, - { city: 'Bastar', state: 'Chhattisgarh', share: '14%', badge: 'Dhokra Art' }, - { city: 'Bengaluru', state: 'Karnataka', share: '12%', badge: 'Craft Lovers' }, - ].map(reg => ( -
-
-
- {reg.city} - {reg.share} -
-

{reg.state} • {reg.badge}

-
-
- ))} -
-
-
-
-
- ); -} diff --git a/src/components/dashboard/tabs/OrdersTab.tsx b/src/components/dashboard/tabs/OrdersTab.tsx deleted file mode 100644 index 1c06a23..0000000 --- a/src/components/dashboard/tabs/OrdersTab.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../../context/SellerContext'; - -type TabFilter = 'All Orders' | 'Pending' | 'Shipped' | 'Completed'; - -const TAB_STATUSES: Record = { - 'All Orders': [], - 'Pending': ['Pending Acceptance'], - 'Shipped': ['Ready to Ship', 'Shipped'], - 'Completed': ['Delivered', 'Cancelled', 'Rejected'], -}; - -const STATUS_TAG: Record = { - 'Pending Acceptance': 'is-warning is-light', - 'Ready to Ship': 'is-primary is-light', - 'Shipped': 'is-info is-light', - 'Delivered': 'is-success is-light', - 'Cancelled': 'is-danger is-light', - 'Rejected': 'is-danger is-light', -}; - -export default function OrdersTab() { - const { orders, handleAcceptOrder, handleRejectOrder, setSelectedOrderDetail } = useSeller(); - const [activeTab, setActiveTab] = useState('All Orders'); - - const [searchTerm, setSearchTerm] = useState(''); - - const filteredOrders = orders.filter((o: any) => { - const matchesTab = TAB_STATUSES[activeTab].length === 0 || TAB_STATUSES[activeTab].includes(o.status); - const matchesSearch = !searchTerm || - String(o.id).toLowerCase().includes(searchTerm.toLowerCase()) || - String(o.customer || '').toLowerCase().includes(searchTerm.toLowerCase()) || - String(o.item || '').toLowerCase().includes(searchTerm.toLowerCase()); - return matchesTab && matchesSearch; - }); - - const getStatusCount = (tab: TabFilter) => { - if (tab === 'All Orders') return orders.length; - return orders.filter((o: any) => TAB_STATUSES[tab].includes(o.status)).length; - }; - - const getInitials = (name: string) => { - if (!name) return '—'; - return name.split(' ').map(p => p[0]).join('').toUpperCase().slice(0, 2); - }; - - const formatDate = (dateStr: string) => { - const d = new Date(dateStr); - if (isNaN(d.getTime())) return dateStr; - return d.toLocaleDateString('en-IN', { day: '2-digit', month: 'short', year: 'numeric' }); - }; - - const handleExportCsv = () => { - const header = 'Order ID,Date,Customer,Item,Qty,Status,Total\n'; - const rows = orders.map((o: any) => - `${o.id},${o.date},${o.customer},${o.item},${o.quantity},${o.status},${o.total}` - ).join('\n'); - const blob = new Blob([header + rows], { type: 'text/csv;charset=utf-8;' }); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.setAttribute('href', url); - link.setAttribute('download', 'orders_export.csv'); - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - }; - - return ( -
-
-
-

Orders

-

View, track, and manage all your customer orders.

-
- -
- -
- {/* Search & Tabs Controls */} -
-
- -
- -
- setSearchTerm(e.target.value)} - style={{ borderColor: '#D9C5B2', borderRadius: '6px' }} - /> - - search - -
-
- - {filteredOrders.length === 0 ? ( -
- inventory_2 -

No orders found in this category.

-
- ) : ( -
- - - - - - - - - - - - - - {filteredOrders.map((order: any) => ( - - - - - - - - - - ))} - -
Order IDDateCustomerItemStatusTotalAction
#{order.id}{formatDate(order.date)} -
-
- {getInitials(order.customer)} -
- {order.customer || '—'} -
-
{order.item || '—'} - - {order.status} - - ₹{Number(order.total).toFixed(2)} -
- - {order.status === 'Pending Acceptance' && ( - <> - - - - )} -
-
-
- )} -
-
- ); -} diff --git a/src/components/dashboard/tabs/OverviewTab.tsx b/src/components/dashboard/tabs/OverviewTab.tsx deleted file mode 100644 index e96a1c3..0000000 --- a/src/components/dashboard/tabs/OverviewTab.tsx +++ /dev/null @@ -1,241 +0,0 @@ -import React, { useMemo } from 'react'; -import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; -import { useSeller } from '../../../context/SellerContext'; - -const MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - -export default function OverviewTab() { - const { orders, products, computeRealtimeMetrics, storeName, setDashTab } = useSeller(); - const metrics = computeRealtimeMetrics(); - - // Group orders by month for chart - const chartData = useMemo(() => { - const monthlySales: Record = {}; - orders - .filter((o: any) => o.status !== 'Cancelled' && o.status !== 'Rejected') - .forEach((o: any) => { - const date = new Date(o.date); - if (!isNaN(date.getTime())) { - const month = date.getMonth(); - monthlySales[month] = (monthlySales[month] || 0) + Number(o.total); - } - }); - - // Show last 6 months - const currentMonth = new Date().getMonth(); - const months = []; - for (let i = 5; i >= 0; i--) { - const idx = (currentMonth - i + 12) % 12; - months.push({ name: MONTH_NAMES[idx], sales: monthlySales[idx] || 0 }); - } - return months; - }, [orders]); - - const activeOrderCount = orders.filter((o: any) => - !['Cancelled', 'Rejected', 'Delivered'].includes(o.status) - ).length; - - const recentActivity = useMemo(() => { - return [...orders] - .sort((a: any, b: any) => new Date(b.date).getTime() - new Date(a.date).getTime()) - .slice(0, 5); - }, [orders]); - - const formatDate = (dateStr: string) => { - const d = new Date(dateStr); - if (isNaN(d.getTime())) return dateStr; - return d.toLocaleDateString('en-IN', { day: '2-digit', month: 'short', year: 'numeric' }); - }; - - const statusTagClass = (status: string) => { - switch (status) { - case 'Delivered': return 'is-success is-light'; - case 'Shipped': return 'is-info is-light'; - case 'Ready to Ship': return 'is-primary is-light'; - case 'Pending Acceptance': return 'is-warning is-light'; - case 'Rejected': - case 'Cancelled': return 'is-danger is-light'; - default: return 'is-light'; - } - }; - - const handleDownloadCsv = () => { - const header = 'Month,Sales\n'; - const rows = chartData.map(row => `${row.name},${row.sales}`).join('\n'); - const blob = new Blob([header + rows], { type: 'text/csv;charset=utf-8;' }); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.setAttribute('href', url); - link.setAttribute('download', 'sales_report.csv'); - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - }; - - return ( -
- {/* Welcome Banner matching Stitch Fixed Seller Dashboard */} -
-
-

- Welcome back, Artisan! -

-

Your store is looking great. Here is what's happening today.

-
- -
- -
- {/* Main 8-col Stats & Performance Section */} -
- {/* 3 Stats Overview Cards */} -
-
-
-

- Total Sales (₹) -

-

- {orders.length === 0 ? '₹ 42,500' : `₹${metrics.totalSales.toLocaleString('en-IN', { minimumFractionDigits: 2 })}`} -

-
-
-
- -
-
-

- Active Orders -

-

- {orders.length === 0 ? '14' : activeOrderCount} -

-
-
-
- -
-
-

- Catalog Products -

-

- {products.length === 0 ? '3' : products.length} -

-
-
-
-
- - {/* Sales Chart */} -
-

- Sales Performance (Last 6 Months) -

-
- - - - - - - - - - - `₹${v}`} /> - [`₹${Number(value).toFixed(2)}`, 'Sales']} /> - - - -
-
- - {/* Recent Orders Table */} -
-
-

- Recent Orders -

- setDashTab('orders')} - > - View All - arrow_forward - -
-
- - - - - - - - - - - - - {recentActivity.map((order: any) => ( - - - - - - - - - ))} - -
Order IDDateCustomerItemAmountStatus
#{order.id}{formatDate(order.date)}{order.customer || '—'}{order.item || '—'}₹{Number(order.total).toFixed(2)}{order.status}
-
-
-
- - {/* Right 4-col Store Live Preview Card */} -
-
-
-
-

Live Preview

- Live Store -
-
-
- Store Preview Banner -
-
-

- {storeName || 'Tradhox Artisan Co.'} -

-

Your authentic maker storefront is live and serving conscious customers worldwide.

-
-
- -
-
-
-
-
- ); -} diff --git a/src/components/dashboard/tabs/PaymentsTab.tsx b/src/components/dashboard/tabs/PaymentsTab.tsx deleted file mode 100644 index 61aaa8a..0000000 --- a/src/components/dashboard/tabs/PaymentsTab.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../../context/SellerContext'; - -export default function PaymentsTab() { - const { wallet, withdrawAmount, setWithdrawAmount, handleWithdrawRequest } = useSeller(); - - const outstanding = Number(wallet.outstanding || 0); - const withdrawn = Number(wallet.withdrawn || 0); - const transactions = wallet.transactions || wallet.history || []; - - // Pending = orders delivered but not yet in wallet (approximated as 0 unless backend provides it) - const pendingClearance = Number(wallet.pending_clearance || 0); - - const [showWithdrawModal, setShowWithdrawModal] = useState(false); - - const formatDate = (dateStr: string) => { - const d = new Date(dateStr); - if (isNaN(d.getTime())) return dateStr; - return d.toLocaleDateString('en-IN', { day: '2-digit', month: 'short', year: 'numeric' }); - }; - - const handleWithdraw = async () => { - await handleWithdrawRequest(); - setShowWithdrawModal(false); - setWithdrawAmount(''); - }; - - return ( -
-

- Payments & Earnings -

- -
-
-
-
-

Available for Payout

- Active Balance -
-

- ₹{outstanding.toLocaleString('en-IN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} -

-
-
-

Pending Clearance

-

₹{pendingClearance > 0 ? pendingClearance.toLocaleString('en-IN') : '12,450.00'}

-
-
-

Next Payout Date

-

Every Monday (Auto)

-
-
- -
-
- - {/* Verified Bank Account Card */} -
-
-
-
-

Verified Bank

- account_balance -
-
-
-

Bank Name

-

State Bank of India

-
-
-

Account Number

-

•••• •••• 4589

-
-
- - check_circle - Verified & Active - -
-
-
-

Payouts settle automatically to your verified bank within 48 hours.

-
-
-
-
-
- - {/* Withdraw Modal */} - {showWithdrawModal && ( -
-
setShowWithdrawModal(false)} /> -
-
-

Withdraw Funds

-
-
-

- Available: ₹{outstanding.toLocaleString('en-IN', { minimumFractionDigits: 2 })} -

-
- -
- setWithdrawAmount(e.target.value)} - /> -
-
-
-
- - -
-
-
- )} - -
-

Transaction History

- {transactions.length === 0 ? ( -
- receipt_long -

No transactions yet.

-
- ) : ( - - - - - - - - - - - {transactions.map((tx: any) => { - const amount = Number(tx.amount || 0); - const isDebit = tx.type === 'withdrawal' || amount < 0; - return ( - - - - - - - ); - })} - -
DateDescriptionAmountStatus
{formatDate(tx.date)}{tx.description || (isDebit ? 'Payout Withdrawal' : 'Order Revenue')} - {isDebit ? '-' : '+'}₹{Math.abs(amount).toFixed(2)} - - - {tx.status || 'Pending'} - -
- )} -
-
- ); -} diff --git a/src/components/dashboard/tabs/ProductsTab.tsx b/src/components/dashboard/tabs/ProductsTab.tsx deleted file mode 100644 index fbad148..0000000 --- a/src/components/dashboard/tabs/ProductsTab.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../../context/SellerContext'; - -export default function ProductsTab() { - const { - setDashTab, - bulkCsvFile, setBulkCsvFile, - bulkZipFile, setBulkZipFile, - handleBulkUploadSubmit, - isParsingBulk, - bulkLog, - uploadDocument, - products, - handleEditClick, - handleDeleteProduct - } = useSeller(); - - const [showBulkUploadModal, setShowBulkUploadModal] = useState(false); - - const [categoryFilter, setCategoryFilter] = useState('All Categories'); - const [stockFilter, setStockFilter] = useState('All Status'); - - const filteredProducts = products.filter((item: any) => { - const matchesCat = categoryFilter === 'All Categories' || item.category === categoryFilter; - const matchesStock = stockFilter === 'All Status' || - (stockFilter === 'In Stock' && item.stock > 5) || - (stockFilter === 'Low Stock' && item.stock > 0 && item.stock <= 5) || - (stockFilter === 'Out of Stock' && item.stock === 0); - return matchesCat && matchesStock; - }); - - return ( -
-
-
-

Products

-

Manage your artisanal inventory and listings.

-
-
- - -
-
- - {/* Category & Status Filter Controls */} -
-
- -
-
- -
-
- -
- {filteredProducts.map((item: any) => { - const isOutOfStock = item.stock === 0; - const isLowStock = item.stock > 0 && item.stock <= 5; - const statusDot = isOutOfStock ? '#ba1a1a' : isLowStock ? '#d9822b' : '#15803d'; - const statusLabel = isOutOfStock ? 'Out of Stock' : isLowStock ? `Low Stock (${item.stock})` : `In Stock (${item.stock})`; - - return ( -
-
-
-
- {item.image ? ( - {item.title} - ) : ( -
- image -
- )} -
-
- - {statusLabel} -
-
-
-

- {item.category ? `${item.category} • GI AUTHENTIC` : 'ARTISANAL CRAFT'} -

-

- {item.title} -

-

- ₹{Number(item.price).toFixed(2)} -

-
- -
-
- ); - })} - {filteredProducts.length === 0 && ( -
-
-

No products match your current filters. Click "Add Product" or "Bulk Upload" to manage listings.

-
-
- )} -
- -
-
setShowBulkUploadModal(false)}>
-
-
-

Bulk Upload Products

- -
-
-
-
- -
- setBulkCsvFile(e.target.files?.[0] || null)} required /> -
-
-
- -
- setBulkZipFile(e.target.files?.[0] || null)} /> -
-
-
- -
- { - if (e.target.files?.[0]) { - uploadDocument(e.target.files[0], 'document').then(() => { - alert(`Document uploaded successfully`); - }).catch(() => { - alert(`Failed to upload document`); - }); - } - }} /> -
-
- {bulkLog.length > 0 && ( -
-
    - {bulkLog.map((log: string, i: number) =>
  • {log}
  • )} -
-
- )} -
-
-
- - -
-
-
-
- ); -} diff --git a/src/components/dashboard/tabs/SettingsTab.tsx b/src/components/dashboard/tabs/SettingsTab.tsx deleted file mode 100644 index 3dd9c42..0000000 --- a/src/components/dashboard/tabs/SettingsTab.tsx +++ /dev/null @@ -1,410 +0,0 @@ -import React, { useState, useRef } from 'react'; -import { useSeller } from '../../../context/SellerContext'; - -export default function SettingsTab() { - const { - storeName, - setStoreName, - storeSlug, - setStoreSlug, - businessBio, - setBusinessBio, - supportEmail, - setSupportEmail, - supportPhone, - setSupportPhone, - storeLogo, - setStoreLogo, - saveProfileBackend, - uploadDocument - } = useSeller(); - - const [activeTab, setActiveTab] = useState<'profile' | 'account' | 'shipping' | 'notifications'>('profile'); - const [isSaving, setIsSaving] = useState(false); - const [saveSuccess, setSaveSuccess] = useState(false); - const [saveError, setSaveError] = useState(''); - const [fileError, setFileError] = useState(''); - - const logoInputRef = useRef(null); - - // Store initial values to support "Discard Changes" - const initialValuesRef = useRef({ - storeName: storeName || 'Heritage Weaves & Co.', - storeSlug: storeSlug || 'heritage-weaves', - businessBio: businessBio || 'Preserving centuries-old handloom techniques, our family has been creating pure silk and cotton textiles for three generations. Every piece is a testament to the dedication of our master weavers in Varanasi.', - supportEmail: supportEmail || 'hello@heritageweaves.in', - supportPhone: supportPhone || '+91 98765 43210', - storeLogo: storeLogo || null - }); - - const handleDiscard = () => { - setStoreName(initialValuesRef.current.storeName); - if (setStoreSlug) setStoreSlug(initialValuesRef.current.storeSlug); - setBusinessBio(initialValuesRef.current.businessBio); - setSupportEmail(initialValuesRef.current.supportEmail); - setSupportPhone(initialValuesRef.current.supportPhone); - if (setStoreLogo) setStoreLogo(initialValuesRef.current.storeLogo); - setFileError(''); - setSaveError(''); - }; - - const handleLogoFileSelect = async (e: React.ChangeEvent) => { - const file = e.target.files?.[0]; - if (!file) return; - - setFileError(''); - // 800KB max size - if (file.size > 800 * 1024) { - setFileError('File size exceeds maximum allowed size of 800KB.'); - return; - } - - const reader = new FileReader(); - reader.onload = () => { - if (setStoreLogo) { - setStoreLogo(reader.result as string); - } - }; - reader.readAsDataURL(file); - - try { - if (uploadDocument) { - await uploadDocument(file, 'logo'); - } - } catch { - // Handled gracefully in demo mode - } - }; - - const handleSave = async (e: React.FormEvent) => { - e.preventDefault(); - setIsSaving(true); - setSaveSuccess(false); - setSaveError(''); - - try { - if (saveProfileBackend) { - await saveProfileBackend(true); - } - // Update saved reference - initialValuesRef.current = { - storeName, - storeSlug, - businessBio, - supportEmail, - supportPhone, - storeLogo - }; - setSaveSuccess(true); - setTimeout(() => setSaveSuccess(false), 4000); - } catch (err: any) { - setSaveError(err.message || 'Failed to save settings.'); - } finally { - setIsSaving(false); - } - }; - - const defaultLogo = "https://lh3.googleusercontent.com/aida-public/AB6AXuAILFVWTQhDaG_Vnsodmdq-gvnv7cLSh7Cebas19cjBXnaoRSzC2fK8sKdYgujI37D8ofBs35zZhLfMqXXdHttB6L0dyVH2GC_PEAl-u9XDxmkb4CRYAsXVfQfD8y6nNR40XzDPhz4WoZh-fyIdgEX4dk54o_GhsnE0u7cZYna-QzgjrAUl1-Lp1z2PNjVnMMk3eQYQ79VdQwdGb4wZPmxqYHDqtjc4847zh0LIyylLdHDBlQH_eC29Cw"; - - return ( -
- {/* Hidden File Input for Logo Upload */} - - - {/* Page Header */} -
-

- Settings -

-

- Manage your artisan store profile, account details, and preferences. -

-
- - {/* Notifications / Alerts */} - {saveSuccess && ( -
-
- check_circle - Settings saved successfully! -
- -
- )} - - {saveError && ( -
-
- error - {saveError} -
- -
- )} - - {fileError && ( -
-
- warning - {fileError} -
- -
- )} - - {/* Settings Navigation (In-page Tabs) */} -
- - - - -
- - {/* Tab Content: Store Profile */} - {activeTab === 'profile' && ( -
- {/* Section 1: Basic Information (Asymmetric Layout) */} -
- {/* Left Column: Context */} -
-

- Public Profile -

-

- This information will be displayed publicly on your artisan store page. Make sure your brand reflects the quality of your craft. -

-
- - {/* Right Column: Form Fields in a Clean Card */} -
- {/* Logo Upload */} -
-
logoInputRef.current?.click()} - title="Click to change logo" - > - Store Logo -
- edit -
-
-
- - - JPG, GIF or PNG. Max size of 800K - -
-
- - {/* Form Inputs */} -
- {/* Store Name */} -
- - setStoreName(e.target.value)} - placeholder="Heritage Weaves & Co." - className="bg-white border border-[#dac0c2] rounded px-4 py-3 text-base text-[#1b1c1c] focus:outline-none focus:border-[#4d0218] focus:ring-1 focus:ring-[#4d0218] transition-all" - /> -
- - {/* Store URL */} -
- -
- - tradhox.com/store/ - - setStoreSlug && setStoreSlug(e.target.value)} - placeholder="heritage-weaves" - className="flex-1 min-w-0 bg-white border border-[#dac0c2] rounded-r px-4 py-3 text-base text-[#1b1c1c] focus:outline-none focus:border-[#4d0218] focus:ring-1 focus:ring-[#4d0218] transition-all" - /> -
-
- - {/* Description */} -
- - -
-
-
- -
- -
-
-
-
-
- - - {/* Visit Our Studio Section */} -
-
-
-

Visit Our Studio

-

- Experience the craftsmanship firsthand. Our Varanasi studio is open to visitors who wish to learn about our sourcing process and see exclusive GI-tagged products before they launch online. -

- -
-

Studio Hours

-
    -
  • Monday - Friday: 10:00 - 18:00
  • -
  • Saturday: 10:00 - 14:00
  • -
  • Sunday: Closed
  • -
-
-
- -
-
- map -

Interactive Map view of Varanasi Studio

-
- {/* Dot Pattern Overlay */} -
-
-
-
- - - - ); -} diff --git a/src/components/pages/GrowBusinessPage.tsx b/src/components/pages/GrowBusinessPage.tsx deleted file mode 100644 index ea1e894..0000000 --- a/src/components/pages/GrowBusinessPage.tsx +++ /dev/null @@ -1,464 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../context/SellerContext'; - -export default function GrowBusinessPage() { - const { setCurrentPage } = useSeller(); - const [activeFaq, setActiveFaq] = useState(null); - - const programs = [ - { - id: 'advertising', - category: 'Advertising', - icon: 'fa-circle-play', - tagline: 'Boost your handmade listings through curated spotlights, cultural holiday showcases, and organic discovery priority.', - badges: ['Sponsored placements', 'Boosted listings', 'Category spotlights'], - title: 'Advertising', - desc: 'Expand beyond local bazaars with high-visibility sponsored placements. Your handcrafted items are showcased in seasonal festive edits, cultural spotlight carousels, and priority search keywords tailored for discerning buyers who value genuine provenance.', - img: '/images/grow/advertising.png', - alt: 'Authentic Indian handcrafted products and pottery cataloging studio photography for Tradhox e-commerce promotion' - }, - { - id: 'analytics', - category: 'Analytics', - icon: 'fa-chart-line', - tagline: 'Track real-time craft demand, customer views, regional buyer interest, and seasonal catalog trends effortlessly.', - badges: ['Sales trends', 'Product views', 'Category demand insights'], - title: 'Analytics', - desc: 'Gain complete visibility into your craft shop’s performance with real-time dashboards. Identify which motifs and colorways generate the most buyer interest, discover high-demand geographic regions, and plan inventory cycles before peak festive seasons.', - img: '/images/grow/analytics.png', - alt: 'Smiling Indian craftsman artisan holding a digital tablet displaying sales analytics and craft demand charts in workshop' - }, - { - id: 'account-management', - category: 'Account management', - icon: 'fa-bullseye', - tagline: 'Receive 1-on-1 guidance from regional marketplace managers to optimize catalog photos, storytelling, and compliance.', - badges: ['Dedicated support', 'Listing audits', 'Onboarding help'], - title: 'Account management', - desc: 'Partner with a dedicated craft category specialist who understands handcraft techniques and cultural heritage. Get direct assistance with GI cluster documentation, bilingual listing creation, quality photography guidelines, and marketplace expansion strategy.', - img: '/images/grow/mentorship.png', - alt: 'Artisan and e-commerce marketplace manager reviewing handmade craft catalog strategy on laptop in workshop' - }, - { - id: 'storage-fulfillment', - category: 'Storage & fulfillment', - icon: 'fa-box-archive', - tagline: 'Leverage safe regional warehousing, automated pick & pack, and seamless doorstep logistics to 15,000+ pincodes.', - badges: ['Warehousing', 'Pick & pack', 'Faster pincode coverage'], - title: 'Storage & fulfillment', - desc: 'Protect delicate pottery, handlooms, and lacquerware with climate-controlled regional warehouses. Our fulfillment centers handle tamper-evident packaging, barcode tagging, and door-to-door dispatch to over 15,000 postal codes across India and abroad.', - img: '/images/grow/fulfillment.png', - alt: 'Artisan crafts carefully inspected and packed with eco-friendly protective packaging into shipping boxes' - } - ]; - - const faqs = [ - { - q: "What is Tradhox's AEO (Authorised Economic Operator) support framework?", - a: 'Under the Indian Customs CBIC Authorised Economic Operator framework, Tradhox pre-certifies registered artisan exporters. This enables green-channel customs clearance, priority cargo processing, and paperless international dispatch for Indian handlooms, GI-tagged crafts, and ODOP specialties.' - }, - { - q: 'Are there any upfront fees to join the Advertising or Growth programs?', - a: 'No upfront subscription fees. All programs operate on performance-aligned terms with ₹0 setup cost, zero catalog charges, and full transparency. You only pay standard low commissions once your products sell.' - }, - { - q: 'How does Tradhox help with export customs documentation (IEC, GSTIN)?', - a: 'Our dedicated account managers guide sellers step-by-step through obtaining an Import Export Code (IEC), GSTIN registration or artisan exemption documentation, ensuring seamless compliance without legal complications.' - }, - { - q: 'Can individual master craftspeople join, or is this only for large factories?', - a: 'Tradhox is built specifically for individual craftspeople, independent weaving families, and regional self-help groups. We specialize in empowering micro-enterprises with the same advanced digital tools and logistics network used by major brands.' - } - ]; - - const toggleFaq = (idx: number) => { - setActiveFaq(activeFaq === idx ? null : idx); - }; - - return ( -
- {/* Hidden tags for unit test compatibility */} -
Early Maker Initiative
-
Curated Artisan Showcases
- - {/* Top Breadcrumb */} - - - {/* Hero Section */} -
-
-
- {/* Left Hero Content */} -
-
- ✦ ACCELERATOR & SCALE PROGRAMMES -
- -

- Scale Your Authentic Artisan Brand With Tradhox -

- -

- Unlock tailored marketing campaigns, comprehensive analytics, dedicated maker account mentorship, and streamlined logistics designed specifically for heritage craftsmen, GI-tagged clusters, and regional creators. -

- -
-
- - - - Zero listing fee · Guaranteed direct payouts -
-
- -
-
-
- - Dedicated Maker Mentorship -
-
-
-
- - GI & Cluster Certification Support -
-
-
-
- - 15,000+ Pin Codes Fulfilled -
-
-
-
- - {/* Right Early Maker Onboarding Card */} -
-
-
-
- - SELLER IMPACT OVERVIEW - -

- Early Maker Onboarding -

-
- - Early Access - -
- -
-
-
-
Day 1
-
Direct Storefront Setup
-
-
-
-
-
1-on-1
-
Dedicated Craft Onboarding
-
-
-
-
-
100%
-
Direct Artisan Bank Payouts
-
-
-
-
-
₹0
-
Upfront Setup & Joining Cost
-
-
-
- -
-

- “Be among the first heritage artisan clusters and master makers to launch on Tradhox. Get priority catalog placement and dedicated onboarding support from day one.” -

- - — Tradhox Maker Onboarding Team - -
-
-
-
-
-
- - {/* Programs Overview 4-Column Grid */} -
-
-
-

- PROGRAMS FOR SELLERS -

-

- Specialized Growth Initiatives -

-
- -
- {programs.map((p) => ( -
-
-
- -
-

- {p.title} -

-

- {p.tagline} -

-
-
- ))} -
-
-
- - {/* Alternating Detailed Programs Rows */} -
-
- {programs.map((p, idx) => { - const isReverse = idx % 2 === 1; - return ( -
-
-
-
- {p.alt} -
-
- -
-

- {p.title} -

-

- {p.desc} -

-
- {p.badges.map((b, bi) => ( - - {b} - - ))} -
-
-
-
- ); - })} -
-
- - {/* Commitment to Makers Metrics */} -
-
-

- OUR COMMITMENT TO MAKERS -

-

- Every Advantage Built Into Your Storefront -

- -
-
-
-
- Priority -
-
- Direct Catalog Discovery -
-

- Organic search visibility and curated craft cluster spotlights designed to connect your authentic creations with discerning buyers. -

-
-
- -
-
-
- Verified -
-
- Heritage Provenance -
-

- Build lasting customer loyalty through verified craft authenticity badges and direct maker storytelling. -

-
-
- -
-
-
- Doorstep -
-
- Simplified Dispatch -
-

- Hassle-free doorstep logistics and protective packaging with Product Fulfillment by Tradhox across India. -

-
-
-
-
-
- - {/* Simple Criteria for Authentic Indian Makers */} -
-
-
-

- ELIGIBILITY & ENROLLMENT -

-

- Simple Criteria for Authentic Indian Makers -

-

- Any active artisan, verified cooperative, handloom cluster, or registered ODOP entrepreneur holding an Aadhaar card and active bank account is immediately eligible to enroll. -

-

- Programs can be activated directly from your Tradhox seller dashboard upon phone number verification. Dedicated onboarding specialists are assigned within 24 hours of registration. -

-
-
-
- - {/* AEO & Compliance Insights FAQs */} -
-
-

- AEO & COMPLIANCE INSIGHTS -

-

- Frequently Asked Questions -

- -
- {faqs.map((f, i) => { - const isOpen = activeFaq === i; - return ( -
- - - {isOpen && ( -
-

{f.a}

-
- )} -
- ); - })} -
-
-
- - {/* Bottom Call to Action */} -
-
-
-

- Ready to Expand Your Craft Beyond Borders? -

-

- Join thousands of verified weavers, potters, and regional craftsmen expanding their livelihoods with zero upfront costs, guaranteed payouts, and end-to-end seller support. -

- -
-
-
-
- ); -} diff --git a/src/components/pages/HowItWorksPage.tsx b/src/components/pages/HowItWorksPage.tsx deleted file mode 100644 index d7271a3..0000000 --- a/src/components/pages/HowItWorksPage.tsx +++ /dev/null @@ -1,493 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../context/SellerContext'; - -export default function HowItWorksPage() { - const { setCurrentPage } = useSeller(); - const [activeStep, setActiveStep] = useState(1); - const [activeFaq, setActiveFaq] = useState(null); - - const steps = [ - { - num: 1, - id: 'step-1', - stage: 'Stage One', - title: 'Set up your seller profile', - badge: 'Step 1: Setup', - icon: 'fa-user-check', - visualBadge: '✨ 5-minute Paperless Onboarding', - img: '/images/login-potter.jpg', - shortDesc: 'Register with mobile OTP, PAN & GSTIN (or artisan enrollment ID).', - desc: 'Begin with a simple, guided verification. All you need is your mobile number, bank account details, and GSTIN or enrollment number (if applicable). Our artisan regional liaison team verifies your workshop credibility to protect genuine regional crafts.', - tags: ['Mobile verification', 'GSTIN / UID', 'Bank details'], - docs: 'Aadhaar / Mobile, PAN Card, GSTIN (optional for exempt artisans), Bank IFSC', - time: '3–5 minutes', - perk: 'Dedicated cluster coordinator assistance' - }, - { - num: 2, - id: 'step-2', - stage: 'Stage Two', - title: 'Add your products', - badge: 'Step 2: Products', - icon: 'fa-boxes-stacked', - visualBadge: '🏷️ 0% Listing Fee Guarantee', - img: '/kanchipuram_silk.jpg', - shortDesc: 'Upload crisp photos, mark GI tags, and set your artisan pricing.', - desc: 'Upload high-resolution craft photos from your smartphone or camera. Assign dimensions, available stock, material purity, and your desired craft price. We provide smart pricing recommendations and categorization across GI tags, pottery, handloom, and metal crafts.', - tags: ['Category tagging', 'Fair pricing', 'Photos & details'], - docs: 'Product photos (up to 6), dimensions, craft material specs, maker price', - time: 'Instant live listing', - perk: 'Zero listing fees & free organic catalog indexing' - }, - { - num: 3, - id: 'step-3', - stage: 'Stage Three', - title: "Share your craft's story", - badge: 'Step 3: Story', - icon: 'fa-feather-pointed', - visualBadge: '📜 GI & Heritage Provenance Badges', - img: '/artisan_weaving.jpg', - shortDesc: 'Connect patrons with your generational legacy and workshop roots.', - desc: 'Buyers cherish what makes your work rare. Create an artisan bio, document the generational lineage of your technique, and attach short making-of clips. Each product page features the creator\'s profile, reinforcing authentic provenance and value.', - tags: ['Maker profile', 'Origin & craft heritage', 'Photos/video clips'], - docs: 'Artisan workshop bio, craft heritage photo, cluster location', - time: '1-time profile setup', - perk: 'Featured in Tradhox Heritage Spotlight' - }, - { - num: 4, - id: 'step-4', - stage: 'Stage Four', - title: 'Receive customer orders', - badge: 'Step 4: Orders', - icon: 'fa-bell', - visualBadge: '🔔 Instant Alerts via SMS & WhatsApp', - img: '/images/pricing/fast-settlement.png', - shortDesc: 'Get real-time order alerts via WhatsApp, SMS, and your maker desk.', - desc: 'Get instant SMS and dashboard notifications whenever an admirer purchases your artwork. Review customer requirements, confirm dispatch readiness with one tap, and print pre-generated shipping waybills right from your seller portal.', - tags: ['Instant SMS alerts', '1-click confirm', 'Prepare for pickup'], - docs: 'Digital packing slip & pre-generated courier label', - time: 'Instant order alert', - perk: 'Real-time order tracking & inventory sync' - }, - { - num: 5, - id: 'step-5', - stage: 'Stage Five', - title: 'Pack & ship with Tradhox support', - badge: 'Step 5: Ship', - icon: 'fa-truck-ramp-box', - visualBadge: '🚚 Doorstep Pickup Across India', - img: '/images/clusters/sustainable-jute.png', - shortDesc: 'Safe packaging and doorstep courier collection across 15,000+ pin codes.', - desc: 'Never stress over parcel counters or couriers. We provide sturdy craft-protective packaging guidelines, while our nationwide logistics partner picks up the packaged craft straight from your home or workshop with live GPS tracking.', - tags: ['Product FF by Tradhox', 'Doorstep pickup', '15,000+ pincode delivery'], - docs: 'Affix Tradhox shipping label to exterior carton', - time: 'Doorstep pickup in 24 hrs', - perk: 'Zero courier coordination hassle & full transit insurance' - }, - { - num: 6, - id: 'step-6', - stage: 'Stage Six', - title: 'Guaranteed 7-Day Payouts: Get paid on schedule', - badge: 'Step 6: Payout', - icon: 'fa-indian-rupee-sign', - visualBadge: '💳 7-Day Direct Bank Transfers', - img: '/images/pricing/transparent-weaver.png', - shortDesc: '100% direct bank deposits settled on schedule with zero hidden deductions.', - desc: 'Timely payouts right to your bank account with zero hidden fees. Track sales numbers, view transparent margin statements, and monitor your scheduled settlements every 7 days through your intuitive seller dashboard.', - tags: ['7-day payout cycle', 'Direct bank transfer', 'Transparent earnings dashboard'], - docs: 'Verified bank account (cancelled cheque or passbook copy)', - time: 'Settled every 7 days', - perk: '100% direct bank deposits with transparent split' - } - ]; - - const faqs = [ - { - q: 'Do I need a GST number to sell on Tradhox?', - a: 'If you sell within your state (intra-state) under government handicraft exemption thresholds, an artisan enrollment ID or PAN qualifies. For pan-India inter-state shipping, a GST number is recommended and our cluster support team assists you with rapid registration.' - }, - { - q: 'How does doorstep pickup work from remote artisan villages?', - a: 'We partner with India\'s leading logistics network covering over 15,000 pin codes. If your village cluster has courier accessibility, scheduled pickups happen right at your home workshop.' - }, - { - q: 'When and how do I receive money for my sales?', - a: 'Payouts are transferred directly into your verified bank account via NEFT/IMPS within 7 business days after customer delivery is confirmed.' - }, - { - q: 'Are there any registration or listing fees?', - a: 'None! Tradhox has zero registration fees and zero listing fees. You only pay a transparent marketplace fee (5% for GI-tagged, 8% for standard) when your product actually sells.' - }, - { - q: 'Can I sell made-to-order or customizable handcrafted items?', - a: 'Yes! Tradhox specifically supports artisan lead times. You can mark products as made-to-order and specify the crafting days required before dispatch.' - } - ]; - - const toggleFaq = (idx: number) => { - setActiveFaq(activeFaq === idx ? null : idx); - }; - - const scrollToStep = (stepNum: number, stepId: string) => { - setActiveStep(stepNum); - const el = document.getElementById(stepId); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } - }; - - return ( -
- {/* Top Breadcrumb */} - - - {/* Hero Section */} -
-
- - EMPOWERING INDIAN ARTISANS - -

- How it works — The Seller Journey -

-

- From artisan workshop to nationwide doorstep delivery -

-

- A transparent, step-by-step pathway empowering verified Indian craftsmen and creative masters to showcase heritage artistry, fulfill orders effortlessly, and reach patrons nationwide. -

- -
- - Zero Listing Fees - - • - - Direct 7-Day Bank Payouts - - • - - 15,000+ Pin Codes Pickup - -
- - -
-
- - {/* Sticky Step Navigator Bar */} - - - {/* Alternating 6 Step Deep-Dive Sections */} -
- {steps.map((s, idx) => { - const isEven = idx % 2 === 1; - return ( -
-
- {/* Visual Column */} -
-
- {s.title} -
- {s.visualBadge} -
-
-
- - {/* Content Column */} -
-
- - {s.num} - - - {s.stage} - -
- -

- {s.title} -

- -

- {s.desc} -

- - {/* Metadata Tags */} -
- {s.tags.map((tag, tIdx) => ( - - {tag} - - ))} -
- - {/* Documentation & Perk Badges */} -
-
-

- Documentation: -

-

{s.docs}

-
-
-

- Tradhox Perk: -

-

{s.perk}

-
-
-
-
-
- ); - })} -
- - {/* Doorstep Logistics Spotlight */} -
-
-
-
- - PAN-INDIA COURIER NETWORK - -

- Doorstep Pickup Across 15,000+ Pin Codes -

-

- Whether your craft workshop is located in Pochampally, Rajasthan's desert clusters, or Kashmir's weaving valleys, Tradhox's integrated courier partners provide automated pickup scheduling. -

-
-
    -
  • - Zero Courier Negotiations: Standardized shipping rates calculated automatically for the buyer. -
  • -
  • - Transit Insurance Included: Every fragile ceramic, delicate silk, and intricate woodwork is insured against loss or damage. -
  • -
  • - Pre-Printed Airway Bills: Generate 1-click shipping labels from your mobile phone or laptop. -
  • -
-
-
- -
-
-
-
-

15,000+

-

Serviceable Postal Codes

-
-
-

24–48h

-

Average Pickup Window

-
-
-

100%

-

Transit Damage Protection

-
-
-

₹0

-

Artisan Pickup Surcharge

-
-
-
-
-
-
-
- - {/* FAQs Section */} -
-
-
- - FREQUENTLY ASKED QUESTIONS - -

- Common questions from artisans & sellers -

-

- Everything you need to know about starting your digital seller journey on Tradhox. -

-
- -
- {faqs.map((f, i) => { - const isOpen = activeFaq === i; - return ( -
- - - {isOpen && ( -
-

- {f.a} -

-
- )} -
- ); - })} -
- - {/* Bottom CTA Banner */} -
-

- Ready to start selling your authentic creations? -

-

- Join hundreds of verified masters, cooperatives, and artisanal creators reaching appreciative patrons every day. Zero registration fees, free catalog listing, and guaranteed 7-day bank payouts. -

-
- - -
-
-
-
-
- ); -} diff --git a/src/components/pages/LandingPage.tsx b/src/components/pages/LandingPage.tsx deleted file mode 100644 index 5f6f310..0000000 --- a/src/components/pages/LandingPage.tsx +++ /dev/null @@ -1,664 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../context/SellerContext'; - -export default function LandingPage() { - const { setCurrentPage, setPhone } = useSeller(); - const [phoneDigits, setPhoneDigits] = useState(''); - - const handlePhoneChange = (e: React.ChangeEvent) => { - const raw = e.target.value.replace(/\D/g, '').slice(0, 10); - setPhoneDigits(raw); - }; - - const handleHeroSubmit = (e: React.FormEvent) => { - e.preventDefault(); - if (phoneDigits.length === 10) { - setPhone(phoneDigits); - localStorage.setItem('seller_phone', phoneDigits); - } - setCurrentPage('signup'); - window.scrollTo({ top: 0, behavior: 'smooth' }); - }; - - return ( -
- - -
- {/* BEGIN: HeroSection */} -
-
-
- {/* Hero Left Column */} -
-
- - India's Premier Artisan & Handcrafted Marketplace -
-

- Sell Authentic Handcrafted Products Across India & Worldwide -

-

- Empowering artisans, ODOP clusters, and regional creators with transparent pricing, comprehensive logistics, and zero upfront platform charges. -

- {/* Lead Generation Form */} -
-
-
- - +91 - - -
- -
- {/* Trust Indicators */} -

- ✓ Zero listing fees - • - Fair & transparent - • - Pan-India delivery - • - -

-
-
- {/* Hero Right Column: Montage Image Container */} -
-
- Authentic Indian handcrafted artisan products collective showcase -
-
- - Authentic Handcrafts -
-
-
-
- TRADHOX Collective - From Village Roots to Global Shelves -
-
-
- 100% - Direct payout -
-
-
-
-
-
-
-
-
- {/* END: HeroSection */} - - {/* BEGIN: WhySellWithUsSection */} -
-
- {/* Section Header */} -
-

why sell with us

-
-

- A Marketplace Designed Solely For Maker Success -

-
- {/* 10 Benefit Cards: 2 Rows x 5 Columns static grid */} -
- {/* Card 1 */} -
-
- Zero listing fees -
- - - -
-
-
- Zero listing fees -
-
- - {/* Card 2 */} -
-
- Simple onboarding -
- - - -
-
-
- Simple onboarding -
-
- - {/* Card 3 */} -
-
- Fair & transparent pricing -
- - - -
-
-
- Fair & transparent -
-
- - {/* Card 4 */} -
-
- Showcase craft story -
- - - -
-
-
- Showcase your craft's story -
-
- - {/* Card 5 */} -
-
- Build your brand with us -
- - - -
-
-
- Build your brand with us -
-
- - {/* Card 6 */} -
-
- Product FF by Tradhox -
- - - -
-
-
- Product FF by Tradhox -
-
- - {/* Card 7 */} -
-
- 15,000+ pincode delivery parcel -
- - - - -
-
-
- 15,000+ pincode delivery -
-
- - {/* Card 8 */} -
-
- Mobile app support -
- - - -
-
-
- Mobile app support -
-
- - {/* Card 9 */} -
-
- Listing & pricing support -
- - - -
-
-
- Listing & pricing support -
-
- - {/* Card 10 */} -
-
- Eco-aligned ecosystem -
- - - -
-
-
- Eco-aligned ecosystem -
-
-
-
-
- {/* END: WhySellWithUsSection */} - - {/* BEGIN: HowItWorksSection */} -
-
-
-

Seller Journey

-
-

How It Works: The 6-Step Journey

-

A straightforward, transparent roadmap designed to onboard regional makers and deliver products seamlessly worldwide.

-
- {/* 6 Clean Static Step Cards */} -
- {/* Step 1 */} -
-
-
- 01 - Maker Studio -
-
- - - -
-

1. Create

-

Craft your unique handmade creations with traditional skill, sustainable materials, and artisan pride.

-
-
- Step 1 of 6 -
-
- - {/* Step 2 */} -
-
-
- 02 - Cataloging -
-
- - - -
-

2. List

-

Upload photos, specifications & set fair pricing with our zero listing fee support and catalog assistance.

-
-
- Step 2 of 6 -
-
- - {/* Step 3 */} -
-
-
- 03 - Heritage -
-
- - - -
-

3. Tell your story

-

Showcase the artisan heritage, technique and cultural narrative behind each craft to connect with buyers.

-
-
- Step 3 of 6 -
-
- - {/* Step 4 */} -
-
-
- 04 - Order Placed -
-
- - - -
-

4. Order

-

Receive confirmed domestic and international orders seamlessly through your seller portal with instant alerts.

-
-
- Step 4 of 6 -
-
- - {/* Step 5 */} -
-
-
- 05 - Doorstep Pickup -
-
- - - -
-

5. Shipment

-

Doorstep courier pickup across 15,000+ pincodes with eco-friendly protective packaging and live tracking.

-
-
- Step 5 of 6 -
-
- - {/* Step 6 */} -
-
-
- 06 - Direct Payout -
-
- - - -
-

6. Payment

-

Direct bank payout with 100% transparency, timely settlement cycles within 7 days, and zero hidden deductions.

-
-
- Final Payout Step -
-
-
-
-
- {/* END: HowItWorksSection */} - - {/* BEGIN: CategoryShowcaseSection */} -
-
- {/* Section Header */} -
-
-

- Featured Seller Categories -

-

Specialized spotlights for authentic regional heritage products across India.

-
- {/* Static 3-column Featured Focus Containers */} -
- {/* Box 1: GI-tagged products */} -
-
- Authentic Indian GI-tagged handicrafts flatlay including Bidriware vase, Banarasi silk textile, Channapatna toy craft, and blue pottery - - GI Authenticated - -
-
-

- GI-tagged products -

-

- Protected geographical indication crafts preserving verified regional legacy and genuine master traditions. -

-
- Verified Heritage Crafts - 100% Authentic -
-
-
- - {/* Box 2: ODOP products */} -
-
- Authentic One District One Product (ODOP) showcase - - ODOP Regional Hub - -
-
-

- ODOP products -

-

- Indigenous district-level specialties bringing distinctive indigenous crafts from local villages to direct markets. -

-
- Districts Active - 760+ Districts -
-
-
- - {/* Box 3: Sustainable products */} -
-
- Sustainable & Eco-friendly Products - - Eco-Conscious - -
-
-

- Sustainable products -

-

- Eco-friendly, chemical-free creations crafted with natural fibers, terracotta, bamboo, and circular materials. -

-
- Eco Clusters - 1,850+ Clusters -
-
-
-
-
-
- {/* END: CategoryShowcaseSection */} - - {/* Pricing Anchor Section */} -
-
-
-
-
-
- Transparent Pricing Policy -
-

- 0% Listing Fees. Pay Only When You Sell. -

-

- Unlike standard retail platforms that charge recurring shelf or monthly subscription fees, TRADHOX only deducts a minimal handling commission once an order is verified and completed. -

-
-
- ₹0 - Upfront Platform Cost -
-
- 100% - Transparent Payout -
-
- 7 Days - Fast Bank Settlement -
-
-
-
- -
-
-
-
-
- - {/* BEGIN: FinalCallToAction */} -
-
-

- Ready to take your craft to the world? -

-

- Join thousands of authentic makers reaching nationwide and global customers with zero hassle. -

-
- -
-
-
- {/* END: FinalCallToAction */} -
-
- ); -} diff --git a/src/components/pages/LoginPage.tsx b/src/components/pages/LoginPage.tsx deleted file mode 100644 index ea53cef..0000000 --- a/src/components/pages/LoginPage.tsx +++ /dev/null @@ -1,385 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../context/SellerContext'; - -export default function LoginPage() { - const { - email, setEmail, - password, setPassword, - phone, setPhone, - handleLoginSubmit, - showLoginPass, setShowLoginPass, - setCurrentPage, - } = useSeller(); - - const [activeTab, setActiveTab] = useState<'email' | 'otp'>('email'); - const [otpSent, setOtpSent] = useState(false); - const [enteredOtp, setEnteredOtp] = useState(''); - const [rememberMe, setRememberMe] = useState(true); - - const handleSendOtp = () => { - if (!phone || phone.length < 10) { - alert('Please enter a valid 10-digit mobile number'); - return; - } - setOtpSent(true); - alert(`OTP 123456 sent to +91 ${phone}`); - }; - - const handleOtpLogin = (e: React.FormEvent) => { - e.preventDefault(); - if (!enteredOtp) { - alert('Please enter the OTP'); - return; - } - handleLoginSubmit(e); - }; - - return ( -
-
- {/* Split Card Shell matching Stitch Screen 11 */} -
- {/* Left Column: Inspiring Artisan Showcase & Value Prop */} -
-
- {/* Seller Hub Badge */} -
- - Seller Hub -
- - {/* Title */} -

- Beginning our journey to connect authentic Indian artisans with the world. -

- - {/* Authentic Artisan Photography Showcase */} -
- Indian artisan potter shaping handcrafted pottery -
- - {/* Value Props Checklist */} -
-
-
- -
- Zero registration & zero listing fees -
- -
-
- -
- 100% direct bank payouts on schedule -
- -
-
- -
- Pan-India delivery covering 15,000+ pin codes -
-
-
- - {/* Bottom Note */} -
-

- Protected by 256-bit SSL encryption & AEO certification standards. -

-
-
- - {/* Right Column: Interactive Login Portal */} -
-
- {/* Header Block */} -
-

- Welcome back, Maker -

- - Seller ID Portal - -
-

- Access your dashboard, manage orders, and grow your authentic craft brand. -

- - {/* Login Method Tabs */} -
- - -
- - {/* Form Tab 1: Email & Password */} - {activeTab === 'email' ? ( -
-
- -
- setEmail(e.target.value)} - style={{ borderColor: '#D1CAC7', borderRadius: '8px', height: '42px', fontSize: '0.9rem' }} - /> - - - -
-
- -
-
- - - Forgot password? - -
-
- setPassword(e.target.value)} - style={{ borderColor: '#D1CAC7', borderRadius: '8px', height: '42px', fontSize: '0.9rem' }} - /> - - - - setShowLoginPass(!showLoginPass)} - style={{ pointerEvents: 'all', cursor: 'pointer' }} - > - - -
-
- -
- -
- - -
- ) : ( - /* Form Tab 2: Mobile OTP */ -
-
- -
-

- - IN +91 - -

-

- setPhone(e.target.value)} - style={{ border: '1px solid #D1CAC7', borderRadius: 0, height: '42px', fontSize: '0.9rem' }} - /> -

-

- -

-
-

A 6-digit verification code will be sent via SMS.

-
- - {otpSent && ( -
- -
- setEnteredOtp(e.target.value)} - style={{ border: '1px solid #D1CAC7', borderRadius: '8px', height: '42px', fontSize: '0.9rem' }} - /> - - - -
-
- )} - - -
- )} - - {/* Registration Link */} - -
- - {/* Trust Badges & Compliance Row */} -
- - 100% Secure SSL Bank-Grade Encryption - - • - - ODOP & GI Verified Artisans - -
-
-
-
- - -
- ); -} diff --git a/src/components/pages/OnboardingWizard.tsx b/src/components/pages/OnboardingWizard.tsx deleted file mode 100644 index 4a36c46..0000000 --- a/src/components/pages/OnboardingWizard.tsx +++ /dev/null @@ -1,2137 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../context/SellerContext'; - -export const CRAFT_CATEGORIES_DATA = [ - { id: 'handicrafts', title: 'Handicrafts', emoji: '🏺', desc: 'Dhokra, Bidriware, Wood craft, Terracotta, Sculptures' }, - { id: 'textiles', title: 'Apparel & textiles', altTitle: 'Handloom & Textiles', emoji: '👘', desc: 'Chanderi, Banarasi, Ikat, Pashmina, Jamdani sarees, Handloom & Textiles' }, - { id: 'jewellery', title: 'Jewellery', emoji: '💎', desc: 'Kundan, Meenakari, Silver Filigree, Dokra beads' }, - { id: 'home_decor', title: 'Home & decor', emoji: '🍽️', desc: 'Khurja pottery, Blue pottery, Brassware, Wall hangings' }, - { id: 'gifting', title: 'Gifting', emoji: '🎁', desc: 'Festive sets, handcrafted mementos, corporate craft hampers' }, - { id: 'food_bev', title: 'Food & beverages', emoji: '🍯', desc: 'Organic wild honey, GI teas, traditional spices, jaggery' }, - { id: 'beauty', title: 'Beauty & wellness', emoji: '🌿', desc: 'Ayurvedic formulations, natural oils, handcrafted soaps' }, - { id: 'toys', title: 'Toys & games', emoji: '🪵', desc: 'Channapatna toys, Kondapalli toys, traditional board games' }, - { id: 'stationery', title: 'Stationery & art', emoji: '🎨', desc: 'Madhubani, Warli, Pattachitra, handmade cotton rag paper' }, - { id: 'electronics', title: 'Electronics', emoji: '📱', desc: 'Smart artisan accessories, handcrafted electronic casings' }, - { id: 'furniture', title: 'Furniture', emoji: '🪑', desc: 'Saharanpur carving, cane & bamboo furnishings, teak tables' }, - { id: 'other', title: 'Other', emoji: '📦', desc: 'Specialized regional heritage & handmade artisan crafts' }, -]; - -const INDIAN_STATES = [ - { code: 'AP', name: 'Andhra Pradesh' }, - { code: 'AR', name: 'Arunachal Pradesh' }, - { code: 'AS', name: 'Assam' }, - { code: 'BR', name: 'Bihar' }, - { code: 'CT', name: 'Chhattisgarh' }, - { code: 'DL', name: 'Delhi' }, - { code: 'GA', name: 'Goa' }, - { code: 'GJ', name: 'Gujarat' }, - { code: 'HR', name: 'Haryana' }, - { code: 'HP', name: 'Himachal Pradesh' }, - { code: 'JK', name: 'Jammu and Kashmir' }, - { code: 'JH', name: 'Jharkhand' }, - { code: 'KA', name: 'Karnataka' }, - { code: 'KL', name: 'Kerala' }, - { code: 'MP', name: 'Madhya Pradesh' }, - { code: 'MH', name: 'Maharashtra' }, - { code: 'MN', name: 'Manipur' }, - { code: 'ML', name: 'Meghalaya' }, - { code: 'MZ', name: 'Mizoram' }, - { code: 'NL', name: 'Nagaland' }, - { code: 'OR', name: 'Odisha' }, - { code: 'PB', name: 'Punjab' }, - { code: 'RJ', name: 'Rajasthan' }, - { code: 'SK', name: 'Sikkim' }, - { code: 'TN', name: 'Tamil Nadu' }, - { code: 'TS', name: 'Telangana' }, - { code: 'TR', name: 'Tripura' }, - { code: 'UP', name: 'Uttar Pradesh' }, - { code: 'UK', name: 'Uttarakhand' }, - { code: 'WB', name: 'West Bengal' }, - { code: 'OTHER', name: 'Other State / UT' }, -]; - -export default function OnboardingWizard() { - const { - handleProfileSubmit, - businessType, setBusinessType, - storeSlug, setStoreSlug, - selectedCategories, setSelectedCategories, - storeName, setStoreName, - businessBio, setBusinessBio, - address, setAddress, - gstin, setGstin, - email, setEmail, - phone, setPhone, - onboardingStep, setOnboardingStep, - bankDetails, setBankDetails, - pickupAddress, setPickupAddress, - initialProduct, setInitialProduct, - applicationId, - setCurrentPage, - setIsProfileComplete, - pan, setPan, - altPhone, setAltPhone, - matchReg, setMatchReg, - policyAccepted, setPolicyAccepted - } = useSeller(); - - const [localStep, setLocalStep] = useState(onboardingStep || 1); - const [isSubmitted, setIsSubmitted] = useState(false); - - // Step 2 Enrolment ID states (Phase 3) - const [step2Mode, setStep2Mode] = useState<'enrolment' | 'gst'>('enrolment'); - const [enrolmentId, setEnrolmentId] = useState(''); - const [enrolmentVerified, setEnrolmentVerified] = useState(false); - - // Local form helper states - const [sameAsBusinessAddress, setSameAsBusinessAddress] = useState(false); - const [pickupContact, setPickupContact] = useState(pickupAddress.contactPhone || '9876543210'); - const [pickupSlot, setPickupSlot] = useState('anytime'); - const [isAccessible, setIsAccessible] = useState(true); - - // Bank extra states - const [confirmAccNum, setConfirmAccNum] = useState(bankDetails.accountNumber || ''); - const [chequeFileName, setChequeFileName] = useState(''); - - // Product extra states - const [prodSubcategory, setProdSubcategory] = useState('Jute & Cane Utility Crafts'); - const [prodColor, setProdColor] = useState('Natural beige'); - const [prodMaterial, setProdMaterial] = useState('Jute, cotton'); - const [prodBrand, setProdBrand] = useState('Artisan Collective'); - const [prodWarranty, setProdWarranty] = useState('No warranty / 6 months'); - const [manufacturerInfo, setManufacturerInfo] = useState(''); - const [prodSpecification, setProdSpecification] = useState(''); - const [prodShowcase, setProdShowcase] = useState(''); - const [shippingWeight, setShippingWeight] = useState('0.5'); - const [isMadeToOrder, setIsMadeToOrder] = useState(true); - - // Store Profile extra states - const [storeTagline, setStoreTagline] = useState(''); - const [certificateFileName, setCertificateFileName] = useState(''); - const [agreeTermsFinal, setAgreeTermsFinal] = useState(true); - - const stepLabels = [ - { num: 1, label: 'Mobile', subtitle: 'create your seller account' }, - { num: 2, label: 'Business & GST', subtitle: 'no GSTIN? you can still register · see options in this step' }, - { num: 3, label: 'Pickup address', subtitle: 'this is where our courier partners will pick up your orders' }, - { num: 4, label: 'Bank details', subtitle: "we'll deposit your order payouts to this account" }, - { num: 5, label: 'Categories', subtitle: 'pick what you sell · you can add more categories later' }, - { num: 6, label: 'Products', subtitle: 'add your first product · you can add the rest after you go live' }, - { num: 7, label: 'Store profile', subtitle: 'last step · this is what buyers will see on your storefront' }, - ]; - - const handleCategoryToggle = (categoryTitle: string) => { - if (selectedCategories.includes(categoryTitle)) { - setSelectedCategories(selectedCategories.filter((c: string) => c !== categoryTitle)); - } else { - setSelectedCategories([...selectedCategories, categoryTitle]); - } - }; - - const removeCategory = (categoryTitle: string) => { - setSelectedCategories(selectedCategories.filter((c: string) => c !== categoryTitle)); - }; - - const goToStep = (step: number) => { - setLocalStep(step); - if (setOnboardingStep) setOnboardingStep(step); - window.scrollTo({ top: 0, behavior: 'smooth' }); - }; - - const handleNext = (e?: React.FormEvent) => { - if (e) e.preventDefault(); - if (localStep < 7) { - goToStep(localStep + 1); - } else { - if (handleProfileSubmit) { - handleProfileSubmit(e); - } - setIsSubmitted(true); - window.scrollTo({ top: 0, behavior: 'smooth' }); - } - }; - - const handlePrev = () => { - if (localStep > 1) { - goToStep(localStep - 1); - } - }; - - // If application is submitted, display Screen: Application Submitted (Bulma Faithful) - if (isSubmitted) { - const finalAppId = applicationId || 'TRDX-284719'; - return ( -
-
- {/* Breadcrumb */} - - -
- {/* Success Icon */} -
- -
-

- Application submitted! -

-

- Thanks for registering · we're reviewing your details -

- - {/* Info Summary Box */} -
-
-
-
- Maker's ID -
-
- {finalAppId} -
-
-
-
- Estimated Review Time -
-
- 24–48 hours -
-
-
-
- - {/* Timeline: What happens next */} -
-

- What happens next -

-
What happens next:
-
    -
  1. -
    - 1 -
    -
    -
    We verify your documents
    -
    GST, PAN & bank details are checked by our team
    -
    -
  2. - -
  3. -
    - 2 -
    -
    -
    You'll get an approval email
    -
    sent to your registered email & SMS to your mobile
    -
    -
  4. - -
  5. -
    - 3 -
    -
    -
    Your storefront goes live
    -
    start receiving orders once approved
    -
    -
  6. -
-
- - {/* While You Wait Box */} -
-
- While you wait -
-
- add more products & explore seller resources from your dashboard -
-
- - {/* Action Buttons */} -
- - -
- - -
- - {/* Trust Badges Strip */} -
-
-
-
- -
- Secure & encrypted -
-
-
- -
- Track status anytime in dashboard -
-
-
- -
- Dedicated onboarding support -
-
-
-
-
- ); - } - - const stepMeta = stepLabels[localStep - 1] || stepLabels[0]; - - return ( -
-
- - {/* Hidden text for unit test compatibility */} -
Welcome to Tradhox
- - {/* Top Responsive Breadcrumb Navigation */} - - - {/* Step-Specific Title & Subtext Banner matching wireframe specs */} -
- {localStep === 1 && ( -
-

- Join India’s Dedicated Artisan Marketplace -

-

- Connect your generational craft with conscious patrons across 15,000+ pin codes. Complete a simple 7-step verification to open your verified digital storefront. -

- - no listing fee • no registration fee • get live in minutes - -
- )} - - {localStep === 2 && ( -
-

- Tell Us About Your Craft Business -

-

- {step2Mode === 'enrolment' - ? 'With an Enrolment ID, you can sell authentic handcrafted products within Tamil Nadu without a GST registration. Takes just 2 minutes to verify your craft enterprise.' - : 'Join thousands of authentic craft creators bringing generational Indian artistry to conscious buyers nationwide. Takes just 2 minutes to verify your enterprise.'} -

-
- - - {step2Mode === 'enrolment' - ? "You're eligible to start selling without a full GST registration" - : "No GSTIN? You can still register · See options in this step"} - -
-
- )} - - {localStep === 3 && ( -
-

- Where Should We Collect Your Craft Orders? -

-

- Our trusted courier partners provide free doorstep pickup directly from your workshop, studio, or home across 15,000+ pin codes. No need to visit courier hubs. -

-
- - this is where our courier partners will pick up your orders -
-
- )} - - {localStep === 4 && ( -
-

- Direct, Transparent Payouts to Your Bank Account -

-

- We transfer 100% of your earnings every 7 days directly to your verified bank account with zero deductions or hidden transfer fees. -

-
- - Verified settlement account • We'll deposit your order payouts here -
-
- )} - - {localStep === 5 && ( -
-

- What do you sell? -

-

- step 5 of 7 · select all categories that apply -

-
- )} - - {localStep === 6 && ( -
-

- List Your First Masterpiece -

-

- Begin with a single handcrafted creation. You can expand and curate your entire artisan catalog anytime after going live. -

-
- )} - - {localStep === 7 && ( -
-

- Build your brand identity and showcase your craft to patrons worldwide. -

-

- Last step before going live · Tell buyers the story behind your generational craftsmanship, upload your workshop banner, and create your unique storefront identity. -

-
- )} -
- - {/* 7-Step Horizontal Progress Stepper with Horizontal Scroll Wrapper */} -
-
-
-
-
- -
- {stepLabels.map((s) => { - const isCompleted = s.num < localStep; - const isActive = s.num === localStep; - return ( -
goToStep(s.num)} - > -
- {isCompleted ? : s.num} -
- - {s.label} - -
- ); - })} -
-
-
-
- - {/* Main Step Form Container Card */} -
- - {/* STEP 1: Mobile & Seller Account */} - {localStep === 1 && ( -
-
-

- Create your seller account -

-

- step 1 of 7 · takes about 2 minutes -

-
- - {/* Text for test: Step 1: Account */} -
Step 1: Account
- - {/* Mobile Number Field */} -
- -
- - +91 - - setPhone(e.target.value)} - className="flex-1 w-full px-3.5 py-2.5 text-sm border-0 focus:ring-0 outline-none placeholder-gray-400 bg-white" - /> -
-
- - {/* Send OTP Button */} -
- -
- - {/* OTP Input Field */} -
- - -
- - {/* Terms Checkbox */} -
- -
- - {/* Continue Button */} - - - -
- )} - - {/* STEP 2: Business & GST Details / Phase 3 Enrolment ID Flow */} - {localStep === 2 && ( -
- {/* Text for test: Step 2: Business & GST */} -
Step 2: Business & GST
- - {step2Mode === 'enrolment' ? ( - /* Phase 3 Design: Get Your Enrolment ID (Form Card) */ -
- {/* Top burgundy 5px accent bar */} -
- -
- {/* Card Header */} -
-
- - - - - - -
-
-

- Your Enrolment ID -

-

- Sell online without a mandatory GST registration -

-
-
- - {/* Descriptive Intro */} -

- Under government norms for e-commerce, small artisans and handmade makers can generate a unique Enrolment ID to sell without a GSTIN. We’ll apply on your behalf using four simple details: -

- - {/* 4 Requirements Grid */} -
-
- - 1 - -
-
PAN number
-
Individual
-
-
- -
- - 2 - -
-
Full name
-
As printed on PAN
-
-
- -
- - 3 - -
-
Email ID
-
For verification link
-
-
- -
- - 4 - -
-
Full address
-
Workshop or residence
-
-
-
- - {/* Existing Enrolment ID Option Box */} -
-
- - Already have an Enrolment ID? -
-
- { - setEnrolmentId(e.target.value.toUpperCase()); - setEnrolmentVerified(false); - }} - className="flex-1 h-[38px] border border-[#D1CAC7] rounded-md px-3 text-xs outline-none focus:border-[#1B2667] focus:ring-1 focus:ring-[#1B2667]/20 transition bg-white" - /> - -
- {enrolmentVerified && ( -
- - Enrolment ID verified successfully! Ready to sell. -
- )} -
- - {/* Action Buttons: Back to GST Form & Apply for Enrolment ID */} -
- - -
- - {/* Direct GST Portal Link Button */} - -
-
- ) : ( - /* Standard GST Form View */ -
- {/* Switch to Enrolment ID Banner */} -
-
- - - No GSTIN? Sell with an Enrolment ID - -
- -
- -
-

- Business & GST details -

-

- step 2 of 7 · tell us about your business -

-
- - {/* GSTIN Field */} -
- - setGstin(e.target.value.toUpperCase())} - className="w-full px-3.5 py-2.5 text-sm uppercase rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* PAN Field */} -
- - setPan(e.target.value.toUpperCase())} - className="w-full px-3.5 py-2.5 text-sm uppercase rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* Business Type Selection */} -
- -
- -
- -
-
-
- - {/* Legal Name */} -
- - setStoreName(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* Business Email */} -
- - setEmail(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* Alternate Phone */} -
- -
- - +91 - - setAltPhone(e.target.value)} - className="flex-1 w-full px-3.5 py-2.5 text-sm border-0 focus:ring-0 outline-none placeholder-gray-400 bg-white" - /> -
-
- - {/* Action Buttons */} -
- - -
-
- )} -
- )} - - {/* STEP 3: Pickup Address (Phase 2 Aligned) */} - {localStep === 3 && ( -
- {/* Internal Card Header */} -
-

- Pickup address -

-

- Step 3 of 7 · where should we collect your orders -

-
- - {/* Text for test: Step 3: Pickup Address */} -
Step 3: Pickup Address
- -
{ e.preventDefault(); handleNext(); }}> - {/* Checkbox: Same as business registration address */} -
- -
- - {/* Address Line 1 */} -
- - setPickupAddress({ ...pickupAddress, buildingName: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* Address Line 2 (Optional) */} -
- - setPickupAddress({ ...pickupAddress, street: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* 2-Column: City & State */} -
-
- - setPickupAddress({ ...pickupAddress, city: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- -
- -
- -
-
-
-
- - {/* 2-Column: Pincode & Landmark */} -
-
- - setPickupAddress({ ...pickupAddress, pincode: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - setPickupAddress({ ...pickupAddress, landmark: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - {/* Pickup Contact Number with +91 Addon */} -
- -
- - +91 - - setPickupContact(e.target.value)} - className="flex-1 w-full px-3.5 py-2.5 text-sm border-0 focus:ring-0 outline-none placeholder-gray-400 bg-white" - /> -
-
- - {/* Pickup Slot Preference */} -
- -
- -
- -
-
-
- - {/* Serviceability Checkbox */} -
- -
- - {/* Actions: Back & Continue */} -
- - -
-
-
- )} - - {/* STEP 4: Bank Details (Phase 2 Aligned) */} - {localStep === 4 && ( -
- {/* Internal Card Header */} -
-

- Bank details -

-

- STEP 4 OF 7 · WHERE SHOULD WE SEND YOUR PAYOUTS -

-
- - {/* Text for test: Step 4: Bank Details */} -
Step 4: Bank Details
- -
{ e.preventDefault(); handleNext(); }}> - {/* 1. Account Holder Name */} -
- - setBankDetails({ ...bankDetails, accountHolderName: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* 2. Account Number */} -
- - setBankDetails({ ...bankDetails, accountNumber: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* 3. Confirm Account Number */} -
- - { - setConfirmAccNum(e.target.value); - setBankDetails({ ...bankDetails, confirmAccountNumber: e.target.value }); - }} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* 4. IFSC Code with Helper */} -
- - { - const code = e.target.value.toUpperCase(); - const bName = code.startsWith('SBIN') ? 'State Bank of India' : code.startsWith('HDFC') ? 'HDFC Bank' : code.startsWith('ICIC') ? 'ICICI Bank' : (bankDetails.bankName || 'State Bank of India'); - setBankDetails({ - ...bankDetails, - ifscCode: code, - bankName: bName, - branchName: 'Artisan Commercial Hub Branch' - }); - }} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white uppercase" - /> - -
- - {/* 5. Two Columns: Bank Name & Branch */} -
-
- - -
-
- - -
-
- - {/* 6. Account Type Dropdown */} -
- -
- -
- -
-
-
- - {/* 7. Upload Cancelled Cheque / Passbook */} -
- - { - const f = e.target.files?.[0]; - if (f) setChequeFileName(f.name); - }} - /> -
document.getElementById('file-upload-input')?.click()} - onKeyDown={(e) => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - document.getElementById('file-upload-input')?.click(); - } - }} - className="border-2 border-dashed border-gray-300 hover:border-[#1B2667] rounded-xl p-6 text-center bg-[#FAF8F5] hover:bg-[#F4F1EA] transition-all cursor-pointer flex flex-col items-center justify-center gap-2 group" - > -
- -
-
-

- drag & drop or click to upload -

-

PDF, JPG (Max. 5MB)

-
- {chequeFileName && ( -

- {chequeFileName} -

- )} -
-
- - {/* 8. Actions: Back & Continue */} -
- - -
-
-
- )} - - {/* STEP 5: Categories (Phase 2 Aligned) */} - {localStep === 5 && ( -
- {/* Text for test: Step 5: Categories */} -
Step 5: Categories
- - {/* Form Header */} -
-

- What do you sell? -

-

- step 5 of 7 · select all categories that apply -

-
- - {/* Section Label */} -
- - Select categories - - - Multiple selections allowed - -
- - {/* 12 CATEGORY GRID TILES */} -
- {CRAFT_CATEGORIES_DATA.map((cat) => { - const isSelected = selectedCategories.includes(cat.title) || selectedCategories.includes(cat.altTitle || ''); - return ( - - ); - })} -
- - {/* SELECTED TAGS SUMMARY */} -
-
- SELECTED ({selectedCategories.length}) -
-
- {selectedCategories.length === 0 ? ( - - No categories chosen yet. Please pick at least one. - - ) : ( - selectedCategories.map((title: string) => ( -
- {title} - -
- )) - )} -
-
- - {/* INFO CALLOUT NOTICE */} -
- -

- You'll choose specific sub-categories & commission slabs on the next step (Products) -

-
- - {/* ACTION BUTTONS */} -
- - -
-
- )} - - {/* STEP 6: Products (Phase 2 Aligned) */} - {localStep === 6 && ( -
- {/* Text for test: Step 6: Products */} -
Step 6: Products
- -
-

- Add your first product -

-

- step 6 of 7 · one product is enough to get started -

-
- -
{ e.preventDefault(); handleNext(); }}> - {/* Photo Upload Section */} -
- -
- {/* Box 1: Cover Photo */} -
- - Add cover -
- - {/* Box 2 */} -
- -
- - {/* Box 3 */} -
- -
- - {/* Box 4 */} -
- -
- - {/* Box 5: Video */} -
- - Add video -
-
-

- up to 6 photos + 1 video (max 10 seconds) · first photo is your cover image -

-
- - {/* Product Name */} -
- - setInitialProduct({ ...initialProduct, title: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* Category + Sub-category (2 Columns) */} -
-
- -
- -
- -
-
-
- -
- -
- -
- -
-
-
-
- - {/* About this item */} -
- - -
- - {/* Color + Material */} -
-
- - setProdColor(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - setProdMaterial(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - {/* Brand + Warranty */} -
-
- - setProdBrand(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - setProdWarranty(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - {/* Manufacturer Info */} -
- - -
- - {/* Specification */} -
- - -
- - {/* Showcase */} -
- - setProdShowcase(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- - {/* Price, Stock, SKU (3 Columns) */} -
-
- -
- - ₹ - - setInitialProduct({ ...initialProduct, price: e.target.value })} - className="flex-1 w-full px-3.5 py-2.5 text-sm border-0 focus:ring-0 outline-none placeholder-gray-400 bg-white" - /> -
-
- -
- - setInitialProduct({ ...initialProduct, stock: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
- -
- - setInitialProduct({ ...initialProduct, sku: e.target.value })} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- - {/* Shipping weight + Made-to-order Checkbox */} -
-
- - setShippingWeight(e.target.value)} - className="w-full px-3.5 py-2.5 text-sm rounded-lg border border-gray-300 focus:border-[#1B2667] focus:ring-2 focus:ring-[#1B2667]/20 outline-none transition placeholder-gray-400 bg-white" - /> -
-
- -
-
- - {/* Action Buttons */} -
- -
- handleNext()} - className="text-xs sm:text-sm text-gray-500 hover:text-gray-900 underline cursor-pointer font-medium" - > - Skip for now - - -
-
-
-
- )} - - {/* STEP 7: Store Profile (Phase 2 Aligned) */} - {localStep === 7 && ( -
- {/* Text for test: Step 7: Store Profile */} -
Step 7: Store Profile
- - {/* Card Header */} -
-

- Set up your storefront -

-

- Step 7 of 7 · Final step before you go live -

-
- - {/* Banner & Circular Logo Upload Block */} -
- {/* Banner Zone */} -
- - Add store banner (1200 x 300px) - JPG, PNG or WebP · Max 5MB -
- - {/* Overlapping Circular Logo Zone */} -
-
- - Logo -
-
-
- - {/* Form Fields */} -
{ e.preventDefault(); handleNext(); }}> - {/* Store Name */} -
- - { - setStoreName(e.target.value); - if (!storeSlug) { - setStoreSlug(e.target.value.toLowerCase().replace(/[^a-z0-9]/g, '-')); - } - }} - className="w-full rounded-lg border border-stone-300 px-3.5 py-2.5 text-sm text-stone-900 placeholder-stone-400 focus:border-[#791B2C] focus:ring-2 focus:ring-[#791B2C]/20 transition-all outline-none" - /> -
- - {/* Store URL */} -
- -
- - tradhox.com/store/ - - setStoreSlug(e.target.value)} - className="block w-full min-w-0 flex-1 rounded-none rounded-r-lg border border-stone-300 px-3.5 py-2.5 text-sm text-stone-900 placeholder-stone-400 focus:border-[#791B2C] focus:ring-2 focus:ring-[#791B2C]/20 transition-all outline-none" - /> -
-
- - {/* Store Tagline */} -
- - setStoreTagline(e.target.value)} - className="w-full rounded-lg border border-stone-300 px-3.5 py-2.5 text-sm text-stone-900 placeholder-stone-400 focus:border-[#791B2C] focus:ring-2 focus:ring-[#791B2C]/20 transition-all outline-none" - /> -
- - {/* Store Description */} -
- - -
- - {/* Product Certificates (optional) */} -
- - { - const f = e.target.files?.[0]; - if (f) setCertificateFileName(f.name); - }} - /> -
document.getElementById('certificate-upload')?.click()} - onKeyDown={(e) => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - document.getElementById('certificate-upload')?.click(); - } - }} - className="w-full rounded-lg border-2 border-dashed border-stone-300 bg-[#faf8f5] hover:bg-stone-50 hover:border-stone-400 transition-colors p-4 text-center cursor-pointer focus:outline-none focus:ring-2 focus:ring-[#791B2C]" - > -
- - Upload certificates · PDF/JPG -
- {certificateFileName && ( -

- {certificateFileName} -

- )} -
-

- e.g. Certificate of Registration of Geographical Indication, FSSAI, ISO, BIS -

-
- - {/* Terms Checkbox */} -
- -
- - {/* Actions */} -
- - -
-
-
- )} - -
- - {/* Trust Badges Strip matching Phase 2 Specs */} -
-
-
-
- -
- Secure & encrypted -
- -
-
- {localStep === 2 ? ( - - ) : ( - - )} -
- - {localStep === 1 ? 'No registration fee' : - localStep === 2 ? 'Usually ready in minutes' : - localStep === 3 ? 'Free pickup by courier partners' : - localStep === 4 ? 'Payouts every 7 days' : - localStep === 5 ? 'Add more categories anytime' : - localStep === 6 ? 'Add unlimited products later' : - 'Edit your storefront anytime'} - -
- -
-
- -
- Dedicated onboarding support -
-
-
- -
-
- ); -} diff --git a/src/components/pages/PricingPage.tsx b/src/components/pages/PricingPage.tsx deleted file mode 100644 index 9fe7e0a..0000000 --- a/src/components/pages/PricingPage.tsx +++ /dev/null @@ -1,528 +0,0 @@ -import React, { useState } from 'react'; -import { useSeller } from '../../context/SellerContext'; - -export default function PricingPage() { - const { setCurrentPage } = useSeller(); - const [calcPrice, setCalcPrice] = useState(1500); - const [isGiTagged, setIsGiTagged] = useState(true); - const [activeFaq, setActiveFaq] = useState(null); - - // Commission is 5% for GI-tagged/artisan heritage, 8% for standard handmade - const commissionRate = isGiTagged ? 0.05 : 0.08; - const commission = Math.round(calcPrice * commissionRate); - const paymentGatewayFee = Math.round(calcPrice * 0.015); - const netEarnings = Math.max(0, calcPrice - commission - paymentGatewayFee); - - const pillars = [ - { - id: 1, - num: '01', - title: 'No registration fee', - badge: '₹0 Upfront Cost', - subtextBadge: 'creating your seller account & getting listed costs nothing', - desc: 'Start your digital seller journey completely free. We provide seamless Aadhaar and artisan cluster onboarding without subscription charges.', - img: '/images/pricing/no-reg-artisan.png', - alt: 'Smiling Indian artisan craftsman holding digital tablet showing ₹0 registration fee confirmation in workshop' - }, - { - id: 2, - num: '02', - title: 'No listing fee', - badge: 'Unlimited Listings', - subtextBadge: 'Zero mandatory ads or sponsored spend — all verified artisan products receive equal organic discovery at ₹0', - desc: 'Publish your full catalog of authentic handmade creations with zero upfront slot or cataloging charges. All verified artisan products receive equal organic discovery with zero mandatory ad spend.', - img: '/images/pricing/zero-listing-coin.png', - alt: 'Handmade brass coin and zero-fee artisanal receipts on workshop wooden table' - }, - { - id: 3, - num: '03', - title: 'No hidden payments', - badge: '100% Transparent', - subtextBadge: '100% transparent split — clear breakdown of marketplace fees, taxes, and net maker payouts on every order', - desc: 'Every rupee earned on your verified craft is safeguarded. We guarantee zero hidden deductions with a clear breakdown of marketplace fees, taxes, and net maker payouts on every order.', - img: '/images/pricing/transparent-weaver.png', - alt: 'Indian artisan happily reviewing transparent digital payouts and bank settlement dashboard on smartphone' - }, - { - id: 4, - num: '04', - title: 'Fast settlement', - badge: 'Guaranteed Weekly NEFT', - subtextBadge: 'guaranteed rapid payouts directly to your bank account with zero delays', - desc: 'Receive accelerated disbursements directly into your registered bank account as soon as your craft reaches the customer, keeping your working capital fluid.', - img: '/images/pricing/fast-settlement.png', - alt: 'Indian artisan smiling in workshop holding smartphone displaying swift digital payout received confirmation for fast settlement' - }, - { - id: 5, - num: '05', - title: 'No penalty', - badge: 'Artisan Protected', - subtextBadge: 'sell stress-free, with no fines for missed orders', - desc: 'A maker-first community that supports craftsmanship rather than imposing arbitrary SLAs or algorithmic penalty deductions.', - img: '/images/pricing/no-penalty-craft.png', - alt: 'Artisan crafting peacefully in workshop representing stress-free selling with no penalty' - } - ]; - - const faqs = [ - { - q: "What is Tradhox's AEO (Authorised Economic Operator) framework, and how does it benefit sellers?", - a: 'Under the Indian Customs CBIC AEO Programme, Tradhox provides expedited green-channel customs clearance, priority cargo processing, and simplified documentation for all registered GI-tagged and ODOP artisans exporting handmade products overseas without bureaucratic friction.' - }, - { - q: 'Are there any extra fees or registration charges for AEO certification & international shipping?', - a: 'None. Tradhox operates on 100% zero registration, zero listing, and zero AEO facilitation fees. You keep your full listed craft price; international logistics and compliant export documentation are handled seamlessly through our partner network.' - }, - { - q: 'What documents (IEC, GSTIN, Aadhaar) are required to onboard as an AEO-supported maker?', - a: 'To start selling locally and internationally, you only need an active bank account, Aadhaar verification, and a valid GSTIN or Artisan Pehchan Card. Tradhox assists rural craft cooperatives and individual weavers with IEC (Import-Export Code) registration at zero extra charge.' - }, - { - q: 'How does AEO status affect the 7-day payment settlement cycle?', - a: 'Because AEO status ensures pre-cleared customs and rapid international tracking, export payouts follow the exact same predictable 7-day settlement timeline as domestic orders directly credited via NEFT/IMPS to your verified bank account.' - }, - { - q: 'Are cancellation fees or return penalties charged under AEO international orders?', - a: 'No. True to our maker-first charter, there are zero cancellation fees or arbitrary SLA penalty deductions if a handmade production cycle experiences delays or stock adjustments.' - } - ]; - - const toggleFaq = (index: number) => { - setActiveFaq(activeFaq === index ? null : index); - }; - - return ( -
- {/* Top Breadcrumb */} - - - {/* Hero Section */} -
-
- - TRANSPARENT ARTISAN COMMERCE - -

- Transparent Pricing Built Solely for Maker Prosperity -

-

- Empowering traditional artisans, GI-tagged clusters, and direct creators across India with 100% transparent fee structures, zero upfront charges, and guaranteed weekly bank payouts. -

- -
- - -
-
-
- - {/* 5 Core Pillars in Alternating Zig-Zag Rows */} -
-
-
- - PRO-ARTISAN FEE ARCHITECTURE - -

- Zero Upfront Costs. Only Pay When You Sell. -

-

- Traditional marketplaces charge heavy listing and membership fees. Tradhox changes the rules with a zero-risk model crafted specifically for India's heritage makers. -

-
- -
- {pillars.map((p, idx) => { - const isEven = idx % 2 === 1; - return ( -
-
- {/* Text Column */} -
-
- - {p.num} - - - {p.badge} - -
- -

- {p.title} -

- -

- {p.desc} -

- -
- - {p.subtextBadge} -
-
- - {/* Image Column */} -
- {p.alt} -
-
-
- ); - })} -
-
-
- - {/* Interactive Artisan Profit Calculator */} -
-
-
- - ARTISAN PROFIT CALCULATOR - -

- Estimate Your Net Take-Home Earnings -

-

- See the exact transparent fee breakdown on any handcrafted item price. -

-
- -
-
- {/* Controls Column */} -
-
-
- - - ₹{calcPrice.toLocaleString('en-IN')} - -
-
- setCalcPrice(Math.max(0, Number(e.target.value)))} - style={{ borderColor: 'var(--trad-border)', borderRadius: '10px' }} - /> - ₹ -
- setCalcPrice(Number(e.target.value))} - aria-label="Price range slider" - className="w-full" - style={{ width: '100%', accentColor: 'var(--trad-maroon)', cursor: 'pointer' }} - /> -
- ₹200 - ₹12,500 - ₹25,000+ -
-
- -
- -
- -
-
- -

- *Standard handmade crafts without GI certification have an 8% flat marketplace platform fee. Payment gateway fee is ~1.5%. -

-
- - {/* Summary Card Column */} -
-
-
-

Order Payout Breakdown

- - 7-Day Settlement - -
- -
- Gross Selling Price: - ₹{calcPrice.toLocaleString('en-IN')} -
- -
- - Tradhox Fee ({isGiTagged ? '5% GI Rate' : '8% Standard'}): - - - ₹{commission.toLocaleString('en-IN')} -
- -
- Payment Gateway (1.5%): - - ₹{paymentGatewayFee.toLocaleString('en-IN')} -
- -
- -
-
-

Net Bank Payout

-

Credited in 7 days after delivery

-
-
- - ₹{netEarnings.toLocaleString('en-IN')} - -

- {( (netEarnings / (calcPrice || 1)) * 100 ).toFixed(1)}% Take-Home -

-
-
-
-
-
-
-
-
- - {/* Reliable Settlements Without Delays */} -
-
-
-

- PAYMENT CYCLE -

-

- Reliable Settlements Without Delays -

-

- Experience predictable, fully automated payouts directly credited to your registered bank account. Monitor every transaction, return adjustment, and clearance in real time. -

-
- -
-
-
-
- -
-
-

Fixed payout cycle

-

- settled a set number of days after delivery -

-

- All delivered orders are verified and settled into your weekly settlement batch with complete breakdown receipts. -

-
-
-
- -
-
-
- -
-
-

Secure bank transfer

-

- tracked in your seller panel until it lands -

-

- Direct NEFT/IMPS transfers backed by end-to-end reconciliation and real-time SMS/WhatsApp dispatch alerts. -

-
-
-
-
-
-
- - {/* Accordion FAQ: AEO, Customs & Seller Pricing Questions */} -
-
-
-

- FREQUENTLY ASKED · AEO & EXPORT COMPLIANCE -

-

- AEO, Customs & Seller Pricing Questions -

-

- Clear, transparent answers regarding Authorised Economic Operator (AEO) status, zero hidden fees, global export facilitation, and weekly payout compliance for Indian artisans. -

-
- -
- {faqs.map((f, i) => { - const isOpen = activeFaq === i; - return ( -
- - - {isOpen && ( -
-

{f.a}

-
- )} -
- ); - })} -
- - {/* Bottom CTA Banner */} -
-

- Ready to start selling your authentic creations? -

-

- Join thousands of verified weavers, potters, and regional craftsmen growing sustainable livelihoods with zero upfront risks, pan-India logistics, and transparent fee policies. -

- -
-
-
-
- ); -} diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index 18286e5..0000000 --- a/src/config.ts +++ /dev/null @@ -1,195 +0,0 @@ -const getApiBaseUrl = () => { - return ''; -}; - -export const CONFIG = { - apiBaseUrl: getApiBaseUrl(), - companyName: 'Tradhox', - logoLetter: 'A', - supportEmail: 'support@tradhox.com', - supportPhone: '+1 (800) 555-0199', - address: '1775 Artisan Ridge Rd, Craftsville, CA 90210', - - hero: { - title: 'Sell Globally. Celebrate Craft.', - subtitle: 'Join the premier marketplace for artisans and reach millions of conscious customers worldwide.', - image: '/artisan_banner.jpg' - }, - - features: [ - { - icon: '🌍', - title: 'Expand Your Reach', - description: 'Globalize your marketplace for artisans and reach millions of conscious customers.' - }, - { - icon: '🛠️', - title: 'Easy Inventory Tools', - description: 'Dashboard marketplace to manage and update listings with ease.' - }, - { - icon: '🛡️', - title: 'Secure Payments', - description: 'Secure payments and reliable payout processing directly to your bank account.' - } - ], - - featuredArtisan: { - name: 'Naomi K.', - role: 'Master Weaver', - quote: '"Joining the Global Artisans Hub has transformed our community. We went from selling at local weekend fairs to serving buyers worldwide, preserving our traditional craft."', - avatar: '/images/avatars/seller-main.jpg' - }, - - about: { - missionTitle: 'Our Mission', - missionDescription: 'We aim to empower artisan communities worldwide, providing a premium, transparent, and direct channel to conscious consumers globally.', - team: [ - { - name: 'Sunder R.', - role: 'Founder & CEO', - avatar: '/images/avatars/artisan-1.jpg' - }, - { - name: 'Sarayu N.', - role: 'Head of Artisan Partnerships', - avatar: '/images/avatars/artisan-2.jpg' - }, - { - name: 'John C.', - role: 'Operations Lead', - avatar: '/images/avatars/artisan-3.jpg' - }, - { - name: 'Elena P.', - role: 'Tech Lead', - avatar: '/images/avatars/artisan-4.jpg' - } - ] - }, - - // --- Mock Dashboard Data --- - dashboardData: { - filters: { - year: { - totalSales: 45280.00, - totalEarned: 38488.00, - stockDetails: 342, - returnedItems: 12, - chartValues: [30, 45, 35, 60, 75, 55, 80, 65, 90, 70, 85, 95] // Monthly values - }, - week: { - totalSales: 1240.00, - totalEarned: 1054.00, - stockDetails: 342, - returnedItems: 1, - chartValues: [40, 60, 50, 70, 45, 80, 90] // Daily values - }, - day: { - totalSales: 210.00, - totalEarned: 178.50, - stockDetails: 342, - returnedItems: 0, - chartValues: [10, 15, 20, 25, 35, 45, 30, 20, 10] // Hourly intervals - }, - custom: { - totalSales: 5820.00, - totalEarned: 4947.00, - stockDetails: 342, - returnedItems: 3, - chartValues: [50, 40, 65, 55, 75, 85, 60, 70] // Range intervals - } - }, - - initialProducts: [ - { id: '1', title: 'Handwoven Indigo Shawl', category: 'Apparel', price: 85.00, stock: 45, sku: 'SHAWL-IND-01', image: '/kanchipuram_silk.jpg' }, - { id: '2', title: 'Terracotta Clay Pot Set', category: 'Home Decor', price: 42.00, stock: 24, sku: 'POT-TER-02', image: '/terracotta_vases.jpg' }, - { id: '3', title: 'Brass Elephant Figurine', category: 'Sculptures', price: 120.00, stock: 12, sku: 'FIG-ELE-03', image: '/brass_figurine.jpg' } - ], - - initialOrders: [ - { id: 'ORD-8492', date: '2026-08-07', item: 'Handwoven Indigo Shawl', quantity: 1, customer: 'Alice Vance', total: 85.00, status: 'Ready to Ship', carrier: 'DHL Express', tracking: 'DHL-9284102', eta: '2026-08-10' }, - { id: 'ORD-8488', date: '2026-08-06', item: 'Terracotta Clay Pot Set', quantity: 2, customer: 'David Miller', total: 84.00, status: 'Shipped', carrier: 'FedEx Ground', tracking: 'FDX-5829104', eta: '2026-08-09' }, - { id: 'ORD-8471', date: '2026-08-05', item: 'Brass Elephant Figurine', quantity: 1, customer: 'Sarah Connor', total: 120.00, status: 'Delivered', carrier: 'Local Express', tracking: 'LOC-1294801', eta: '2026-08-07' } - ], - - initialReturns: [ - { id: 'RET-019', orderId: 'ORD-8411', customer: 'Lillian G.', item: 'Handwoven Indigo Shawl', reason: 'Slightly different shade than pictured', status: 'Pending Approval', image: '/kanchipuram_silk.jpg', returningTracking: 'DHL-RET-9031' }, - { id: 'RET-018', orderId: 'ORD-8390', customer: 'Robert H.', item: 'Terracotta Clay Pot Set', reason: 'Damaged in transit', status: 'In Transit', image: '/terracotta_vases.jpg', returningTracking: 'FDX-RET-2940' } - ] - } -} - - -let isRefreshing = false; -let refreshSubscribers: ((token: string) => void)[] = []; - -function onTokenRefreshed(token: string) { - refreshSubscribers.forEach(cb => cb(token)); - refreshSubscribers = []; -} - -async function refreshAccessToken(): Promise { - const refreshToken = localStorage.getItem('refresh_token'); - if (!refreshToken) return null; - try { - const res = await fetch(`${CONFIG.apiBaseUrl}/api/auth/token/refresh/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ refresh: refreshToken }), - }); - if (!res.ok) return null; - const data = await res.json(); - const newToken = data.access; - if (newToken) { - localStorage.setItem('access_token', newToken); - return newToken; - } - return null; - } catch { - return null; - } -} - -export async function apiFetch(url: string, options: RequestInit = {}): Promise { - const token = localStorage.getItem('access_token'); - const makeRequest = (authToken: string | null) => - fetch(url, { - ...options, - headers: { - ...options.headers, - ...(authToken ? { 'Authorization': `Bearer ${authToken}` } : {}), - }, - credentials: 'include', - }); - - const response = await makeRequest(token); - - // Auto-refresh on 401 - if (response.status === 401) { - if (!isRefreshing) { - isRefreshing = true; - const newToken = await refreshAccessToken(); - isRefreshing = false; - if (newToken) { - onTokenRefreshed(newToken); - return makeRequest(newToken); - } else { - // Refresh failed — clear tokens - localStorage.removeItem('access_token'); - localStorage.removeItem('refresh_token'); - refreshSubscribers = []; - } - } else { - // Queue the request until refresh completes - return new Promise(resolve => { - refreshSubscribers.push((newToken: string) => { - resolve(makeRequest(newToken)); - }); - }); - } - } - - return response; -} - diff --git a/src/context/SellerContext.tsx b/src/context/SellerContext.tsx deleted file mode 100644 index 649b32b..0000000 --- a/src/context/SellerContext.tsx +++ /dev/null @@ -1,893 +0,0 @@ -import React, { createContext, useContext, useState, useEffect } from 'react'; -import { CONFIG, apiFetch } from '../config'; - -type Page = 'home' | 'about' | 'contact' | 'login' | 'signup' | 'how-it-works' | 'pricing' | 'grow-business' | 'profile-completion' | 'confirmation' | 'dashboard' | 'forgot-password' | 'login-otp' | 'welcome-tour' | 'application-submitted'; -type DashboardTab = 'overview' | 'products' | 'orders' | 'returns' | 'wallet' | 'settings' | 'barcode-generator' | 'analytics'; -type DateFilter = 'year' | 'week' | 'day' | 'custom'; - -interface Product { - id: string; - title: string; - category: string; - price: number; - stock: number; - sku: string; - image: string; -} - -interface Order { - id: string; - date: string; - item: string; - quantity: number; - customer: string; - total: number; - status: 'Ready to Ship test' | 'Ready to Ship' | 'Shipped' | 'Delivered' | 'Cancelled' | 'Pending Acceptance' | 'Rejected'; - carrier: string; - tracking: string; - eta: string; -} - -interface ReturnRequest { - id: string; - orderId: string; - customer: string; - item: string; - reason: string; - status: 'Pending Approval' | 'Approved' | 'Rejected' | 'In Transit'; - image: string; - returningTracking: string; -} - -export const SellerContext = createContext(null); - -export const useSeller = () => useContext(SellerContext); - -export const SellerProvider: React.FC<{children: React.ReactNode}> = ({ children }) => { - const [currentPage, setCurrentPage] = useState('home') - const [isSidebarOpen, setIsSidebarOpen] = useState(false) - const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false) - const [activeTab, setActiveTab] = useState<'login' | 'register'>('login') - - // Onboarding Status - const [isProfileComplete, setIsProfileComplete] = useState(false) - - // Registration / Onboarding Form States - const [email, setEmail] = useState('') - const [phone, setPhone] = useState('') - const [password, setPassword] = useState('') - - // Step 1: Verification - const [phoneVerified, setPhoneVerified] = useState(false) - const [emailVerified, setEmailVerified] = useState(false) - const [phoneOtpSent, setPhoneOtpSent] = useState(false) - const [emailOtpSent, setEmailOtpSent] = useState(false) - const [enteredPhoneOtp, setEnteredPhoneOtp] = useState('') - const [enteredEmailOtp, setEnteredEmailOtp] = useState('') - - // Step 2: Business details (moved GSTIN here) - const [gstin, setGstin] = useState('29AAAAA1111A1Z1') - const [isGstinVerified, setIsGstinVerified] = useState(false) - const [aadharFile, setAadharFile] = useState(null) - const [panFile, setPanFile] = useState(null) - const [aadharS3Key, setAadharS3Key] = useState(null) - const [aadharUrl, setAadharUrl] = useState(null) // New - const [panS3Key, setPanS3Key] = useState(null) - const [panUrl, setPanUrl] = useState(null) // New - - // New onboarding customization states - const [businessType, setBusinessType] = useState('registered_company') - const [pan, setPan] = useState('ABCDE1234F') - const [altPhone, setAltPhone] = useState('') - const [matchReg, setMatchReg] = useState(true) - const [storeSlug, setStoreSlug] = useState('') - const [supportEmail, setSupportEmail] = useState('') - const [supportPhone, setSupportPhone] = useState('') - const [selectedCategories, setSelectedCategories] = useState([]) - - // 7-step onboarding state - const [onboardingStep, setOnboardingStep] = useState(1) - const [applicationId, setApplicationId] = useState('TRD-' + Math.floor(100000 + Math.random() * 900000)) - const [bankDetails, setBankDetails] = useState({ - accountHolderName: '', - accountNumber: '', - confirmAccountNumber: '', - ifscCode: '', - bankName: '', - branchName: '', - accountType: 'Current' - }) - const [pickupAddress, setPickupAddress] = useState({ - buildingName: '', - street: '123 Handloom Lane', - landmark: '', - city: 'Textile Town', - state: 'Karnataka', - pincode: '560001', - contactPerson: '', - contactPhone: '' - }) - const [initialProduct, setInitialProduct] = useState({ - title: '', - category: 'Handloom & Textiles', - price: '', - stock: '', - description: '', - sku: '', - materials: '', - image: '' - }) - - // Store and Location details - const [storeName, setStoreName] = useState('My Artisan Handloom') - const [storeLogo, setStoreLogo] = useState(null) - const [logoS3Key, setLogoS3Key] = useState(null) - const [businessBio, setBusinessBio] = useState('Traditional weaving and local sustainable designs.') - const [address, setAddress] = useState({ - street: '123 Handloom Lane', - city: 'Textile Town', - state: 'Karnataka', - pincode: '560001' - }) - const [mapCoordinates, setMapCoordinates] = useState({ lat: 12.9716, lng: 77.5946 }) - - // --- Password visibility, confirm password and policy states --- - const [showLoginPass, setShowLoginPass] = useState(false) - const [showSignupPass, setShowSignupPass] = useState(false) - const [showSignupConfirmPass, setShowSignupConfirmPass] = useState(false) - const [confirmPassword, setConfirmPassword] = useState('') - const [policyAccepted, setPolicyAccepted] = useState(false) - - // --- Password Reset Page States --- - const [resetEmail, setResetEmail] = useState('') - const [resetOtpSent, setResetOtpSent] = useState(false) - const [resetOtp, setResetOtp] = useState('') - const [resetPassword, setResetPassword] = useState('') - - // --- OTP Login States --- - const [otpLoginPhone, setOtpLoginPhone] = useState('') - const [otpLoginSent, setOtpLoginSent] = useState(false) - const [otpLoginCode, setOtpLoginCode] = useState('') - - // --- Barcode Generator States --- - const [barcodeProductSku, setBarcodeProductSku] = useState('') - const [barcodeGenerated, setBarcodeGenerated] = useState(false) - - // --- Active Dashboard States --- - const [dashTab, setDashTab] = useState('overview') - const [dateFilter, setDateFilter] = useState('year') - const [customDates, setCustomDates] = useState({ start: '2026-06-01', end: '2026-06-15' }) - - // Lists with rich default mock data for demo mode - const [products, setProducts] = useState(CONFIG.dashboardData.initialProducts || []) - const [orders, setOrders] = useState((CONFIG.dashboardData.initialOrders as Order[]) || []) - const [returns, setReturns] = useState((CONFIG.dashboardData.initialReturns as ReturnRequest[]) || []) - - // Forms & Editing - const [productForm, setProductForm] = useState({ - id: '', - title: '', - category: 'Apparel', - price: 0, - stock: 0, - sku: '', - image: '/kanchipuram_silk.jpg' - }) - const [isEditingProduct, setIsEditingProduct] = useState(false) - - // New Heritage UI wizard states - const [productWizardStep, setProductWizardStep] = useState(0) // 0: Catalog list, 1-5: Product upload wizard steps - const [productFormDetails, setProductFormDetails] = useState({ - id: '', - name: '', - category: 'Textiles & Apparel', - description: '', - isGiTagged: false, - primaryImage: '/kanchipuram_silk.jpg', - additionalViews: [] as string[], - videoUrl: '', - view360Url: '', - basePrice: '', - compareAtPrice: '', - trackInventory: true, - sku: '', - initialStock: '', - shippingProfile: 'Standard Fragile', - processingDays: 3, - packageWeight: 1.0 - }) - const [selectedOrderDetail, setSelectedOrderDetail] = useState(null) - const [orderNotes, setOrderNotes] = useState('') - - // Payout outstanding states - const [wallet, setWallet] = useState({ - outstanding: 850.00, - withdrawn: 1250.00, - history: [ - { id: 'TX-9031', date: '2026-08-01', amount: 500.00, status: 'Transferred' }, - { id: 'TX-9022', date: '2026-07-15', amount: 750.00, status: 'Transferred' } - ] - }) - const [withdrawAmount, setWithdrawAmount] = useState('') - - // Load data from backend on mount or when profile is complete / logged in - useEffect(() => { - const token = localStorage.getItem('access_token'); - if (token) { - apiFetch(`${CONFIG.apiBaseUrl}/api/profile/`) - .then(res => { - if (res.ok) return res.json(); - throw new Error('Session expired'); - }) - .then(user => { - if (user && user.profile) { - const profile = user.profile; - setPhone(profile.phone || ''); - setPhoneVerified(profile.phone_verified || false); - setEmail(user.email || ''); - setEmailVerified(profile.email_verified || false); - setGstin(profile.gstin || '29AAAAA1111A1Z1'); - setIsGstinVerified(profile.is_gstin_verified || false); - setAadharFile(profile.aadhar_file || null); - setPanFile(profile.pan_file || null); - setAadharS3Key(profile.aadhar_s3_key || null); - setPanS3Key(profile.pan_s3_key || null); - setAadharUrl(profile.aadhar_url || null); // New - setPanUrl(profile.pan_url || null); // New - - setBusinessType(profile.business_type || 'registered_company'); - setStoreSlug(profile.store_slug || ''); - setSupportEmail(profile.support_email || ''); - setSupportPhone(profile.support_phone || ''); - setSelectedCategories(profile.categories || []); - - setStoreName(profile.store_name || 'My Artisan Handloom'); - setStoreLogo(profile.store_logo || null); - setLogoS3Key(profile.logo_s3_key || null); - setBusinessBio(profile.business_bio || 'Traditional weaving and local sustainable designs.'); - setAddress({ - street: profile.street || '123 Handloom Lane', - city: profile.city || 'Textile Town', - state: profile.state || 'Karnataka', - pincode: profile.pincode || '560001' - }); - if (profile.latitude && profile.longitude) { - setMapCoordinates({ lat: Number(profile.latitude), lng: Number(profile.longitude) }); - } - - const step = profile.onboarding_step; - // The onboarding flow is now just 1 step, so anything >= 2 (or 4 if we keep old backend state) means complete - if (step >= 4 || profile.is_profile_complete) { - setIsProfileComplete(true); - setCurrentPage('dashboard'); - } else { - setIsProfileComplete(false); - setCurrentPage('profile-completion'); - } - } - }) - .catch(err => { - console.warn('Session restore fallback to active demo session:', err); - setIsProfileComplete(true); - }); - } - }, []); - - useEffect(() => { - if (isProfileComplete || currentPage === 'dashboard') { - // Fetch Products - apiFetch(`${CONFIG.apiBaseUrl}/api/products/`) - .then(res => res.json()) - .then(data => { - if (Array.isArray(data)) setProducts(data); - else if (data && Array.isArray(data.results)) setProducts(data.results); - }) - .catch(err => console.error('Error fetching products:', err)); - - // Fetch Orders - apiFetch(`${CONFIG.apiBaseUrl}/api/orders/`) - .then(res => res.json()) - .then(data => { - if (Array.isArray(data)) setOrders(data); - else if (data && Array.isArray(data.results)) setOrders(data.results); - }) - .catch(err => console.error('Error fetching orders:', err)); - - // Fetch Returns - apiFetch(`${CONFIG.apiBaseUrl}/api/returns/`) - .then(res => res.json()) - .then(data => { - if (Array.isArray(data)) setReturns(data); - else if (data && Array.isArray(data.results)) setReturns(data.results); - }) - .catch(err => console.error('Error fetching returns:', err)); - - // Fetch Wallet - apiFetch(`${CONFIG.apiBaseUrl}/api/wallet/`) - .then(res => res.json()) - .then(data => { - if (data) setWallet(data); - }) - .catch(err => console.error('Error fetching wallet:', err)); - } - }, [isProfileComplete, currentPage]); - - const uploadDocument = async (file: File, fileType: string) => { - try { - const response = await apiFetch(`${CONFIG.apiBaseUrl}/api/profile/presigned-url/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ file_type: fileType, content_type: file.type }) - }); - if (!response.ok) throw new Error('Failed to get presigned URL'); - const data = await response.json(); - - // Simulate file upload PUT to mock presigned_url - await fetch(data.presigned_url, { - method: 'PUT', - body: file, - headers: { 'Content-Type': file.type } - }).catch(err => console.log('Mock S3 upload:', err)); - - return data.s3_key; - } catch (err) { - console.error(err); - return `suppliers/default/${fileType}.jpg`; - } - }; - - const handleAcceptOrder = (id: string) => { - apiFetch(`${CONFIG.apiBaseUrl}/api/orders/${id}/accept/`, { - method: 'POST' - }) - .then(res => res.json()) - .then(updatedOrder => { - setOrders(orders.map(o => o.id === updatedOrder.id ? updatedOrder : o)) - alert(`Order accepted successfully!`) - }) - .catch(err => console.error(err)) - } - - const handleRejectOrder = (id: string) => { - apiFetch(`${CONFIG.apiBaseUrl}/api/orders/${id}/reject/`, { - method: 'POST' - }) - .then(res => res.json()) - .then(updatedOrder => { - setOrders(orders.map(o => o.id === updatedOrder.id ? updatedOrder : o)) - alert(`Order rejected.`) - }) - .catch(err => console.error(err)) - } - - // Bulk Upload - const [bulkLog, setBulkLog] = useState([]) - const [isParsingBulk, setIsParsingBulk] = useState(false) - const [bulkCsvFile, setBulkCsvFile] = useState(null) - const [bulkZipFile, setBulkZipFile] = useState(null) - - // GSTIN verification simulator - const handleVerifyGstin = () => { - if (!gstin.trim() || gstin.length !== 15) { - alert('Invalid GSTIN length. Must be 15 chars.'); - return; - } - apiFetch(`${CONFIG.apiBaseUrl}/api/profile/submit-gstin/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ gstin }) - }) - .then(res => { - if (!res.ok) throw new Error('Failed to verify GSTIN.'); - return res.json(); - }) - .then(data => { - if (data.verified) { - setIsGstinVerified(true); - } - }) - .catch(err => { - alert(err.message); - }); - } - - // Handle Logo Upload simulation - const handleLogoChange = async (e: React.ChangeEvent) => { - const file = e.target.files?.[0] - if (file) { - const reader = new FileReader() - reader.onloadend = () => { - setStoreLogo(reader.result as string) - } - reader.readAsDataURL(file) - - const s3Key = await uploadDocument(file, 'logo'); - setLogoS3Key(s3Key); - } - } - - // Route/Navigation Guard: If profile is not complete, redirect to profile-completion - const navigateTo = (page: Page, forceComplete: boolean = false) => { - const publicPages: Page[] = ['home', 'about', 'contact', 'login', 'signup', 'forgot-password', 'login-otp'] - const complete = isProfileComplete || forceComplete - - if (!complete && !publicPages.includes(page) && page !== 'profile-completion') { - alert('Access Denied: Please complete your supplier profile first!') - setCurrentPage('profile-completion') - } else { - setCurrentPage(page) - } - window.scrollTo({ top: 0, behavior: 'smooth' }) - } - - const handleLogout = () => { - apiFetch(`${CONFIG.apiBaseUrl}/api/auth/logout/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' } - }) - .catch(err => console.error('Error logging out:', err)) - .finally(() => { - localStorage.removeItem('access_token') - localStorage.removeItem('refresh_token') - // Reset all onboarding & profile states to their defaults - setIsProfileComplete(false) - setEmail('') - setPhone('') - setPassword('') - setConfirmPassword('') - setPolicyAccepted(false) - - setPhoneVerified(false) - setEmailVerified(false) - setPhoneOtpSent(false) - setEmailOtpSent(false) - setEnteredPhoneOtp('') - setEnteredEmailOtp('') - - setGstin('29AAAAA1111A1Z1') - setIsGstinVerified(false) - setAadharFile(null) - setPanFile(null) - setAadharS3Key(null) - setAadharUrl(null) - setPanS3Key(null) - setPanUrl(null) - - setBusinessType('registered_company') - setStoreSlug('') - setSupportEmail('') - setSupportPhone('') - setSelectedCategories([]) - - setStoreName('My Artisan Handloom') - setStoreLogo(null) - setLogoS3Key(null) - setBusinessBio('Traditional weaving and local sustainable designs.') - setAddress({ - street: '123 Handloom Lane', - city: 'Textile Town', - state: 'Karnataka', - pincode: '560001' - }) - setMapCoordinates({ lat: 12.9716, lng: 77.5946 }) - - navigateTo('home', true) - }) - } - - - const handleRegisterSubmit = (e: React.FormEvent) => { - e.preventDefault() - - // Email Validation (if provided) - const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - if (email.trim() && !emailRegex.test(email)) { - alert('Please enter a valid email address.'); - return; - } - - // Phone Validation (if provided) - const phoneRegex = /^[6-9]\d{9}$/; - if (phone.trim() && !phoneRegex.test(phone)) { - alert('Please enter a valid 10-digit mobile number starting with 6, 7, 8, or 9.'); - return; - } - - // Password Validation: If password is provided and confirm password doesn't match - if (password && confirmPassword && password !== confirmPassword) { - alert('Passwords do not match.'); - return; - } - - // Policy Validation - if (!policyAccepted) { - alert('You must accept the Terms of Service and Privacy Policy.'); - return; - } - - const completeRegistration = () => { - localStorage.setItem('access_token', 'demo_access_token'); - navigateTo('profile-completion'); - }; - - // If no password is provided, proceed directly to onboarding - if (!password) { - completeRegistration(); - return; - } - - apiFetch(`${CONFIG.apiBaseUrl}/api/auth/register/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - username: email || 'demo_artisan@tradhox.com', - email: email || 'demo_artisan@tradhox.com', - phone: phone || '9876543210', - password: password, - confirm_password: confirmPassword || password, - policy_accepted: policyAccepted - }) - }) - .then(res => { - if (!res.ok) throw new Error('Registration failed. Username/email might already be taken.'); - return res.json(); - }) - .then(() => { - // Auto login after signup - apiFetch(`${CONFIG.apiBaseUrl}/api/auth/login/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ username: email || 'demo_artisan@tradhox.com', password: password }) - }) - .then(res => { - if (!res.ok) throw new Error('Auto-login failed.'); - return res.json(); - }) - .then(data => { - localStorage.setItem('access_token', data.access_token); - if (data.refresh_token) localStorage.setItem('refresh_token', data.refresh_token); - navigateTo('profile-completion') - }) - .catch(() => { - completeRegistration(); - }) - }) - .catch(() => { - // Offline / demo fallback - completeRegistration(); - }); - } - - const handleLoginSubmit = (e: React.FormEvent) => { - e.preventDefault() - - const fallbackDemoLogin = () => { - localStorage.setItem('access_token', 'demo_access_token'); - setEmail(email.trim() || 'demo_artisan@tradhox.com'); - setPhoneVerified(true); - setEmailVerified(true); - setIsGstinVerified(true); - setIsProfileComplete(true); - navigateTo('dashboard', true); - }; - - // Allow login without password directly - if (!password) { - fallbackDemoLogin(); - return; - } - - apiFetch(`${CONFIG.apiBaseUrl}/api/auth/login/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ username: email, password: password }) - }) - .then(res => { - if (!res.ok) throw new Error('Demo mode activated.'); - return res.json(); - }) - .then(data => { - localStorage.setItem('access_token', data.access_token); - if (data.refresh_token) localStorage.setItem('refresh_token', data.refresh_token); - if (data.user && data.user.profile) { - const profile = data.user.profile; - setPhone(profile.phone || ''); - setPhoneVerified(profile.phone_verified || false); - setEmail(data.user.email || email); - setEmailVerified(profile.email_verified || false); - setGstin(profile.gstin || '29AAAAA1111A1Z1'); - setIsGstinVerified(profile.is_gstin_verified || false); - setAadharFile(profile.aadhar_file || null); - setPanFile(profile.pan_file || null); - setAadharS3Key(profile.aadhar_s3_key || null); - setPanS3Key(profile.pan_s3_key || null); - setAadharUrl(profile.aadhar_url || null); - setPanUrl(profile.pan_url || null); - setBusinessType(profile.business_type || 'registered_company'); - setStoreSlug(profile.store_slug || ''); - setSupportEmail(profile.support_email || ''); - setSupportPhone(profile.support_phone || ''); - setSelectedCategories(profile.categories || []); - setStoreName(profile.store_name || 'My Artisan Handloom'); - setStoreLogo(profile.store_logo || null); - setLogoS3Key(profile.logo_s3_key || null); - setBusinessBio(profile.business_bio || 'Traditional weaving and local sustainable designs.'); - setAddress({ - street: profile.street || '123 Handloom Lane', - city: profile.city || 'Textile Town', - state: profile.state || 'Karnataka', - pincode: profile.pincode || '560001' - }); - if (profile.latitude && profile.longitude) { - setMapCoordinates({ lat: Number(profile.latitude), lng: Number(profile.longitude) }); - } - - const step = profile.onboarding_step; - if (step >= 4 || profile.is_profile_complete) { - setIsProfileComplete(true); - navigateTo('dashboard', true); - } else { - setIsProfileComplete(false); - navigateTo('profile-completion'); - } - } else { - setIsProfileComplete(false); - navigateTo('profile-completion'); - } - }) - .catch(() => { - // Backend not running or demo credentials -> seamless fallback to demo dashboard - fallbackDemoLogin(); - }); - } - - const saveProfileBackend = (isComplete: boolean) => { - return apiFetch(`${CONFIG.apiBaseUrl}/api/profile/`, { - method: 'PUT', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - phone: phone, - phone_verified: phoneVerified, - email_verified: emailVerified, - gstin: gstin, - is_gstin_verified: isGstinVerified, - business_type: businessType, - store_slug: storeSlug, - support_email: supportEmail, - support_phone: supportPhone, - categories: selectedCategories, - aadhar_file: aadharFile, - pan_file: panFile, - aadhar_s3_key: aadharS3Key || null, - pan_s3_key: panS3Key || null, - store_name: storeName, - store_logo: storeLogo || '/artisan_banner.jpg', - logo_s3_key: logoS3Key || null, - business_bio: businessBio, - street: address.street, - city: address.city, - state: address.state, - pincode: address.pincode, - latitude: mapCoordinates.lat, - longitude: mapCoordinates.lng, - is_profile_complete: isComplete - }) - }) - .then(res => { - if (!res.ok) throw new Error('Failed to update profile.'); - return res.json(); - }); - }; - - const handleProfileSubmit = (e?: React.FormEvent) => { - if (e && typeof e.preventDefault === 'function') { - e.preventDefault(); - } - return saveProfileBackend(true) - .catch(err => { - alert(err.message); - }) - }; - - // --- Dashboard Logic Actions --- - - // Product creation/modification - const handleSaveProduct = (e: React.FormEvent) => { - e.preventDefault() - const url = isEditingProduct - ? `${CONFIG.apiBaseUrl}/api/products/${productForm.id}/` - : `${CONFIG.apiBaseUrl}/api/products/` - const method = isEditingProduct ? 'PUT' : 'POST' - - apiFetch(url, { - method: method, - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - title: productForm.title, - category: productForm.category, - price: String(productForm.price), - stock: Number(productForm.stock), - sku: productForm.sku || `PROD-${Date.now().toString().slice(-6)}`, - image: productForm.image - }) - }) - .then(res => res.json()) - .then(() => { - // Refresh products from backend - apiFetch(`${CONFIG.apiBaseUrl}/api/products/`) - .then(r => r.json()) - .then(prods => { - if (Array.isArray(prods)) setProducts(prods); - else if (prods && Array.isArray(prods.results)) setProducts(prods.results); - }) - setIsEditingProduct(false) - alert(isEditingProduct ? 'Product modified successfully!' : 'Product uploaded successfully!') - }) - .catch(err => console.error(err)) - - // reset form - setProductForm({ id: '', title: '', category: 'Apparel', price: 0, stock: 0, sku: '', image: '/kanchipuram_silk.jpg' }) - } - - const handleEditClick = (p: Product) => { - setProductForm(p) - setIsEditingProduct(true) - } - - const handleDeleteProduct = (id: string) => { - if (confirm('Are you sure you want to delete this listing?')) { - apiFetch(`${CONFIG.apiBaseUrl}/api/products/${id}/`, { - method: 'DELETE' - }) - .then(() => { - setProducts(products.filter(p => p.id !== id)) - }) - .catch(err => console.error(err)) - } - } - - const handleBulkUploadSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - if (!bulkCsvFile) { - alert("Please select a CSV file to upload."); - return; - } - setIsParsingBulk(true); - setBulkLog(['Uploading files to server...', 'Parsing CSV data and extracting ZIP images...']); - - const formData = new FormData(); - formData.append('csv_file', bulkCsvFile); - if (bulkZipFile) { - formData.append('zip_file', bulkZipFile); - } - - try { - const token = localStorage.getItem('access_token'); - const response = await fetch(`${CONFIG.apiBaseUrl}/api/products/bulk-upload/`, { - method: 'POST', - headers: { - ...(token ? { 'Authorization': `Bearer ${token}` } : {}) - }, - body: formData - }); - - const data = await response.json(); - if (!response.ok) { - throw new Error(data.error || 'Failed to complete bulk upload.'); - } - - setBulkLog([ - 'CSV file parsed successfully.', - `Extracted and matched images for SKUs from ZIP file.`, - `Successfully added ${data.products?.length || 0} product listings!`, - ]); - - // Refresh product list - const prodRes = await apiFetch(`${CONFIG.apiBaseUrl}/api/products/`); - const prods = await prodRes.json(); - if (Array.isArray(prods)) { - setProducts(prods); - } else if (prods && Array.isArray(prods.results)) { - setProducts(prods.results); - } - setBulkCsvFile(null); - setBulkZipFile(null); - } catch (err: any) { - setBulkLog(prev => [...prev, `Error: ${err.message}`]); - } finally { - setIsParsingBulk(false); - } - }; - - // Wallet outstanding requests - const handleWithdrawRequest = (e: React.FormEvent) => { - e.preventDefault() - const amount = Number(withdrawAmount) - if (isNaN(amount) || amount <= 0) { - alert('Please enter a valid amount') - return - } - - apiFetch(`${CONFIG.apiBaseUrl}/api/wallet/withdraw/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ amount: String(amount) }) - }) - .then(res => { - if (!res.ok) throw new Error('Insufficient funds or invalid request'); - return res.json(); - }) - .then(updatedWallet => { - setWallet(updatedWallet) - setWithdrawAmount('') - alert(`Payout of $${amount} successfully transferred!`) - }) - .catch(err => { - alert(err.message) - }) - } - - // Returns actions - const handleReturnAction = (id: string, action: 'Approved' | 'Rejected') => { - apiFetch(`${CONFIG.apiBaseUrl}/api/returns/${id}/action/`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: action }) - }) - .then(res => res.json()) - .then(updatedReturn => { - setReturns(returns.map(ret => ret.id === id ? updatedReturn : ret)) - alert(`Return request ${action.toLowerCase()}!`) - }) - .catch(err => console.error(err)) - } - - // Compute realtime metrics based on state loaded from backend - const computeRealtimeMetrics = () => { - const totalSales = orders - .filter(o => o.status !== 'Cancelled' && o.status !== 'Rejected') - .reduce((sum, o) => sum + Number(o.total), 0) - - const totalEarned = Number(wallet.outstanding) + Number(wallet.withdrawn) - const totalStock = products.reduce((sum, p) => sum + Number(p.stock), 0) - const totalReturns = returns.length - - const isLoggedIn = currentPage === 'dashboard' || currentPage === 'profile-completion' || currentPage === 'welcome-tour' || isProfileComplete - - if (isLoggedIn) { - return { - totalSales, - totalEarned, - stockDetails: totalStock, - returnedItems: totalReturns, - chartValues: orders.length > 0 - ? orders.map(o => Number(o.total)) - : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - } - - return { - totalSales: 45280.00, - totalEarned: 38488.00, - stockDetails: 342, - returnedItems: 12, - chartValues: CONFIG.dashboardData.filters[dateFilter]?.chartValues || [30, 45, 35, 60, 50, 75, 65, 80, 70, 95, 90, 110] - } - } - - const selectedMetrics = computeRealtimeMetrics() - - - - const contextValue = { - setBusinessBio, email, resetPassword, setLogoS3Key, setStoreName, setShowLoginPass, storeName, otpLoginSent, setOtpLoginSent, aadharS3Key, logoS3Key, customDates, setProductFormDetails, handleBulkUploadSubmit, setMapCoordinates, setAadharFile, gstin, mapCoordinates, setIsGstinVerified, enteredPhoneOtp, address, setEmailVerified, dashTab, selectedOrderDetail, setShowSignupConfirmPass, handleRegisterSubmit, setBulkCsvFile, confirmPassword, navigateTo, setResetPassword, orderNotes, setOrders, handleRejectOrder, barcodeProductSku, setEnteredEmailOtp, setIsEditingProduct, setBulkLog, isMobileMenuOpen, resetOtp, productWizardStep, setCustomDates, setConfirmPassword, isGstinVerified, bulkCsvFile, setAddress, storeLogo, handleProfileSubmit, setPhoneOtpSent, setOrderNotes, handleDeleteProduct, setWallet, policyAccepted, emailOtpSent, setResetOtpSent, setGstin, phoneOtpSent, showLoginPass, showSignupConfirmPass, setPhoneVerified, aadharFile, setDateFilter, activeTab, computeRealtimeMetrics, setIsParsingBulk, handleLogout, panS3Key, setCurrentPage, selectedCategories, setEmailOtpSent, showSignupPass, resetEmail, handleLogoChange, dateFilter, setShowSignupPass, businessBio, setWithdrawAmount, phoneVerified, currentPage, setResetOtp, enteredEmailOtp, setEnteredPhoneOtp, setPanFile, setIsSidebarOpen, setSelectedOrderDetail, handleAcceptOrder, saveProfileBackend, supportPhone, handleEditClick, setStoreLogo, setEmail, password, setOtpLoginPhone, bulkLog, businessType, setPanS3Key, setProducts, setSupportEmail, setOtpLoginCode, withdrawAmount, handleSaveProduct, setStoreSlug, setBarcodeProductSku, setProductForm, setBulkZipFile, productFormDetails, setIsProfileComplete, otpLoginPhone, orders, setActiveTab, bulkZipFile, isSidebarOpen, setBarcodeGenerated, setBusinessType, handleReturnAction, setSupportPhone, barcodeGenerated, products, productForm, setProductWizardStep, resetOtpSent, emailVerified, panFile, isParsingBulk, setDashTab, setReturns, setPassword, handleWithdrawRequest, uploadDocument, setPolicyAccepted, isEditingProduct, setIsMobileMenuOpen, isProfileComplete, setSelectedCategories, storeSlug, phone, setPhone, setAadharS3Key, handleVerifyGstin, returns, handleLoginSubmit, setResetEmail, wallet, otpLoginCode, supportEmail, aadharUrl, setAadharUrl, panUrl, setPanUrl, - onboardingStep, setOnboardingStep, applicationId, setApplicationId, bankDetails, setBankDetails, pickupAddress, setPickupAddress, initialProduct, setInitialProduct, - pan, setPan, altPhone, setAltPhone, matchReg, setMatchReg - }; - - return ( - - {children} - - ); -}; diff --git a/src/index.css b/src/index.css deleted file mode 100644 index 7f30c28..0000000 --- a/src/index.css +++ /dev/null @@ -1,84 +0,0 @@ -@import 'bulma/css/bulma.css'; - -:root { - --trad-maroon: #671B26; - --trad-maroon-hover: #52141e; - --trad-bronze: #675C1B; - --trad-teal: #1B675C; - --trad-navy: #1B2667; - --trad-burgundy: #791B2C; - --trad-footer-bg: #791B2C; - --trad-bg: #FCF9F8; - --trad-surface: #ffffff; - --trad-border: #e6ded9; - --trad-text-main: #2b2523; - --trad-text-muted: #6e6561; - - --bulma-primary: #671B26; - --bulma-primary-h: 351deg; - --bulma-primary-s: 58%; - --bulma-primary-l: 25%; - --bulma-link: #671B26; - --bulma-body-background-color: #fcf9f8; - --bulma-body-family: 'Plus Jakarta Sans', 'Inter', sans-serif; -} - -[data-theme='light'], :root { - color-scheme: light; - --bulma-scheme-main: #fcf9f8; -} - -body { - font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; - background-color: var(--trad-bg); - color: var(--trad-text-main); -} - -.font-serif-trad { - font-family: 'Libre Caslon Text', Georgia, serif; -} - -.trad-badge-step { - display: inline-flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border-radius: 50%; - font-weight: 700; - font-size: 0.9rem; -} - -.trad-badge-step.is-active { - background-color: var(--trad-maroon); - color: #fff; -} - -.trad-badge-step.is-completed { - background-color: var(--trad-teal); - color: #fff; -} - -.trad-badge-step.is-pending { - background-color: #e5dfda; - color: #7a706b; -} - -.trad-card-interactive { - transition: all 0.2s ease-in-out; - border: 1px solid var(--trad-border); - background: #fff; - cursor: pointer; -} - -.trad-card-interactive:hover { - transform: translateY(-2px); - border-color: var(--trad-maroon); - box-shadow: 0 8px 24px rgba(103, 27, 38, 0.08); -} - -.trad-card-interactive.is-selected { - border-color: var(--trad-maroon); - background-color: #fdf5f5; - box-shadow: 0 0 0 2px var(--trad-maroon); -} diff --git a/src/main.tsx b/src/main.tsx deleted file mode 100644 index bef5202..0000000 --- a/src/main.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' - -createRoot(document.getElementById('root')!).render( - - - , -) diff --git a/src/setupTests.ts b/src/setupTests.ts deleted file mode 100644 index c44951a..0000000 --- a/src/setupTests.ts +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom' diff --git a/start.sh b/start.sh deleted file mode 100755 index a2c2d8c..0000000 --- a/start.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# start.sh - Script to run the React application locally - -# Navigate to the directory containing this script -cd "$(dirname "$0")" || exit - -echo "Starting React development server..." -npm run dev diff --git a/test-results/.last-run.json b/test-results/.last-run.json deleted file mode 100644 index cbcc1fb..0000000 --- a/test-results/.last-run.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "status": "passed", - "failedTests": [] -} \ No newline at end of file diff --git a/tsconfig.app.json b/tsconfig.app.json deleted file mode 100644 index 49c6746..0000000 --- a/tsconfig.app.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "es2023", - "lib": ["ES2023", "DOM"], - "module": "esnext", - "types": ["vite/client"], - "allowArbitraryExtensions": true, - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "noUnusedLocals": false, - "noUnusedParameters": false, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src"] -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 1ffef60..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] -} diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 8455dcb..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "es2023", - "lib": ["ES2023"], - "types": ["node"], - "skipLibCheck": true, - - /* Bundler mode */ - "module": "nodenext", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["vite.config.ts"] -} diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index d45cae6..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vite.dev/config/ -export default defineConfig({ - plugins: [ - react(), - ], -}) diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index 183542e..0000000 --- a/vitest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineConfig, mergeConfig } from 'vitest/config' -import viteConfig from './vite.config.ts' - -export default mergeConfig( - viteConfig, - defineConfig({ - test: { - globals: true, - environment: 'jsdom', - setupFiles: './src/setupTests.ts', - exclude: [ - '**/node_modules/**', - '**/dist/**', - '**/cypress/**', - '**/playwright/**', - 'playwright.config.ts' - ], - }, - }) -)