From 7c5e18a70022692039387844438e9675612f0e03 Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Thu, 4 Jan 2024 14:38:46 -0500 Subject: [PATCH 01/12] D-readme --- .../microservices/orders/tsconfig.json | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 examples_new/microservices/orders/tsconfig.json diff --git a/examples_new/microservices/orders/tsconfig.json b/examples_new/microservices/orders/tsconfig.json new file mode 100644 index 000000000..8e2f9e351 --- /dev/null +++ b/examples_new/microservices/orders/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From f6d1d78b4fb08e73748d08ac9cb6497c9ee7fe37 Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Thu, 4 Jan 2024 14:46:00 -0500 Subject: [PATCH 02/12] readme updated --- README.md | 159 ++++++++++++++++--------------- assets/codebase_visulization.png | Bin 0 -> 210748 bytes contributors.md | 8 +- 3 files changed, 90 insertions(+), 77 deletions(-) create mode 100644 assets/codebase_visulization.png diff --git a/README.md b/README.md index 69e6403a5..c504de2f7 100644 --- a/README.md +++ b/README.md @@ -7,29 +7,19 @@ ![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg) ![Release: 12.0](https://img.shields.io/badge/Release-12.0-brightgreen) - # Chronos - ### ⭐️ Star us on GitHub! ⭐️ + **Visit our website at [chronoslany.com](https://chronoslany.com/).** Chronos is a comprehensive developer tool that monitors the health and web traffic for containerized (Docker & Kubernetes) and non-containerized microservices communicated via REST APIs or gRPC, whether hosted locally or on Amazon Web Services (AWS). Use Chronos to see real-time data monitoring and receive automated notifications over Slack or email. - ## What's New? -### With Chronos 12.0: - -- Enhanced metrics visualization by integrating more interactive and adaptable Grafana charts for Docker and Kubernetes use cases. -- Achieved an 80% boost in test coverage by formulating comprehensive unit, integration, and end-to-end tests employing Jest and Selenium. -- Implemented Prometheus data scraping functionality for Docker containers, facilitating seamless metric collection and monitoring. -- Devised an immersive 3D visualization that effectively illustrates the Kubernetes cluster infrastructure, encompassing Namespace, Service, and Pod entities. This dynamic visualization provides developers and users with heightened insights into intricate resource allocation and configuration within the cluster. -- Streamlined operational effectiveness by coordinating CI/CD pipelines, automating testing workflows, and establishing deployment protocols, ultimately leading to accelerated development cycles and heightened dependability. -- Expanded Typescript coverage to enhance code quality and bolster application resilience. -- Updated the Docker and Kubernetes example READMEs with detailed instructions on configuring Prometheus and Grafana seamlessly. -- Enhanced clarity of instructions in the `@chronosmicro/tracker` NPM package's README, offering comprehensive guidance on utilizing the package to monitor individual applications effectively. +- Updated microservices example with +### With Chronos 13.0 Chronos @@ -38,26 +28,29 @@ Chronos is a comprehensive developer tool that monitors the health and web traff
**Previously implemented updates:** -- Added interactive charting to better visualize metrics and increase user engagement with their data -- Followed best test-driven development practices and increased testing with React Testing and Jest for the front end -- Overhauled user database security, mitigating database breaches and providing a safer experience -- Bug fixes and UI tweaks, creating a more pleasant user experience -- Updated outdated README instructions within the provided Docker, gRPC, Kubernetes, and microservices examples -- Revised README instructions for the `@chronosmicro/tracker` NPM package + +- Enhanced metrics visualization by integrating more interactive and adaptable Grafana charts for Docker and Kubernetes use cases. +- Achieved an 80% boost in test coverage by formulating comprehensive unit, integration, and end-to-end tests employing Jest and Selenium. +- Streamlined operational effectiveness by coordinating CI/CD pipelines, automating testing workflows, and establishing deployment protocols, ultimately leading to accelerated development cycles and heightened dependability. +- Updated the Docker and Kubernetes example READMEs with detailed instructions on configuring Prometheus and Grafana seamlessly. + +## Overview of the CodeBase + +- Instead of the typical folders & files view, a visual representation of the code is created. Below, it's showing the same repository, but instead of a directory structure, each file and folder as a circle: the circle’s color is the type of file, and the circle’s size represents the size of the file. See live demo
here. + codebase visulization ## Features - Cloud-Based Instances: - - Option to choose between cloud hosted services and local services, giving Chronos the ability to monitor instances and clusters on AWS EC2, ECS, and EKS platforms AWS + - Option to choose between cloud hosted services and local services, giving Chronos the ability to monitor instances and clusters on AWS EC2, ECS, and EKS platforms AWS - Local instances utilitizing `@chronosmicro/tracker` NPM package: - - Enables distributed tracing enabled across microservices applications - - Displays real-time temperature, speed, latency, and memory statistics for local services - - Displays and compares multiple microservice metrics in a single graph - - Allow Kubernetes and Docker monitoring via Prometheus server and Grafana visualization. - - Compatible with GraphQL - - Monitor an Apache Kafka cluster via the JMX Prometheus Exporter - - Supports PostgreSQL and MongoDB databases - + - Enables distributed tracing enabled across microservices applications + - Displays real-time temperature, speed, latency, and memory statistics for local services + - Displays and compares multiple microservice metrics in a single graph + - Allow Kubernetes and Docker monitoring via Prometheus server and Grafana visualization. + - Compatible with GraphQL + - Monitor an Apache Kafka cluster via the JMX Prometheus Exporter + - Supports PostgreSQL and MongoDB databases # Installation @@ -83,6 +76,7 @@ For more details on the NPM package and instructions for how to use it, please v ## Chronos Desktop Application + ### WSL2 Environment If you wish to launch the Electron Application in an WSL2 envirronment(Ubuntu) you may need the following commands for an Electron window to appear @@ -106,17 +100,22 @@ export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0" **NOTE: You must create your own user database** 1. Create a MongoDB database in which to store user information and insert it on line 2 within the [UserModel.ts](./electron/models/UserModel.ts) (_electron/models/UserModel.ts_) file. - - This database will privately store user information. -3. Once this is set up, you can create new users, log in, and have your data persist between sessions. + - This database will privately store user information. +2. Once this is set up, you can create new users, log in, and have your data persist between sessions. + # + ### Running the Chronos desktop app in development mode 1. From the root directory, run `npm install` 2. Run `npm run build` -3. Open a new terminal and run `npm run dev:app` to start the Webpack development server -4. Open a new terminal and run `npm run dev:electron` to start the Electron UI in development mode -. +3. Depends on the environment, run `npm audit fix` or `npm audit fix --force` if prompted +4. Open a new terminal and run `npm run dev:app` to start the Webpack development server +5. Open a new terminal and run `npm run dev:electron` to start the Electron UI in development mode + . + # + ### Packing the Chronos desktop app into an executable 1. From the root directory, run `npm run build` @@ -124,22 +123,23 @@ export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0" 3. Find the `chronos.app` executable inside the newly created `release-builds` folder in the root directory. # + # Examples We provide eight example applications for you to test out both the Chronos NPM package and the Chronos desktop application: - AWS - - [EC2 README](./examples/AWS/AWS-EC2/README.md) - - [ECS README](./examples/AWS/AWS-ECS/README.md) - - [EKS README](./examples/AWS/AWS-EKS/README.md) + - [EC2 README](./examples/AWS/AWS-EC2/README.md) + - [ECS README](./examples/AWS/AWS-ECS/README.md) + - [EKS README](./examples/AWS/AWS-EKS/README.md) - Docker - - [Docker README](./examples/docker/README.md) + - [Docker README](./examples/docker/README.md) - gRPC - - [gRPC README](./examples/gRPC/README.md) + - [gRPC README](./examples/gRPC/README.md) - Kubernetes - - [Kubernetes README](./examples/kubernetes/README.md) + - [Kubernetes README](./examples/kubernetes/README.md) - Microservices - - [Microservices README](./examples/microservices/README.md) + - [Microservices README](./examples/microservices/README.md) Additional documentation on how Chronos is used **in each example** can be found in the [Chronos NPM Package README](./chronos_npm_package/README.md). @@ -149,11 +149,12 @@ The `AWS` folder includes 3 example applications with instructions on how to dep - The ECS folder includes an web application ready to be containerized using Docker. The instruction shows how to deploy application to ECS using Docker CLI command, and it will be managed by Fargate services. - The EC2 folder includes a React/Redux/SQL web application ready to be containerized using Docker. The instruction shows how to deploy application using AWS Beanstalk and connect application to RDS database. Beanstalk service will generate EC2 instance. -- The EKS folder includes a containerized note taking app that uses a Mongo database as its persistent volume. The instructions show how to deploy this application on EKS, how to monitor with Prometheus & Opencost, and how to use Grafana to grab visualizations. +- The EKS folder includes a containerized note taking app that uses a Mongo database as its persistent volume. The instructions show how to deploy this application on EKS, how to monitor with Prometheus & Opencost, and how to use Grafana to grab visualizations. Refer to the [EC2 README](./examples/AWS/AWS-EC2/README.md), [ECS README](./examples/AWS/AWS-ECS/README.md), and [EKS README](./examples/AWS/AWS-EKS/README.md) example in the _AWS_ folder for more details. # + #### _Docker_ In the Docker folder within the `master` branch, we provide a sample _dockerized_ microservices application to test out Chronos and to apply distributed tracing across different containers for your testing convenience. @@ -161,14 +162,15 @@ In the DockerDocker files in their respective directories. A docker-compose.yml is in the root directory in case you'd like to deploy all services together. Refer to the [Docker README](./examples/docker/README.md) in the `docker` folder for more details. -# +# #### _gRPC_ The `gRPC` folder includes an HTML frontend and an Express server backend, as well as proto files necessary to build package definitions and make gRPC calls. The _reverse_proxy_ folder contains the server that requires in the clients, which contain methods and services defined by proto files. Refer to the [gRPC README](./examples/gRPC/README.md) in the `gRPC` folder for more details. + # #### _Kubernetes_ @@ -184,63 +186,68 @@ Refer to the [Kubernetes README](./examples/kubernetes/README.md) in the `kubern In the `microservices` folder, we provide a sample microservice application that successfully utilizes Chronos to apply all the powerful, built-in features of our monitoring tool. You can then visualize the data with the Electron app. Refer to the [microservices README](./examples/microservices/README.md) in the `microservices` folder for more details. + # # Testing We've created testing suites for Chronos with React Testing, Jest, and Selenium for unit, integration, and end-to-end tests - instructions on running them can be found in the [testing README](./__tests__/README.md). + # + ## Contributing -Development of Chronos is open source on GitHub through the tech accelerator OS Labs, and we are grateful to the community for contributing bug fixes and improvements. +Development of Chronos is open source on GitHub through the tech accelerator OS Labs, and we are grateful to the community for contributing bug fixes and improvements. Read our [contributing README](../../CONTRIBUTING.md) to learn how you can take part in improving Chronos. ### **Last Iterating Team** -#### Chronos 12.0 -- [Tyler Coryell](https://github.com/Tcoryell) -- [Edwin Leong](https://github.com/edwinlny) -- [Eisha Kaushal](https://github.com/eishakaushal) -- [Haoyu Liu](https://github.com/HaoyL666) +#### Chronos 13.0 +- [Elsa Holmgren](https://github.com/ekh88) +- [Mckenzie Morris](https://github.com/mckenzie-morris) +- [Kelly Chandler](https://github.com/kchandler44) +- [Sean Simson](https://github.com/seantokuzo) +- [Zhongyan Liang](https://github.com/ZhongyanLiang) #### Past [Contributors](contributors.md) -# -## Technologies - -- Electron -- React -- JavaScript -- TypeScript -- PostgreSQL -- MongoDB -- Node -- Express -- HTTP -- gRPC -- GraphQL -- Docker -- AWS -- Jest -- Webpack -- Material-UI -- Vis.js -- Plotly.js -- Apache Kafka -- Grafana -- Selenium -- Prometheus -- Github Action -- Github Action -- Kubernetes +# +## Technologies +![Electron.js](https://img.shields.io/badge/Electron-191970?style=for-the-badge&logo=Electron&logoColor=white) +![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB) +![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E) +![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white) +![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white) +![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white) +![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white) +![Express.js](https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge&logo=express&logoColor=%2361DAFB) +![HTTP](https://img.shields.io/badge/HTTP-394EFF?style=for-the-badge) +![gRPC](https://img.shields.io/badge/gRPC-394EFF?style=for-the-badge) +![GraphQL](https://img.shields.io/badge/-GraphQL-E10098?style=for-the-badge&logo=graphql&logoColor=white) +![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) +![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge&logo=amazon-aws&logoColor=white) +![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge&logo=jest&logoColor=white) +![Webpack](https://img.shields.io/badge/webpack-%238DD6F9.svg?style=for-the-badge&logo=webpack&logoColor=black) +![MUI](https://img.shields.io/badge/MUI-%230081CB.svg?style=for-the-badge&logo=mui&logoColor=white) +![vis.js](https://img.shields.io/badge/vis.js-3578E5?style=for-the-badge) +![Plotly](https://img.shields.io/badge/Plotly-%233F4F75.svg?style=for-the-badge&logo=plotly&logoColor=white) +![Apache Kafka](https://img.shields.io/badge/Apache%20Kafka-000?style=for-the-badge&logo=apachekafka) +![Grafana](https://img.shields.io/badge/grafana-%23F46800.svg?style=for-the-badge&logo=grafana&logoColor=white) +![Selenium](https://img.shields.io/badge/-selenium-%43B02A?style=for-the-badge&logo=selenium&logoColor=white) +![Prometheus](https://img.shields.io/badge/Prometheus-E6522C?style=for-the-badge&logo=Prometheus&logoColor=white) +![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge&logo=githubactions&logoColor=white) +![Threejs](https://img.shields.io/badge/threejs-black?style=for-the-badge&logo=three.js&logoColor=white) +![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge&logo=kubernetes&logoColor=white) +![TailwindCSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white) ## License [MIT](https://github.com/oslabs-beta/Chronos/blob/master/LICENSE.md) + # ###### Return to [Top](#chronos) diff --git a/assets/codebase_visulization.png b/assets/codebase_visulization.png new file mode 100644 index 0000000000000000000000000000000000000000..d615a750947762b2cb1eccda487e3d82ee734e07 GIT binary patch literal 210748 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�b20Nf7-EXpJADr`$X%LydM-& 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 wcG-y_?bd)eNym$*3?X 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

fnQVwYKx6UMKTcIZAJ@6#EmQ=)b3({rU=ahhSKO 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 Date: Thu, 4 Jan 2024 14:46:28 -0500 Subject: [PATCH 03/12] readme updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c504de2f7..5c7cea6b5 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Chronos is a comprehensive developer tool that monitors the health and web traff ## Overview of the CodeBase - Instead of the typical folders & files view, a visual representation of the code is created. Below, it's showing the same repository, but instead of a directory structure, each file and folder as a circle: the circle’s color is the type of file, and the circle’s size represents the size of the file. See live demo here. - codebase visulization + codebase visulization ## Features From 4ac607457c9fb4151eed5393bf410359aa348f1f Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Thu, 4 Jan 2024 15:15:26 -0500 Subject: [PATCH 04/12] readmenow --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5c7cea6b5..e818bdc9c 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,14 @@ - Chronos + Chronos +

![Build Passing](https://img.shields.io/badge/build-awesome-brightgreen) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/open-source-labs/Chronos) ![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg) -![Release: 12.0](https://img.shields.io/badge/Release-12.0-brightgreen) +![Release: 13.0](https://img.shields.io/badge/Release-12.0-brightgreen) + +
# Chronos @@ -54,7 +57,7 @@ Chronos is a comprehensive developer tool that monitors the health and web traff # Installation -This is for the latest Chronos **version 12.0 release**. +This is for the latest Chronos **version 13.0 release**. ## NPM Package From 573841d77839852e8157e614f6bf7f1ce5b2ebbc Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Thu, 4 Jan 2024 15:20:03 -0500 Subject: [PATCH 05/12] readmenow2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e818bdc9c..cb16a4cfe 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ - Chronos + Chronos
From ade6243defeb7ed65a8274b151971964bafa96f9 Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Fri, 5 Jan 2024 13:51:24 -0500 Subject: [PATCH 06/12] readme3 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cb16a4cfe..30bc349c4 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,8 @@ export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0" 2. Run `npm run build` 3. Depends on the environment, run `npm audit fix` or `npm audit fix --force` if prompted 4. Open a new terminal and run `npm run dev:app` to start the Webpack development server -5. Open a new terminal and run `npm run dev:electron` to start the Electron UI in development mode - . +5. Open a new terminal and run `npm run dev:electron` to start the Electron UI in development mode. +6. Refer to `Examples` sections below to spin up example applications. # @@ -202,7 +202,7 @@ We've created testing suites for Chronos with React Testing, Jest, and Selenium Development of Chronos is open source on GitHub through the tech accelerator OS Labs, and we are grateful to the community for contributing bug fixes and improvements. -Read our [contributing README](../../CONTRIBUTING.md) to learn how you can take part in improving Chronos. +Read our [contributing README](CONTRIBUTING.md) to learn how you can take part in improving Chronos. ### **Last Iterating Team** From 3ac0e427b618ee65c8695a6f6cad9baac1f26941 Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Fri, 5 Jan 2024 15:44:31 -0500 Subject: [PATCH 07/12] readme past version --- README.md | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 210 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 30bc349c4..c9b314468 100644 --- a/README.md +++ b/README.md @@ -204,15 +204,218 @@ Development of Chronos is open source on GitHub through the tech accelerator OS Read our [contributing README](CONTRIBUTING.md) to learn how you can take part in improving Chronos. -### **Last Iterating Team** +### **Iteration Log** -#### Chronos 13.0 +
Chronos 13.0 +
    +
    -- [Elsa Holmgren](https://github.com/ekh88) -- [Mckenzie Morris](https://github.com/mckenzie-morris) -- [Kelly Chandler](https://github.com/kchandler44) -- [Sean Simson](https://github.com/seantokuzo) -- [Zhongyan Liang](https://github.com/ZhongyanLiang) +Contributors: +[Elsa Holmgren](https://github.com/ekh88), +[Mckenzie Morris](https://github.com/mckenzie-morris), +[Kelly Chandler](https://github.com/kchandler44), +[Sean Simson](https://github.com/seantokuzo), +[Zhongyan Liang](https://github.com/ZhongyanLiang) + +
    +Updates: +
      +
    • TBD
    • +
    + +Version 13.0 Medium Article + +
+
+ +
Chronos 12.0 +
    +
    + +Contributors: +[Haoyu Liu](https://github.com/HaoyL666), +[Edwin Leong](https://github.com/edwinlny), +[Eisha Kaushal](https://github.com/eishakaushal), +[Tyler Coryell](https://github.com/Tcoryell) + +
    +Updates: +
      +
    • Grafana charting and visualizer
    • +
    • Increase in Prometheus and cAdvisor integration span
    • +
    • Increased testing coverage to include unit testing and Selenium-based, end-to-end testing
    • +
    • Integrated CI/CD which automates GitHub Action to run testing suites in order and create a publishing action to NPM Registry
    • +
    + +Version 12.0 Medium Article + +
+
+ +
Chronos 11.0 +
    +
    + +Contributors: +[Brisa Zhu](https://github.com/beezoo10), +[Lucie Seidler](https://github.com/LucieSeidler), +[Justin Poirier](https://github.com/jcpoirier20), +[Jeffrey Na](https://github.com/jeffreyNa), +[Kelsi Webb](https://github.com/kelsicw) + +
    +Updates: +
      +
    • Interactive charting which can display and compare metrics in rendered graphs
    • +
    • Increased user database security with user authorization to connect multiple
    • +
    • services and databases and have instances persist without having to reconnect
    • +
    • Improved documentation by adding ReadMes about how to initialize the app, how to use the given examples, and how to update config files
    • +
    • Updated NPM Package to ‘increase reliability and ease of navigation
    • +
    • Fixed bugs and improved test coverage
    • +
    + +Version 11.0 Medium Article + +
+
+ +
Chronos 10.0 +
    +
    + +Contributors: +[Brian Lim](https://github.com/brianlim89), +[Claire Tischuk](https://github.com/BoopdiBop), +[Lennon Stewart](https://github.com/noahoo7), +[Victor Ye](https://github.com/vctorye), + +
    +Updates: +
      +
    • Full user authentication integrating with a functional database which enables users to securely save their profile and data
    • +
    • Updated microservices, gRPC, and Dockerized app examples
    • +
    + +Version 10.0 Medium Article + +
+
+ +
Chronos 9.0 +
    +
    + +Contributors: +[Brian Lim](https://github.com/brianlim89), +[Claire Tischuk](https://github.com/BoopdiBop), +[Lennon Stewart](https://github.com/eishakaushal), +[Victor Ye](https://github.com/vctorye) + +
    +Updates: +
      +
    • Added AWS - Users of Chronos are now able to monitor and visualize containers running in Amazon’s Elastic Kubernetes Service (EKS)~Medium
    • +
    • Ability to monitor cost metrics through Opencast integration
    • +
    + +Version 9.0 Medium Article + +
+
+ +
Chronos 8.0 +
    +
    + +Contributors: +[Vince Ho](https://github.com/brianlim89), +[Matt Giant](https://github.com/BoopdiBop), +[Derek Lam](https://github.com/eishakaushal), +[Kit Loong Yee](https://github.com/vctorye) + +
    +Updates: +
      +
    • Rewrite microservice in a language with a higher level of support such as GO or Java
    • +
    • Use packages such as OpenTelementry to record data and export said data to an additional application like Zipkin or Prometheus
    • +
    • Purchase a license to one of the few monitoring tools that support gRPC and Node.js.
    • +
    + +Version 8.0 Medium Article + +
+
+ +
Chronos 7.0 +
    +
    + +Contributors: +[Yang Song](https://github.com/curiousyang), +[Giovanni Floreslovo](https://github.com/gfloresl), +[James Edwards](https://github.com/Fredwards), +[Alex Kolb](https://github.com/alexkolb1) + +
    +Updates: +
      +
    • Ability to filter out specific metrics using a query tool
    • +
    • Increased the number of metrics available from 12 to 100+
    • +
    • Options to filter metrics by category
    • +
    • Apache Kafka monitoring capabilities
    • +
    • Bug fixes and UI improvements
    • +
    + +Version 7.0 Medium Article + +
+
+ +
Chronos ?? +
    +
    + +Contributors: +[Tim Lee](https://github.com/timlee12), +[Taylor Zhang](https://github.com/taylrzhang), +[Snow Bai](https://github.com/xueapp), +[Roberto Meloni](https://github.com/RobertoRueMeloni) + +
    +Updates: +
      +
    • Created npm package to allow use of AWS services to be monitored with the application
    • +
    + +Medium Article + +
+
+ +
Chronos ?? +
    +
    + +Contributors: +[Gahl Peled](https://github.com/GP3-RS), +[Josh James](https://github.com/joshjames289), +[Elisa Nie](https://github.com/elisanie), +Troy Prejusa + +
    +Updates: +
      +
    • Distributed tracing across microservice example application
    • +
    • Compatible with GraphQL
    • +
    • Cross-Platform desktop application
    • +
    • Supports PostgresQL and MongoDB databases
    • +
    • Displays real-time metrics
    • +
    + +Medium Article + +
+
#### Past [Contributors](contributors.md) From 66f82d588c5a2e7c596727df7a533c1a4e3a65f8 Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Sat, 6 Jan 2024 09:18:35 -0500 Subject: [PATCH 08/12] readme latest --- README.md | 77 ++++++++++++------------------------------------------- 1 file changed, 17 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index c9b314468..0cf91bdca 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,9 @@ Chronos is a comprehensive developer tool that monitors the health and web traff ## What's New? -- Updated microservices example with +- new microservices app +- updated version history with past iteration changes +- Added codebase overview visulization ### With Chronos 13.0 @@ -80,7 +82,8 @@ For more details on the NPM package and instructions for how to use it, please v ## Chronos Desktop Application -### WSL2 Environment + + -### Running the Chronos desktop app in development mode +### Running the Chronos desktop app in development mode (WSL Incompatible) 1. From the root directory, run `npm install` 2. Run `npm run build` @@ -127,6 +120,16 @@ export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0" # +### Creating User Database + +**NOTE: You must create your own user database for extended features** + +1. Create a MongoDB database in which to store user information and insert it on line 2 within the [UserModel.ts](./electron/models/UserModel.ts) (_electron/models/UserModel.ts_) file. + - This database will privately store user information. +2. Once this is set up, you can create new users, log in, and have your data persist between sessions. + +# + # Examples We provide eight example applications for you to test out both the Chronos NPM package and the Chronos desktop application: @@ -371,52 +374,6 @@ Updates: -
Chronos ?? -
    -
    - -Contributors: -[Tim Lee](https://github.com/timlee12), -[Taylor Zhang](https://github.com/taylrzhang), -[Snow Bai](https://github.com/xueapp), -[Roberto Meloni](https://github.com/RobertoRueMeloni) - -
    -Updates: -
      -
    • Created npm package to allow use of AWS services to be monitored with the application
    • -
    - -Medium Article - -
-
- -
Chronos ?? -
    -
    - -Contributors: -[Gahl Peled](https://github.com/GP3-RS), -[Josh James](https://github.com/joshjames289), -[Elisa Nie](https://github.com/elisanie), -Troy Prejusa - -
    -Updates: -
      -
    • Distributed tracing across microservice example application
    • -
    • Compatible with GraphQL
    • -
    • Cross-Platform desktop application
    • -
    • Supports PostgresQL and MongoDB databases
    • -
    • Displays real-time metrics
    • -
    - -Medium Article - -
-
- #### Past [Contributors](contributors.md) # From 609e8566f1e2f14ce4e24ab14302676c6d700f85 Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Mon, 8 Jan 2024 16:48:35 -0500 Subject: [PATCH 09/12] main readme Monday --- README.md | 343 +++++++++--------- .../client/dist/assets/index-GXx520xc.css | 1 + .../client/dist/assets/index-hI43WCOc.js | 91 +++++ examples_new/docker/client/dist/index.html | 20 + 4 files changed, 278 insertions(+), 177 deletions(-) create mode 100644 examples_new/docker/client/dist/assets/index-GXx520xc.css create mode 100644 examples_new/docker/client/dist/assets/index-hI43WCOc.js create mode 100644 examples_new/docker/client/dist/index.html diff --git a/README.md b/README.md index 0cf91bdca..0fe17ae48 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,172 @@ Chronos is a comprehensive developer tool that monitors the health and web traff ## What's New? -- new microservices app -- updated version history with past iteration changes -- Added codebase overview visulization +### Chronos 13.0 + +
    +
    + +Contributors: +[Elsa Holmgren](https://github.com/ekh88), +[Mckenzie Morris](https://github.com/mckenzie-morris), +[Kelly Chandler](https://github.com/kchandler44), +[Sean Simson](https://github.com/seantokuzo), +[Zhongyan Liang](https://github.com/ZhongyanLiang) + +
    +Updates: +
      +
    • TBD
    • +
    + +Version 13.0 Medium Article + +
+ +### **Iteration Log** + +
Chronos 12.0 +
    +
    + +Contributors: +[Haoyu Liu](https://github.com/HaoyL666), +[Edwin Leong](https://github.com/edwinlny), +[Eisha Kaushal](https://github.com/eishakaushal), +[Tyler Coryell](https://github.com/Tcoryell) + +
    +Updates: +
      +
    • Grafana charting and visualizer
    • +
    • Increase in Prometheus and cAdvisor integration span
    • +
    • Increased testing coverage to include unit testing and Selenium-based, end-to-end testing
    • +
    • Integrated CI/CD which automates GitHub Action to run testing suites in order and create a publishing action to NPM Registry
    • +
    + +Version 12.0 Medium Article + +
+
+ +
Chronos 11.0 +
    +
    + +Contributors: +[Brisa Zhu](https://github.com/beezoo10), +[Lucie Seidler](https://github.com/LucieSeidler), +[Justin Poirier](https://github.com/jcpoirier20), +[Jeffrey Na](https://github.com/jeffreyNa), +[Kelsi Webb](https://github.com/kelsicw) + +
    +Updates: +
      +
    • Interactive charting which can display and compare metrics in rendered graphs
    • +
    • Increased user database security with user authorization to connect multiple
    • +
    • services and databases and have instances persist without having to reconnect
    • +
    • Improved documentation by adding ReadMes about how to initialize the app, how to use the given examples, and how to update config files
    • +
    • Updated NPM Package to ‘increase reliability and ease of navigation
    • +
    • Fixed bugs and improved test coverage
    • +
    + +Version 11.0 Medium Article + +
+
+ +
Chronos 10.0 +
    +
    + +Contributors: +[Brian Lim](https://github.com/brianlim89), +[Claire Tischuk](https://github.com/BoopdiBop), +[Lennon Stewart](https://github.com/noahoo7), +[Victor Ye](https://github.com/vctorye), + +
    +Updates: +
      +
    • Full user authentication integrating with a functional database which enables users to securely save their profile and data
    • +
    • Updated microservices, gRPC, and Dockerized app examples
    • +
    + +Version 10.0 Medium Article + +
+
+ +
Chronos 9.0 +
    +
    + +Contributors: +[Brian Lim](https://github.com/brianlim89), +[Claire Tischuk](https://github.com/BoopdiBop), +[Lennon Stewart](https://github.com/eishakaushal), +[Victor Ye](https://github.com/vctorye) + +
    +Updates: +
      +
    • Added AWS - Users of Chronos are now able to monitor and visualize containers running in Amazon’s Elastic Kubernetes Service (EKS)~Medium
    • +
    • Ability to monitor cost metrics through Opencast integration
    • +
    + +Version 9.0 Medium Article + +
+
+ +
Chronos 8.0 +
    +
    + +Contributors: +[Vince Ho](https://github.com/brianlim89), +[Matt Giant](https://github.com/BoopdiBop), +[Derek Lam](https://github.com/eishakaushal), +[Kit Loong Yee](https://github.com/vctorye) + +
    +Updates: +
      +
    • Rewrite microservice in a language with a higher level of support such as GO or Java
    • +
    • Use packages such as OpenTelementry to record data and export said data to an additional application like Zipkin or Prometheus
    • +
    • Purchase a license to one of the few monitoring tools that support gRPC and Node.js.
    • +
    + +Version 8.0 Medium Article + +
+
+ +
Chronos 7.0 +
    +
    + +Contributors: +[Yang Song](https://github.com/curiousyang), +[Giovanni Floreslovo](https://github.com/gfloresl), +[James Edwards](https://github.com/Fredwards), +[Alex Kolb](https://github.com/alexkolb1) + +
    +Updates: +
      +
    • Ability to filter out specific metrics using a query tool
    • +
    • Increased the number of metrics available from 12 to 100+
    • +
    • Options to filter metrics by category
    • +
    • Apache Kafka monitoring capabilities
    • +
    • Bug fixes and UI improvements
    • +
    + +Version 7.0 Medium Article + +
+
### With Chronos 13.0 @@ -32,13 +195,6 @@ Chronos is a comprehensive developer tool that monitors the health and web traff
-**Previously implemented updates:** - -- Enhanced metrics visualization by integrating more interactive and adaptable Grafana charts for Docker and Kubernetes use cases. -- Achieved an 80% boost in test coverage by formulating comprehensive unit, integration, and end-to-end tests employing Jest and Selenium. -- Streamlined operational effectiveness by coordinating CI/CD pipelines, automating testing workflows, and establishing deployment protocols, ultimately leading to accelerated development cycles and heightened dependability. -- Updated the Docker and Kubernetes example READMEs with detailed instructions on configuring Prometheus and Grafana seamlessly. - ## Overview of the CodeBase - Instead of the typical folders & files view, a visual representation of the code is created. Below, it's showing the same repository, but instead of a directory structure, each file and folder as a circle: the circle’s color is the type of file, and the circle’s size represents the size of the file. See live demo here. @@ -207,173 +363,6 @@ Development of Chronos is open source on GitHub through the tech accelerator OS Read our [contributing README](CONTRIBUTING.md) to learn how you can take part in improving Chronos. -### **Iteration Log** - -
Chronos 13.0 -
    -
    - -Contributors: -[Elsa Holmgren](https://github.com/ekh88), -[Mckenzie Morris](https://github.com/mckenzie-morris), -[Kelly Chandler](https://github.com/kchandler44), -[Sean Simson](https://github.com/seantokuzo), -[Zhongyan Liang](https://github.com/ZhongyanLiang) - -
    -Updates: -
      -
    • TBD
    • -
    - -Version 13.0 Medium Article - -
-
- -
Chronos 12.0 -
    -
    - -Contributors: -[Haoyu Liu](https://github.com/HaoyL666), -[Edwin Leong](https://github.com/edwinlny), -[Eisha Kaushal](https://github.com/eishakaushal), -[Tyler Coryell](https://github.com/Tcoryell) - -
    -Updates: -
      -
    • Grafana charting and visualizer
    • -
    • Increase in Prometheus and cAdvisor integration span
    • -
    • Increased testing coverage to include unit testing and Selenium-based, end-to-end testing
    • -
    • Integrated CI/CD which automates GitHub Action to run testing suites in order and create a publishing action to NPM Registry
    • -
    - -Version 12.0 Medium Article - -
-
- -
Chronos 11.0 -
    -
    - -Contributors: -[Brisa Zhu](https://github.com/beezoo10), -[Lucie Seidler](https://github.com/LucieSeidler), -[Justin Poirier](https://github.com/jcpoirier20), -[Jeffrey Na](https://github.com/jeffreyNa), -[Kelsi Webb](https://github.com/kelsicw) - -
    -Updates: -
      -
    • Interactive charting which can display and compare metrics in rendered graphs
    • -
    • Increased user database security with user authorization to connect multiple
    • -
    • services and databases and have instances persist without having to reconnect
    • -
    • Improved documentation by adding ReadMes about how to initialize the app, how to use the given examples, and how to update config files
    • -
    • Updated NPM Package to ‘increase reliability and ease of navigation
    • -
    • Fixed bugs and improved test coverage
    • -
    - -Version 11.0 Medium Article - -
-
- -
Chronos 10.0 -
    -
    - -Contributors: -[Brian Lim](https://github.com/brianlim89), -[Claire Tischuk](https://github.com/BoopdiBop), -[Lennon Stewart](https://github.com/noahoo7), -[Victor Ye](https://github.com/vctorye), - -
    -Updates: -
      -
    • Full user authentication integrating with a functional database which enables users to securely save their profile and data
    • -
    • Updated microservices, gRPC, and Dockerized app examples
    • -
    - -Version 10.0 Medium Article - -
-
- -
Chronos 9.0 -
    -
    - -Contributors: -[Brian Lim](https://github.com/brianlim89), -[Claire Tischuk](https://github.com/BoopdiBop), -[Lennon Stewart](https://github.com/eishakaushal), -[Victor Ye](https://github.com/vctorye) - -
    -Updates: -
      -
    • Added AWS - Users of Chronos are now able to monitor and visualize containers running in Amazon’s Elastic Kubernetes Service (EKS)~Medium
    • -
    • Ability to monitor cost metrics through Opencast integration
    • -
    - -Version 9.0 Medium Article - -
-
- -
Chronos 8.0 -
    -
    - -Contributors: -[Vince Ho](https://github.com/brianlim89), -[Matt Giant](https://github.com/BoopdiBop), -[Derek Lam](https://github.com/eishakaushal), -[Kit Loong Yee](https://github.com/vctorye) - -
    -Updates: -
      -
    • Rewrite microservice in a language with a higher level of support such as GO or Java
    • -
    • Use packages such as OpenTelementry to record data and export said data to an additional application like Zipkin or Prometheus
    • -
    • Purchase a license to one of the few monitoring tools that support gRPC and Node.js.
    • -
    - -Version 8.0 Medium Article - -
-
- -
Chronos 7.0 -
    -
    - -Contributors: -[Yang Song](https://github.com/curiousyang), -[Giovanni Floreslovo](https://github.com/gfloresl), -[James Edwards](https://github.com/Fredwards), -[Alex Kolb](https://github.com/alexkolb1) - -
    -Updates: -
      -
    • Ability to filter out specific metrics using a query tool
    • -
    • Increased the number of metrics available from 12 to 100+
    • -
    • Options to filter metrics by category
    • -
    • Apache Kafka monitoring capabilities
    • -
    • Bug fixes and UI improvements
    • -
    - -Version 7.0 Medium Article - -
-
- #### Past [Contributors](contributors.md) # diff --git a/examples_new/docker/client/dist/assets/index-GXx520xc.css b/examples_new/docker/client/dist/assets/index-GXx520xc.css new file mode 100644 index 000000000..01a7b109c --- /dev/null +++ b/examples_new/docker/client/dist/assets/index-GXx520xc.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-\[-50px\]{bottom:-50px}.left-0{left:0}.left-\[-50px\]{left:-50px}.right-4{right:1rem}.right-\[-50px\]{right:-50px}.top-0{top:0}.top-14{top:3.5rem}.top-\[-50px\]{top:-50px}.m-2{margin:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.flex{display:flex}.h-\[100px\]{height:100px}.h-screen{height:100vh}.max-h-\[100vh\]{max-height:100vh}.w-\[100px\]{width:100px}.w-\[85\%\]{width:85%}.w-full{width:100%}.min-w-\[150px\]{min-width:150px}.min-w-\[250px\]{min-width:250px}@keyframes rotate1{0%{transform:translate(0) rotate(0)}25%{transform:translateY(285%) rotate(.25turn)}50%{transform:translate(-410%,285%) rotate(.5turn)}75%{transform:translate(-410%) rotate(.75turn)}to{transform:translate(0) rotate(1turn)}}.animate-rotate1{animation:rotate1 8s linear infinite}@keyframes rotate2{0%{transform:translate(0) rotate(-0turn)}25%{transform:translateY(-285%) rotate(-.25turn)}50%{transform:translate(410%,-285%) rotate(-.5turn)}75%{transform:translate(410%) rotate(-.75turn)}to{transform:translate(0) rotate(-1turn)}}.animate-rotate2{animation:rotate2 8s linear infinite}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-bl-\[130px\]{border-bottom-left-radius:130px}.rounded-bl-\[500px\]{border-bottom-left-radius:500px}.rounded-br-\[200px\]{border-bottom-right-radius:200px}.rounded-br-\[530px\]{border-bottom-right-radius:530px}.rounded-tl-\[150px\]{border-top-left-radius:150px}.rounded-tl-\[620px\]{border-top-left-radius:620px}.rounded-tr-\[120px\]{border-top-right-radius:120px}.rounded-tr-\[420px\]{border-top-right-radius:420px}.border-2{border-width:2px}.border-\[1px\]{border-width:1px}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-dark{--tw-border-opacity: 1;border-color:rgb(14 14 14 / var(--tw-border-opacity))}.border-light{--tw-border-opacity: 1;border-color:rgb(253 253 253 / var(--tw-border-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.bg-blue-400\/50{background-color:#60a5fa80}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-dark{--tw-bg-opacity: 1;background-color:rgb(14 14 14 / var(--tw-bg-opacity))}.bg-light{--tw-bg-opacity: 1;background-color:rgb(253 253 253 / var(--tw-bg-opacity))}.bg-lime-600{--tw-bg-opacity: 1;background-color:rgb(101 163 13 / var(--tw-bg-opacity))}.bg-white\/20{background-color:#fff3}.bg-white\/40{background-color:#fff6}.bg-white\/70{background-color:#ffffffb3}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-20{padding-left:5rem;padding-right:5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-6xl{font-size:3.75rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.text-dark{--tw-text-opacity: 1;color:rgb(14 14 14 / var(--tw-text-opacity))}.text-light{--tw-text-opacity: 1;color:rgb(253 253 253 / var(--tw-text-opacity))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity))}.shadow-blkSm{--tw-shadow: 2px 2px 6px rgba(0, 0, 0, .35), 3px 3px 6px rgba(0, 0, 0, .25);--tw-shadow-colored: 2px 2px 6px var(--tw-shadow-color), 3px 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-insetLight{--tw-shadow: inset 3px 3px 6px #ffffff, inset -3px -3px 3px #aeaeae;--tw-shadow-colored: inset 3px 3px 6px var(--tw-shadow-color), inset -3px -3px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black\/5{--tw-ring-color: rgb(0 0 0 / .05)}.backdrop-blur-lg{--tw-backdrop-blur: blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}*{box-sizing:border-box}:root{font-family:Rubik,Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{width:100%;margin:0}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:shadow-blkSm:hover{--tw-shadow: 2px 2px 6px rgba(0, 0, 0, .35), 3px 3px 6px rgba(0, 0, 0, .25);--tw-shadow-colored: 2px 2px 6px var(--tw-shadow-color), 3px 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)} diff --git a/examples_new/docker/client/dist/assets/index-hI43WCOc.js b/examples_new/docker/client/dist/assets/index-hI43WCOc.js new file mode 100644 index 000000000..640f108a6 --- /dev/null +++ b/examples_new/docker/client/dist/assets/index-hI43WCOc.js @@ -0,0 +1,91 @@ +function Nd(e,t){for(var n=0;nr[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function _d(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Na={exports:{}},Dl={},_a={exports:{}},j={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wr=Symbol.for("react.element"),Pd=Symbol.for("react.portal"),Rd=Symbol.for("react.fragment"),Od=Symbol.for("react.strict_mode"),Td=Symbol.for("react.profiler"),Ld=Symbol.for("react.provider"),zd=Symbol.for("react.context"),jd=Symbol.for("react.forward_ref"),Id=Symbol.for("react.suspense"),Fd=Symbol.for("react.memo"),Dd=Symbol.for("react.lazy"),Ju=Symbol.iterator;function Ud(e){return e===null||typeof e!="object"?null:(e=Ju&&e[Ju]||e["@@iterator"],typeof e=="function"?e:null)}var Pa={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ra=Object.assign,Oa={};function kn(e,t,n){this.props=e,this.context=t,this.refs=Oa,this.updater=n||Pa}kn.prototype.isReactComponent={};kn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): 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")};kn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ta(){}Ta.prototype=kn.prototype;function Hi(e,t,n){this.props=e,this.context=t,this.refs=Oa,this.updater=n||Pa}var Vi=Hi.prototype=new Ta;Vi.constructor=Hi;Ra(Vi,kn.prototype);Vi.isPureReactComponent=!0;var Xu=Array.isArray,La=Object.prototype.hasOwnProperty,Wi={current:null},za={key:!0,ref:!0,__self:!0,__source:!0};function ja(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)La.call(t,r)&&!za.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,ee=P[G];if(0>>1;Gl(io,z))ztl(Tr,io)?(P[G]=Tr,P[zt]=z,G=zt):(P[G]=io,P[Lt]=z,G=Lt);else if(ztl(Tr,z))P[G]=Tr,P[zt]=z,G=zt;else break e}}return L}function l(P,L){var z=P.sortIndex-L.sortIndex;return z!==0?z:P.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],f=1,c=null,m=3,S=!1,v=!1,y=!1,E=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function h(P){for(var L=n(a);L!==null;){if(L.callback===null)r(a);else if(L.startTime<=P)r(a),L.sortIndex=L.expirationTime,t(s,L);else break;L=n(a)}}function w(P){if(y=!1,h(P),!v)if(n(s)!==null)v=!0,lo(N);else{var L=n(a);L!==null&&oo(w,L.startTime-P)}}function N(P,L){v=!1,y&&(y=!1,p(T),T=-1),S=!0;var z=m;try{for(h(L),c=n(s);c!==null&&(!(c.expirationTime>L)||P&&!je());){var G=c.callback;if(typeof G=="function"){c.callback=null,m=c.priorityLevel;var ee=G(c.expirationTime<=L);L=e.unstable_now(),typeof ee=="function"?c.callback=ee:c===n(s)&&r(s),h(L)}else r(s);c=n(s)}if(c!==null)var Or=!0;else{var Lt=n(a);Lt!==null&&oo(w,Lt.startTime-L),Or=!1}return Or}finally{c=null,m=z,S=!1}}var R=!1,O=null,T=-1,K=5,I=-1;function je(){return!(e.unstable_now()-IP||125G?(P.sortIndex=z,t(a,P),n(s)===null&&P===n(a)&&(y?(p(T),T=-1):y=!0,oo(w,z-G))):(P.sortIndex=ee,t(s,P),v||S||(v=!0,lo(N))),P},e.unstable_shouldYield=je,e.unstable_wrapCallback=function(P){var L=m;return function(){var z=m;m=L;try{return P.apply(this,arguments)}finally{m=z}}}})(Ua);Da.exports=Ua;var Xd=Da.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Aa=C,ke=Xd;function x(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ho=Object.prototype.hasOwnProperty,Yd=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,qu={},Zu={};function qd(e){return Ho.call(Zu,e)?!0:Ho.call(qu,e)?!1:Yd.test(e)?Zu[e]=!0:(qu[e]=!0,!1)}function Zd(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function bd(e,t,n,r){if(t===null||typeof t>"u"||Zd(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function pe(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var oe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){oe[e]=new pe(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];oe[t]=new pe(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){oe[e]=new pe(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){oe[e]=new pe(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){oe[e]=new pe(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){oe[e]=new pe(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){oe[e]=new pe(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){oe[e]=new pe(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){oe[e]=new pe(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ki=/[\-:]([a-z])/g;function Gi(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Ki,Gi);oe[t]=new pe(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Ki,Gi);oe[t]=new pe(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Ki,Gi);oe[t]=new pe(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){oe[e]=new pe(e,1,!1,e.toLowerCase(),null,!1,!1)});oe.xlinkHref=new pe("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){oe[e]=new pe(e,1,!1,e.toLowerCase(),null,!0,!0)});function Ji(e,t,n,r){var l=oe.hasOwnProperty(t)?oe[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` +`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{ao=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Bn(e):""}function ep(e){switch(e.tag){case 5:return Bn(e.type);case 16:return Bn("Lazy");case 13:return Bn("Suspense");case 19:return Bn("SuspenseList");case 0:case 2:case 15:return e=co(e.type,!1),e;case 11:return e=co(e.type.render,!1),e;case 1:return e=co(e.type,!0),e;default:return""}}function Ko(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case qt:return"Fragment";case Yt:return"Portal";case Vo:return"Profiler";case Xi:return"StrictMode";case Wo:return"Suspense";case Qo:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case $a:return(e.displayName||"Context")+".Consumer";case Ba:return(e._context.displayName||"Context")+".Provider";case Yi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case qi:return t=e.displayName||null,t!==null?t:Ko(e.type)||"Memo";case ut:t=e._payload,e=e._init;try{return Ko(e(t))}catch{}}return null}function tp(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ko(t);case 8:return t===Xi?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Nt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Va(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function np(e){var t=Va(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function jr(e){e._valueTracker||(e._valueTracker=np(e))}function Wa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Va(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function al(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Go(e,t){var n=t.checked;return W({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function es(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Nt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Qa(e,t){t=t.checked,t!=null&&Ji(e,"checked",t,!1)}function Jo(e,t){Qa(e,t);var n=Nt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Xo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Xo(e,t.type,Nt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ts(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Xo(e,t,n){(t!=="number"||al(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var $n=Array.isArray;function an(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Ir.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function er(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Wn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rp=["Webkit","ms","Moz","O"];Object.keys(Wn).forEach(function(e){rp.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Wn[t]=Wn[e]})});function Xa(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Wn.hasOwnProperty(e)&&Wn[e]?(""+t).trim():t+"px"}function Ya(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Xa(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var lp=W({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Zo(e,t){if(t){if(lp[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(x(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(x(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(x(61))}if(t.style!=null&&typeof t.style!="object")throw Error(x(62))}}function bo(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ei=null;function Zi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ti=null,cn=null,fn=null;function ls(e){if(e=Er(e)){if(typeof ti!="function")throw Error(x(280));var t=e.stateNode;t&&(t=$l(t),ti(e.stateNode,e.type,t))}}function qa(e){cn?fn?fn.push(e):fn=[e]:cn=e}function Za(){if(cn){var e=cn,t=fn;if(fn=cn=null,ls(e),t)for(e=0;e>>=0,e===0?32:31-(mp(e)/yp|0)|0}var Fr=64,Dr=4194304;function Hn(e){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: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=Hn(u):(o&=i,o!==0&&(r=Hn(o)))}else i=n&~l,i!==0?r=Hn(i):o!==0&&(r=Hn(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Sr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ae(t),e[t]=n}function Sp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Kn),ps=" ",hs=!1;function gc(e,t){switch(e){case"keyup":return Jp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Zt=!1;function Yp(e,t){switch(e){case"compositionend":return wc(t);case"keypress":return t.which!==32?null:(hs=!0,ps);case"textInput":return e=t.data,e===ps&&hs?null:e;default:return null}}function qp(e,t){if(Zt)return e==="compositionend"||!iu&&gc(e,t)?(e=yc(),qr=ru=ft=null,Zt=!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}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=gs(n)}}function kc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cc(){for(var e=window,t=al();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=al(e.document)}return t}function uu(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")}function i1(e){var t=Cc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&kc(n.ownerDocument.documentElement,n)){if(r!==null&&uu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=ws(n,o);var i=ws(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,bt=null,ui=null,Jn=null,si=!1;function Ss(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;si||bt==null||bt!==al(r)||(r=bt,"selectionStart"in r&&uu(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}),Jn&&ir(Jn,r)||(Jn=r,r=yl(ui,"onSelect"),0nn||(e.current=hi[nn],hi[nn]=null,nn--)}function A(e,t){nn++,hi[nn]=e.current,e.current=t}var _t={},ae=Rt(_t),ye=Rt(!1),Bt=_t;function yn(e,t){var n=e.type.contextTypes;if(!n)return _t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function ve(e){return e=e.childContextTypes,e!=null}function gl(){B(ye),B(ae)}function Ps(e,t,n){if(ae.current!==_t)throw Error(x(168));A(ae,t),A(ye,n)}function jc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(x(108,tp(e)||"Unknown",l));return W({},n,r)}function wl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||_t,Bt=ae.current,A(ae,e),A(ye,ye.current),!0}function Rs(e,t,n){var r=e.stateNode;if(!r)throw Error(x(169));n?(e=jc(e,t,Bt),r.__reactInternalMemoizedMergedChildContext=e,B(ye),B(ae),A(ae,e)):B(ye),A(ye,n)}var Xe=null,Hl=!1,No=!1;function Ic(e){Xe===null?Xe=[e]:Xe.push(e)}function g1(e){Hl=!0,Ic(e)}function Ot(){if(!No&&Xe!==null){No=!0;var e=0,t=U;try{var n=Xe;for(U=1;e>=i,l-=i,Ye=1<<32-Ae(t)+l|n<T?(K=O,O=null):K=O.sibling;var I=m(p,O,h[T],w);if(I===null){O===null&&(O=K);break}e&&O&&I.alternate===null&&t(p,O),d=o(I,d,T),R===null?N=I:R.sibling=I,R=I,O=K}if(T===h.length)return n(p,O),$&&jt(p,T),N;if(O===null){for(;TT?(K=O,O=null):K=O.sibling;var je=m(p,O,I.value,w);if(je===null){O===null&&(O=K);break}e&&O&&je.alternate===null&&t(p,O),d=o(je,d,T),R===null?N=je:R.sibling=je,R=je,O=K}if(I.done)return n(p,O),$&&jt(p,T),N;if(O===null){for(;!I.done;T++,I=h.next())I=c(p,I.value,w),I!==null&&(d=o(I,d,T),R===null?N=I:R.sibling=I,R=I);return $&&jt(p,T),N}for(O=r(p,O);!I.done;T++,I=h.next())I=S(O,p,T,I.value,w),I!==null&&(e&&I.alternate!==null&&O.delete(I.key===null?T:I.key),d=o(I,d,T),R===null?N=I:R.sibling=I,R=I);return e&&O.forEach(function(On){return t(p,On)}),$&&jt(p,T),N}function E(p,d,h,w){if(typeof h=="object"&&h!==null&&h.type===qt&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case zr:e:{for(var N=h.key,R=d;R!==null;){if(R.key===N){if(N=h.type,N===qt){if(R.tag===7){n(p,R.sibling),d=l(R,h.props.children),d.return=p,p=d;break e}}else if(R.elementType===N||typeof N=="object"&&N!==null&&N.$$typeof===ut&&Fs(N)===R.type){n(p,R.sibling),d=l(R,h.props),d.ref=Dn(p,R,h),d.return=p,p=d;break e}n(p,R);break}else t(p,R);R=R.sibling}h.type===qt?(d=Mt(h.props.children,p.mode,w,h.key),d.return=p,p=d):(w=ol(h.type,h.key,h.props,null,p.mode,w),w.ref=Dn(p,d,h),w.return=p,p=w)}return i(p);case Yt:e:{for(R=h.key;d!==null;){if(d.key===R)if(d.tag===4&&d.stateNode.containerInfo===h.containerInfo&&d.stateNode.implementation===h.implementation){n(p,d.sibling),d=l(d,h.children||[]),d.return=p,p=d;break e}else{n(p,d);break}else t(p,d);d=d.sibling}d=jo(h,p.mode,w),d.return=p,p=d}return i(p);case ut:return R=h._init,E(p,d,R(h._payload),w)}if($n(h))return v(p,d,h,w);if(Ln(h))return y(p,d,h,w);Vr(p,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,d!==null&&d.tag===6?(n(p,d.sibling),d=l(d,h),d.return=p,p=d):(n(p,d),d=zo(h,p.mode,w),d.return=p,p=d),i(p)):n(p,d)}return E}var gn=Hc(!0),Vc=Hc(!1),kr={},Ke=Rt(kr),cr=Rt(kr),fr=Rt(kr);function Ut(e){if(e===kr)throw Error(x(174));return e}function yu(e,t){switch(A(fr,t),A(cr,e),A(Ke,kr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:qo(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=qo(t,e)}B(Ke),A(Ke,t)}function wn(){B(Ke),B(cr),B(fr)}function Wc(e){Ut(fr.current);var t=Ut(Ke.current),n=qo(t,e.type);t!==n&&(A(cr,e),A(Ke,n))}function vu(e){cr.current===e&&(B(Ke),B(cr))}var H=Rt(0);function Nl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var _o=[];function gu(){for(var e=0;e<_o.length;e++)_o[e]._workInProgressVersionPrimary=null;_o.length=0}var el=lt.ReactCurrentDispatcher,Po=lt.ReactCurrentBatchConfig,Ht=0,V=null,Z=null,te=null,_l=!1,Xn=!1,dr=0,S1=0;function ie(){throw Error(x(321))}function wu(e,t){if(t===null)return!1;for(var n=0;nn?n:4,e(!0);var r=Po.transition;Po.transition={};try{e(!1),t()}finally{U=n,Po.transition=r}}function uf(){return ze().memoizedState}function E1(e,t,n){var r=xt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},sf(e))af(t,n);else if(n=Ac(e,t,n,r),n!==null){var l=fe();Me(n,e,r,l),cf(n,t,r)}}function k1(e,t,n){var r=xt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(sf(e))af(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,Be(u,i)){var s=t.interleaved;s===null?(l.next=l,hu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Ac(e,t,l,r),n!==null&&(l=fe(),Me(n,e,r,l),cf(n,t,r))}}function sf(e){var t=e.alternate;return e===V||t!==null&&t===V}function af(e,t){Xn=_l=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function cf(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eu(e,n)}}var Pl={readContext:Le,useCallback:ie,useContext:ie,useEffect:ie,useImperativeHandle:ie,useInsertionEffect:ie,useLayoutEffect:ie,useMemo:ie,useReducer:ie,useRef:ie,useState:ie,useDebugValue:ie,useDeferredValue:ie,useTransition:ie,useMutableSource:ie,useSyncExternalStore:ie,useId:ie,unstable_isNewReconciler:!1},C1={readContext:Le,useCallback:function(e,t){return He().memoizedState=[e,t===void 0?null:t],e},useContext:Le,useEffect:Us,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,tl(4194308,4,tf.bind(null,t,e),n)},useLayoutEffect:function(e,t){return tl(4194308,4,e,t)},useInsertionEffect:function(e,t){return tl(4,2,e,t)},useMemo:function(e,t){var n=He();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=He();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=E1.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=He();return e={current:e},t.memoizedState=e},useState:Ds,useDebugValue:ku,useDeferredValue:function(e){return He().memoizedState=e},useTransition:function(){var e=Ds(!1),t=e[0];return e=x1.bind(null,e[1]),He().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=V,l=He();if($){if(n===void 0)throw Error(x(407));n=n()}else{if(n=t(),ne===null)throw Error(x(349));Ht&30||Gc(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Us(Xc.bind(null,r,o,e),[e]),r.flags|=2048,hr(9,Jc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=He(),t=ne.identifierPrefix;if($){var n=qe,r=Ye;n=(r&~(1<<32-Ae(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=dr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ve]=t,e[ar]=r,wf(e,t,!1,!1),t.stateNode=e;e:{switch(i=bo(n,r),n){case"dialog":M("cancel",e),M("close",e),l=r;break;case"iframe":case"object":case"embed":M("load",e),l=r;break;case"video":case"audio":for(l=0;lxn&&(t.flags|=128,r=!0,Un(o,!1),t.lanes=4194304)}else{if(!r)if(e=Nl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Un(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!$)return ue(t),null}else 2*J()-o.renderingStartTime>xn&&n!==1073741824&&(t.flags|=128,r=!0,Un(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=H.current,A(H,r?n&1|2:n&1),t):(ue(t),null);case 22:case 23:return Ou(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?we&1073741824&&(ue(t),t.subtreeFlags&6&&(t.flags|=8192)):ue(t),null;case 24:return null;case 25:return null}throw Error(x(156,t.tag))}function z1(e,t){switch(au(t),t.tag){case 1:return ve(t.type)&&gl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return wn(),B(ye),B(ae),gu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return vu(t),null;case 13:if(B(H),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(x(340));vn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(H),null;case 4:return wn(),null;case 10:return pu(t.type._context),null;case 22:case 23:return Ou(),null;case 24:return null;default:return null}}var Qr=!1,se=!1,j1=typeof WeakSet=="function"?WeakSet:Set,_=null;function un(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Q(e,t,r)}else n.current=null}function _i(e,t,n){try{n()}catch(r){Q(e,t,r)}}var Ks=!1;function I1(e,t){if(ai=hl,e=Cc(),uu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,f=0,c=e,m=null;t:for(;;){for(var S;c!==n||l!==0&&c.nodeType!==3||(u=i+l),c!==o||r!==0&&c.nodeType!==3||(s=i+r),c.nodeType===3&&(i+=c.nodeValue.length),(S=c.firstChild)!==null;)m=c,c=S;for(;;){if(c===e)break t;if(m===n&&++a===l&&(u=i),m===o&&++f===r&&(s=i),(S=c.nextSibling)!==null)break;c=m,m=c.parentNode}c=S}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(ci={focusedElem:e,selectionRange:n},hl=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var v=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var y=v.memoizedProps,E=v.memoizedState,p=t.stateNode,d=p.getSnapshotBeforeUpdate(t.elementType===t.type?y:Fe(t.type,y),E);p.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var h=t.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(x(163))}}catch(w){Q(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return v=Ks,Ks=!1,v}function Yn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&_i(t,n,o)}l=l.next}while(l!==r)}}function Ql(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Pi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Ef(e){var t=e.alternate;t!==null&&(e.alternate=null,Ef(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ve],delete t[ar],delete t[pi],delete t[y1],delete t[v1])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function kf(e){return e.tag===5||e.tag===3||e.tag===4}function Gs(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||kf(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.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ri(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=vl));else if(r!==4&&(e=e.child,e!==null))for(Ri(e,t,n),e=e.sibling;e!==null;)Ri(e,t,n),e=e.sibling}function Oi(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&&(e=e.child,e!==null))for(Oi(e,t,n),e=e.sibling;e!==null;)Oi(e,t,n),e=e.sibling}var re=null,De=!1;function ot(e,t,n){for(n=n.child;n!==null;)Cf(e,t,n),n=n.sibling}function Cf(e,t,n){if(Qe&&typeof Qe.onCommitFiberUnmount=="function")try{Qe.onCommitFiberUnmount(Ul,n)}catch{}switch(n.tag){case 5:se||un(n,t);case 6:var r=re,l=De;re=null,ot(e,t,n),re=r,De=l,re!==null&&(De?(e=re,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):re.removeChild(n.stateNode));break;case 18:re!==null&&(De?(e=re,n=n.stateNode,e.nodeType===8?Co(e.parentNode,n):e.nodeType===1&&Co(e,n),lr(e)):Co(re,n.stateNode));break;case 4:r=re,l=De,re=n.stateNode.containerInfo,De=!0,ot(e,t,n),re=r,De=l;break;case 0:case 11:case 14:case 15:if(!se&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&_i(n,t,i),l=l.next}while(l!==r)}ot(e,t,n);break;case 1:if(!se&&(un(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Q(n,t,u)}ot(e,t,n);break;case 21:ot(e,t,n);break;case 22:n.mode&1?(se=(r=se)||n.memoizedState!==null,ot(e,t,n),se=r):ot(e,t,n);break;default:ot(e,t,n)}}function Js(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new j1),t.forEach(function(r){var l=V1.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Ie(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*D1(r/1960))-r,10e?16:e,dt===null)var r=!1;else{if(e=dt,dt=null,Tl=0,D&6)throw Error(x(331));var l=D;for(D|=4,_=e.current;_!==null;){var o=_,i=o.child;if(_.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-Pu?At(e,0):_u|=n),ge(e,t)}function zf(e,t){t===0&&(e.mode&1?(t=Dr,Dr<<=1,!(Dr&130023424)&&(Dr=4194304)):t=1);var n=fe();e=nt(e,t),e!==null&&(Sr(e,t,n),ge(e,n))}function H1(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),zf(e,n)}function V1(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(x(314))}r!==null&&r.delete(t),zf(e,n)}var jf;jf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ye.current)me=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return me=!1,T1(e,t,n);me=!!(e.flags&131072)}else me=!1,$&&t.flags&1048576&&Fc(t,xl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;nl(e,t),e=t.pendingProps;var l=yn(t,ae.current);pn(t,n),l=Su(null,t,r,e,l,n);var o=xu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ve(r)?(o=!0,wl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,mu(t),l.updater=Vl,t.stateNode=l,l._reactInternals=t,wi(t,r,e,n),t=Ei(null,t,r,!0,o,n)):(t.tag=0,$&&o&&su(t),ce(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(nl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Q1(r),e=Fe(r,e),l){case 0:t=xi(null,t,r,e,n);break e;case 1:t=Vs(null,t,r,e,n);break e;case 11:t=$s(null,t,r,e,n);break e;case 14:t=Hs(null,t,r,Fe(r.type,e),n);break e}throw Error(x(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Fe(r,l),xi(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Fe(r,l),Vs(e,t,r,l,n);case 3:e:{if(yf(t),e===null)throw Error(x(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Mc(e,t),Cl(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Sn(Error(x(423)),t),t=Ws(e,t,r,n,l);break e}else if(r!==l){l=Sn(Error(x(424)),t),t=Ws(e,t,r,n,l);break e}else for(xe=gt(t.stateNode.containerInfo.firstChild),Ee=t,$=!0,Ue=null,n=Vc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(vn(),r===l){t=rt(e,t,n);break e}ce(e,t,r,n)}t=t.child}return t;case 5:return Wc(t),e===null&&yi(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,fi(r,l)?i=null:o!==null&&fi(r,o)&&(t.flags|=32),mf(e,t),ce(e,t,i,n),t.child;case 6:return e===null&&yi(t),null;case 13:return vf(e,t,n);case 4:return yu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=gn(t,null,r,n):ce(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Fe(r,l),$s(e,t,r,l,n);case 7:return ce(e,t,t.pendingProps,n),t.child;case 8:return ce(e,t,t.pendingProps.children,n),t.child;case 12:return ce(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,A(El,r._currentValue),r._currentValue=i,o!==null)if(Be(o.value,i)){if(o.children===l.children&&!ye.current){t=rt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Ze(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var f=a.pending;f===null?s.next=s:(s.next=f.next,f.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),vi(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(x(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),vi(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}ce(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,pn(t,n),l=Le(l),r=r(l),t.flags|=1,ce(e,t,r,n),t.child;case 14:return r=t.type,l=Fe(r,t.pendingProps),l=Fe(r.type,l),Hs(e,t,r,l,n);case 15:return pf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Fe(r,l),nl(e,t),t.tag=1,ve(r)?(e=!0,wl(t)):e=!1,pn(t,n),$c(t,r,l),wi(t,r,l,n),Ei(null,t,r,!0,e,n);case 19:return gf(e,t,n);case 22:return hf(e,t,n)}throw Error(x(156,t.tag))};function If(e,t){return oc(e,t)}function W1(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Re(e,t,n,r){return new W1(e,t,n,r)}function Lu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Q1(e){if(typeof e=="function")return Lu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Yi)return 11;if(e===qi)return 14}return 2}function Et(e,t){var n=e.alternate;return n===null?(n=Re(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ol(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Lu(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case qt:return Mt(n.children,l,o,t);case Xi:i=8,l|=8;break;case Vo:return e=Re(12,n,t,l|2),e.elementType=Vo,e.lanes=o,e;case Wo:return e=Re(13,n,t,l),e.elementType=Wo,e.lanes=o,e;case Qo:return e=Re(19,n,t,l),e.elementType=Qo,e.lanes=o,e;case Ha:return Gl(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ba:i=10;break e;case $a:i=9;break e;case Yi:i=11;break e;case qi:i=14;break e;case ut:i=16,r=null;break e}throw Error(x(130,e==null?e:typeof e,""))}return t=Re(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Mt(e,t,n,r){return e=Re(7,e,r,t),e.lanes=n,e}function Gl(e,t,n,r){return e=Re(22,e,r,t),e.elementType=Ha,e.lanes=n,e.stateNode={isHidden:!1},e}function zo(e,t,n){return e=Re(6,e,null,t),e.lanes=n,e}function jo(e,t,n){return t=Re(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function K1(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=po(0),this.expirationTimes=po(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=po(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function zu(e,t,n,r,l,o,i,u,s){return e=new K1(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Re(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},mu(o),e}function G1(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Af)}catch(e){console.error(e)}}Af(),Fa.exports=Ce;var Z1=Fa.exports,na=Z1;$o.createRoot=na.createRoot,$o.hydrateRoot=na.hydrateRoot;/** + * @remix-run/router v1.14.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function yr(){return yr=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function Du(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function eh(){return Math.random().toString(36).substr(2,8)}function la(e,t){return{usr:e.state,key:e.key,idx:t}}function Ii(e,t,n,r){return n===void 0&&(n=null),yr({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?_n(t):t,{state:n,key:t&&t.key||r||eh()})}function jl(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function _n(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function th(e,t,n,r){r===void 0&&(r={});let{window:l=document.defaultView,v5Compat:o=!1}=r,i=l.history,u=pt.Pop,s=null,a=f();a==null&&(a=0,i.replaceState(yr({},i.state,{idx:a}),""));function f(){return(i.state||{idx:null}).idx}function c(){u=pt.Pop;let E=f(),p=E==null?null:E-a;a=E,s&&s({action:u,location:y.location,delta:p})}function m(E,p){u=pt.Push;let d=Ii(y.location,E,p);n&&n(d,E),a=f()+1;let h=la(d,a),w=y.createHref(d);try{i.pushState(h,"",w)}catch(N){if(N instanceof DOMException&&N.name==="DataCloneError")throw N;l.location.assign(w)}o&&s&&s({action:u,location:y.location,delta:1})}function S(E,p){u=pt.Replace;let d=Ii(y.location,E,p);n&&n(d,E),a=f();let h=la(d,a),w=y.createHref(d);i.replaceState(h,"",w),o&&s&&s({action:u,location:y.location,delta:0})}function v(E){let p=l.location.origin!=="null"?l.location.origin:l.location.href,d=typeof E=="string"?E:jl(E);return Y(p,"No window.location.(origin|href) available to create URL for href: "+d),new URL(d,p)}let y={get action(){return u},get location(){return e(l,i)},listen(E){if(s)throw new Error("A history only accepts one active listener");return l.addEventListener(ra,c),s=E,()=>{l.removeEventListener(ra,c),s=null}},createHref(E){return t(l,E)},createURL:v,encodeLocation(E){let p=v(E);return{pathname:p.pathname,search:p.search,hash:p.hash}},push:m,replace:S,go(E){return i.go(E)}};return y}var oa;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(oa||(oa={}));function nh(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?_n(t):t,l=Uu(r.pathname||"/",n);if(l==null)return null;let o=Mf(e);rh(o);let i=null;for(let u=0;i==null&&u{let s={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:i,route:o};s.relativePath.startsWith("/")&&(Y(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let a=kt([r,s.relativePath]),f=n.concat(s);o.children&&o.children.length>0&&(Y(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+a+'".')),Mf(o.children,t,f,a)),!(o.path==null&&!o.index)&&t.push({path:a,score:ch(a,o.index),routesMeta:f})};return e.forEach((o,i)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))l(o,i);else for(let s of Bf(o.path))l(o,i,s)}),t}function Bf(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,l=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return l?[o,""]:[o];let i=Bf(r.join("/")),u=[];return u.push(...i.map(s=>s===""?o:[o,s].join("/"))),l&&u.push(...i),u.map(s=>e.startsWith("/")&&s===""?"/":s)}function rh(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:fh(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const lh=/^:\w+$/,oh=3,ih=2,uh=1,sh=10,ah=-2,ia=e=>e==="*";function ch(e,t){let n=e.split("/"),r=n.length;return n.some(ia)&&(r+=ah),t&&(r+=ih),n.filter(l=>!ia(l)).reduce((l,o)=>l+(lh.test(o)?oh:o===""?uh:sh),r)}function fh(e,t){return e.length===t.length&&e.slice(0,-1).every((r,l)=>r===t[l])?e[e.length-1]-t[t.length-1]:0}function dh(e,t){let{routesMeta:n}=e,r={},l="/",o=[];for(let i=0;i{let{paramName:m,isOptional:S}=f;if(m==="*"){let y=u[c]||"";i=o.slice(0,o.length-y.length).replace(/(.)\/+$/,"$1")}const v=u[c];return S&&!v?a[m]=void 0:a[m]=yh(v||"",m),a},{}),pathname:o,pathnameBase:i,pattern:e}}function hh(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Du(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],l="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:(\w+)(\?)?/g,(i,u,s)=>(r.push({paramName:u,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),l+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?l+="\\/*$":e!==""&&e!=="/"&&(l+="(?:(?=\\/|$))"),[new RegExp(l,t?void 0:"i"),r]}function mh(e){try{return decodeURI(e)}catch(t){return Du(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function yh(e,t){try{return decodeURIComponent(e)}catch(n){return Du(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+n+").")),e}}function Uu(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function vh(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:l=""}=typeof e=="string"?_n(e):e;return{pathname:n?n.startsWith("/")?n:gh(n,t):t,search:xh(r),hash:Eh(l)}}function gh(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(l=>{l===".."?n.length>1&&n.pop():l!=="."&&n.push(l)}),n.length>1?n.join("/"):"/"}function Io(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function wh(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function $f(e,t){let n=wh(e);return t?n.map((r,l)=>l===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Hf(e,t,n,r){r===void 0&&(r=!1);let l;typeof e=="string"?l=_n(e):(l=yr({},e),Y(!l.pathname||!l.pathname.includes("?"),Io("?","pathname","search",l)),Y(!l.pathname||!l.pathname.includes("#"),Io("#","pathname","hash",l)),Y(!l.search||!l.search.includes("#"),Io("#","search","hash",l)));let o=e===""||l.pathname==="",i=o?"/":l.pathname,u;if(i==null)u=n;else if(r){let c=t.length===0?[]:t[t.length-1].replace(/^\//,"").split("/");if(i.startsWith("..")){let m=i.split("/");for(;m[0]==="..";)m.shift(),c.pop();l.pathname=m.join("/")}u="/"+c.join("/")}else{let c=t.length-1;if(i.startsWith("..")){let m=i.split("/");for(;m[0]==="..";)m.shift(),c-=1;l.pathname=m.join("/")}u=c>=0?t[c]:"/"}let s=vh(l,u),a=i&&i!=="/"&&i.endsWith("/"),f=(o||i===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(a||f)&&(s.pathname+="/"),s}const kt=e=>e.join("/").replace(/\/\/+/g,"/"),Sh=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),xh=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Eh=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function kh(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Vf=["post","put","patch","delete"];new Set(Vf);const Ch=["get",...Vf];new Set(Ch);/** + * React Router v6.21.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function vr(){return vr=Object.assign?Object.assign.bind():function(e){for(var t=1;t{u.current=!0}),C.useCallback(function(a,f){if(f===void 0&&(f={}),!u.current)return;if(typeof a=="number"){r.go(a);return}let c=Hf(a,JSON.parse(i),o,f.relative==="path");e==null&&t!=="/"&&(c.pathname=c.pathname==="/"?t:kt([t,c.pathname])),(f.replace?r.replace:r.push)(c,f.state,f)},[t,r,i,o,e])}const Rh=C.createContext(null);function Oh(e){let t=C.useContext(Tt).outlet;return t&&C.createElement(Rh.Provider,{value:e},t)}function Kf(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=C.useContext(Gt),{matches:l}=C.useContext(Tt),{pathname:o}=Nr(),i=JSON.stringify($f(l,r.v7_relativeSplatPath));return C.useMemo(()=>Hf(e,JSON.parse(i),o,n==="path"),[e,i,o,n])}function Th(e,t){return Lh(e,t)}function Lh(e,t,n,r){Cr()||Y(!1);let{navigator:l}=C.useContext(Gt),{matches:o}=C.useContext(Tt),i=o[o.length-1],u=i?i.params:{};i&&i.pathname;let s=i?i.pathnameBase:"/";i&&i.route;let a=Nr(),f;if(t){var c;let E=typeof t=="string"?_n(t):t;s==="/"||(c=E.pathname)!=null&&c.startsWith(s)||Y(!1),f=E}else f=a;let m=f.pathname||"/",S=s==="/"?m:m.slice(s.length)||"/",v=nh(e,{pathname:S}),y=Dh(v&&v.map(E=>Object.assign({},E,{params:Object.assign({},u,E.params),pathname:kt([s,l.encodeLocation?l.encodeLocation(E.pathname).pathname:E.pathname]),pathnameBase:E.pathnameBase==="/"?s:kt([s,l.encodeLocation?l.encodeLocation(E.pathnameBase).pathname:E.pathnameBase])})),o,n,r);return t&&y?C.createElement(Zl.Provider,{value:{location:vr({pathname:"/",search:"",hash:"",state:null,key:"default"},f),navigationType:pt.Pop}},y):y}function zh(){let e=Bh(),t=kh(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,l={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},o=null;return C.createElement(C.Fragment,null,C.createElement("h2",null,"Unexpected Application Error!"),C.createElement("h3",{style:{fontStyle:"italic"}},t),n?C.createElement("pre",{style:l},n):null,o)}const jh=C.createElement(zh,null);class Ih extends C.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?C.createElement(Tt.Provider,{value:this.props.routeContext},C.createElement(Wf.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Fh(e){let{routeContext:t,match:n,children:r}=e,l=C.useContext(Au);return l&&l.static&&l.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(l.staticContext._deepestRenderedBoundaryId=n.route.id),C.createElement(Tt.Provider,{value:t},r)}function Dh(e,t,n,r){var l;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if((o=n)!=null&&o.errors)e=n.matches;else return null}let i=e,u=(l=n)==null?void 0:l.errors;if(u!=null){let f=i.findIndex(c=>c.route.id&&(u==null?void 0:u[c.route.id]));f>=0||Y(!1),i=i.slice(0,Math.min(i.length,f+1))}let s=!1,a=-1;if(n&&r&&r.v7_partialHydration)for(let f=0;f=0?i=i.slice(0,a+1):i=[i[0]];break}}return i.reduceRight((f,c,m)=>{let S,v=!1,y=null,E=null;n&&(S=u&&c.route.id?u[c.route.id]:void 0,y=c.route.errorElement||jh,s&&(a<0&&m===0?(Hh("route-fallback",!1),v=!0,E=null):a===m&&(v=!0,E=c.route.hydrateFallbackElement||null)));let p=t.concat(i.slice(0,m+1)),d=()=>{let h;return S?h=y:v?h=E:c.route.Component?h=C.createElement(c.route.Component,null):c.route.element?h=c.route.element:h=f,C.createElement(Fh,{match:c,routeContext:{outlet:f,matches:p,isDataRoute:n!=null},children:h})};return n&&(c.route.ErrorBoundary||c.route.errorElement||m===0)?C.createElement(Ih,{location:n.location,revalidation:n.revalidation,component:y,error:S,children:d(),routeContext:{outlet:null,matches:p,isDataRoute:!0}}):d()},null)}var Gf=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Gf||{}),Il=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Il||{});function Uh(e){let t=C.useContext(Au);return t||Y(!1),t}function Ah(e){let t=C.useContext(Nh);return t||Y(!1),t}function Mh(e){let t=C.useContext(Tt);return t||Y(!1),t}function Jf(e){let t=Mh(),n=t.matches[t.matches.length-1];return n.route.id||Y(!1),n.route.id}function Bh(){var e;let t=C.useContext(Wf),n=Ah(Il.UseRouteError),r=Jf(Il.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function $h(){let{router:e}=Uh(Gf.UseNavigateStable),t=Jf(Il.UseNavigateStable),n=C.useRef(!1);return Qf(()=>{n.current=!0}),C.useCallback(function(l,o){o===void 0&&(o={}),n.current&&(typeof l=="number"?e.navigate(l):e.navigate(l,vr({fromRouteId:t},o)))},[e,t])}const ua={};function Hh(e,t,n){!t&&!ua[e]&&(ua[e]=!0)}function Vh(e){return Oh(e.context)}function Xt(e){Y(!1)}function Wh(e){let{basename:t="/",children:n=null,location:r,navigationType:l=pt.Pop,navigator:o,static:i=!1,future:u}=e;Cr()&&Y(!1);let s=t.replace(/^\/*/,"/"),a=C.useMemo(()=>({basename:s,navigator:o,static:i,future:vr({v7_relativeSplatPath:!1},u)}),[s,u,o,i]);typeof r=="string"&&(r=_n(r));let{pathname:f="/",search:c="",hash:m="",state:S=null,key:v="default"}=r,y=C.useMemo(()=>{let E=Uu(f,s);return E==null?null:{location:{pathname:E,search:c,hash:m,state:S,key:v},navigationType:l}},[s,f,c,m,S,v,l]);return y==null?null:C.createElement(Gt.Provider,{value:a},C.createElement(Zl.Provider,{children:n,value:y}))}function Qh(e){let{children:t,location:n}=e;return Th(Fi(t),n)}new Promise(()=>{});function Fi(e,t){t===void 0&&(t=[]);let n=[];return C.Children.forEach(e,(r,l)=>{if(!C.isValidElement(r))return;let o=[...t,l];if(r.type===C.Fragment){n.push.apply(n,Fi(r.props.children,o));return}r.type!==Xt&&Y(!1),!r.props.index||!r.props.children||Y(!1);let i={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(i.children=Fi(r.props.children,o)),n.push(i)}),n}/** + * React Router DOM v6.21.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Di(){return Di=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[l]=e[l]);return n}function Gh(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Jh(e,t){return e.button===0&&(!t||t==="_self")&&!Gh(e)}const Xh=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],Yh="startTransition",sa=Hd[Yh];function qh(e){let{basename:t,children:n,future:r,window:l}=e,o=C.useRef();o.current==null&&(o.current=b1({window:l,v5Compat:!0}));let i=o.current,[u,s]=C.useState({action:i.action,location:i.location}),{v7_startTransition:a}=r||{},f=C.useCallback(c=>{a&&sa?sa(()=>s(c)):s(c)},[s,a]);return C.useLayoutEffect(()=>i.listen(f),[i,f]),C.createElement(Wh,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:i,future:r})}const Zh=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",bh=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Fo=C.forwardRef(function(t,n){let{onClick:r,relative:l,reloadDocument:o,replace:i,state:u,target:s,to:a,preventScrollReset:f,unstable_viewTransition:c}=t,m=Kh(t,Xh),{basename:S}=C.useContext(Gt),v,y=!1;if(typeof a=="string"&&bh.test(a)&&(v=a,Zh))try{let h=new URL(window.location.href),w=a.startsWith("//")?new URL(h.protocol+a):new URL(a),N=Uu(w.pathname,S);w.origin===h.origin&&N!=null?a=N+w.search+w.hash:y=!0}catch{}let E=_h(a,{relative:l}),p=em(a,{replace:i,state:u,target:s,preventScrollReset:f,relative:l,unstable_viewTransition:c});function d(h){r&&r(h),h.defaultPrevented||p(h)}return C.createElement("a",Di({},m,{href:v||E,onClick:y||o?r:d,ref:n,target:s}))});var aa;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(aa||(aa={}));var ca;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(ca||(ca={}));function em(e,t){let{target:n,replace:r,state:l,preventScrollReset:o,relative:i,unstable_viewTransition:u}=t===void 0?{}:t,s=Mu(),a=Nr(),f=Kf(e,{relative:i});return C.useCallback(c=>{if(Jh(c,n)){c.preventDefault();let m=r!==void 0?r:jl(a)===jl(f);s(e,{replace:m,state:l,preventScrollReset:o,relative:i,unstable_viewTransition:u})}},[a,s,f,r,l,n,e,o,i,u])}var Se=(e=>(e.START_LOADING="START_LOADING",e.STOP_LOADING="STOP_LOADING",e.LOGIN_USER="LOGIN_USER",e.LOGOUT_USER="LOGOUT_USER",e.RETRIEVED_ITEMS="RETRIEVED_ITEMS",e))(Se||{});const tm=(e,t)=>{switch(t.type){case Se.START_LOADING:return{...e,isLoading:!0};case Se.STOP_LOADING:return{...e,isLoading:!1};case Se.LOGIN_USER:return{...e,user:t.payload.user,isLoading:!1};case Se.LOGOUT_USER:return{...e,user:"",isLoading:!1};case Se.RETRIEVED_ITEMS:return{...e,items:t.payload.items,isLoading:!1};default:return e}};function Xf(e,t){return function(){return e.apply(t,arguments)}}const{toString:nm}=Object.prototype,{getPrototypeOf:Bu}=Object,bl=(e=>t=>{const n=nm.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ge=e=>(e=e.toLowerCase(),t=>bl(t)===e),eo=e=>t=>typeof t===e,{isArray:Pn}=Array,gr=eo("undefined");function rm(e){return e!==null&&!gr(e)&&e.constructor!==null&&!gr(e.constructor)&&Te(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Yf=Ge("ArrayBuffer");function lm(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Yf(e.buffer),t}const om=eo("string"),Te=eo("function"),qf=eo("number"),to=e=>e!==null&&typeof e=="object",im=e=>e===!0||e===!1,il=e=>{if(bl(e)!=="object")return!1;const t=Bu(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},um=Ge("Date"),sm=Ge("File"),am=Ge("Blob"),cm=Ge("FileList"),fm=e=>to(e)&&Te(e.pipe),dm=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||Te(e.append)&&((t=bl(e))==="formdata"||t==="object"&&Te(e.toString)&&e.toString()==="[object FormData]"))},pm=Ge("URLSearchParams"),hm=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function _r(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,l;if(typeof e!="object"&&(e=[e]),Pn(e))for(r=0,l=e.length;r0;)if(l=n[r],t===l.toLowerCase())return l;return null}const bf=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,ed=e=>!gr(e)&&e!==bf;function Ui(){const{caseless:e}=ed(this)&&this||{},t={},n=(r,l)=>{const o=e&&Zf(t,l)||l;il(t[o])&&il(r)?t[o]=Ui(t[o],r):il(r)?t[o]=Ui({},r):Pn(r)?t[o]=r.slice():t[o]=r};for(let r=0,l=arguments.length;r(_r(t,(l,o)=>{n&&Te(l)?e[o]=Xf(l,n):e[o]=l},{allOwnKeys:r}),e),ym=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),vm=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},gm=(e,t,n,r)=>{let l,o,i;const u={};if(t=t||{},e==null)return t;do{for(l=Object.getOwnPropertyNames(e),o=l.length;o-- >0;)i=l[o],(!r||r(i,e,t))&&!u[i]&&(t[i]=e[i],u[i]=!0);e=n!==!1&&Bu(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},wm=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Sm=e=>{if(!e)return null;if(Pn(e))return e;let t=e.length;if(!qf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},xm=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Bu(Uint8Array)),Em=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let l;for(;(l=r.next())&&!l.done;){const o=l.value;t.call(e,o[0],o[1])}},km=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Cm=Ge("HTMLFormElement"),Nm=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,l){return r.toUpperCase()+l}),fa=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),_m=Ge("RegExp"),td=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};_r(n,(l,o)=>{let i;(i=t(l,o,e))!==!1&&(r[o]=i||l)}),Object.defineProperties(e,r)},Pm=e=>{td(e,(t,n)=>{if(Te(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(Te(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Rm=(e,t)=>{const n={},r=l=>{l.forEach(o=>{n[o]=!0})};return Pn(e)?r(e):r(String(e).split(t)),n},Om=()=>{},Tm=(e,t)=>(e=+e,Number.isFinite(e)?e:t),Do="abcdefghijklmnopqrstuvwxyz",da="0123456789",nd={DIGIT:da,ALPHA:Do,ALPHA_DIGIT:Do+Do.toUpperCase()+da},Lm=(e=16,t=nd.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function zm(e){return!!(e&&Te(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const jm=e=>{const t=new Array(10),n=(r,l)=>{if(to(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[l]=r;const o=Pn(r)?[]:{};return _r(r,(i,u)=>{const s=n(i,l+1);!gr(s)&&(o[u]=s)}),t[l]=void 0,o}}return r};return n(e,0)},Im=Ge("AsyncFunction"),Fm=e=>e&&(to(e)||Te(e))&&Te(e.then)&&Te(e.catch),g={isArray:Pn,isArrayBuffer:Yf,isBuffer:rm,isFormData:dm,isArrayBufferView:lm,isString:om,isNumber:qf,isBoolean:im,isObject:to,isPlainObject:il,isUndefined:gr,isDate:um,isFile:sm,isBlob:am,isRegExp:_m,isFunction:Te,isStream:fm,isURLSearchParams:pm,isTypedArray:xm,isFileList:cm,forEach:_r,merge:Ui,extend:mm,trim:hm,stripBOM:ym,inherits:vm,toFlatObject:gm,kindOf:bl,kindOfTest:Ge,endsWith:wm,toArray:Sm,forEachEntry:Em,matchAll:km,isHTMLForm:Cm,hasOwnProperty:fa,hasOwnProp:fa,reduceDescriptors:td,freezeMethods:Pm,toObjectSet:Rm,toCamelCase:Nm,noop:Om,toFiniteNumber:Tm,findKey:Zf,global:bf,isContextDefined:ed,ALPHABET:nd,generateString:Lm,isSpecCompliantForm:zm,toJSONObject:jm,isAsyncFn:Im,isThenable:Fm};function F(e,t,n,r,l){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),l&&(this.response=l)}g.inherits(F,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:g.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const rd=F.prototype,ld={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{ld[e]={value:e}});Object.defineProperties(F,ld);Object.defineProperty(rd,"isAxiosError",{value:!0});F.from=(e,t,n,r,l,o)=>{const i=Object.create(rd);return g.toFlatObject(e,i,function(s){return s!==Error.prototype},u=>u!=="isAxiosError"),F.call(i,e.message,t,n,r,l),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Dm=null;function Ai(e){return g.isPlainObject(e)||g.isArray(e)}function od(e){return g.endsWith(e,"[]")?e.slice(0,-2):e}function pa(e,t,n){return e?e.concat(t).map(function(l,o){return l=od(l),!n&&o?"["+l+"]":l}).join(n?".":""):t}function Um(e){return g.isArray(e)&&!e.some(Ai)}const Am=g.toFlatObject(g,{},null,function(t){return/^is[A-Z]/.test(t)});function no(e,t,n){if(!g.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=g.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,E){return!g.isUndefined(E[y])});const r=n.metaTokens,l=n.visitor||f,o=n.dots,i=n.indexes,s=(n.Blob||typeof Blob<"u"&&Blob)&&g.isSpecCompliantForm(t);if(!g.isFunction(l))throw new TypeError("visitor must be a function");function a(v){if(v===null)return"";if(g.isDate(v))return v.toISOString();if(!s&&g.isBlob(v))throw new F("Blob is not supported. Use a Buffer instead.");return g.isArrayBuffer(v)||g.isTypedArray(v)?s&&typeof Blob=="function"?new Blob([v]):Buffer.from(v):v}function f(v,y,E){let p=v;if(v&&!E&&typeof v=="object"){if(g.endsWith(y,"{}"))y=r?y:y.slice(0,-2),v=JSON.stringify(v);else if(g.isArray(v)&&Um(v)||(g.isFileList(v)||g.endsWith(y,"[]"))&&(p=g.toArray(v)))return y=od(y),p.forEach(function(h,w){!(g.isUndefined(h)||h===null)&&t.append(i===!0?pa([y],w,o):i===null?y:y+"[]",a(h))}),!1}return Ai(v)?!0:(t.append(pa(E,y,o),a(v)),!1)}const c=[],m=Object.assign(Am,{defaultVisitor:f,convertValue:a,isVisitable:Ai});function S(v,y){if(!g.isUndefined(v)){if(c.indexOf(v)!==-1)throw Error("Circular reference detected in "+y.join("."));c.push(v),g.forEach(v,function(p,d){(!(g.isUndefined(p)||p===null)&&l.call(t,p,g.isString(d)?d.trim():d,y,m))===!0&&S(p,y?y.concat(d):[d])}),c.pop()}}if(!g.isObject(e))throw new TypeError("data must be an object");return S(e),t}function ha(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function $u(e,t){this._pairs=[],e&&no(e,this,t)}const id=$u.prototype;id.append=function(t,n){this._pairs.push([t,n])};id.toString=function(t){const n=t?function(r){return t.call(this,r,ha)}:ha;return this._pairs.map(function(l){return n(l[0])+"="+n(l[1])},"").join("&")};function Mm(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ud(e,t,n){if(!t)return e;const r=n&&n.encode||Mm,l=n&&n.serialize;let o;if(l?o=l(t,n):o=g.isURLSearchParams(t)?t.toString():new $u(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Bm{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){g.forEach(this.handlers,function(r){r!==null&&t(r)})}}const ma=Bm,sd={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},$m=typeof URLSearchParams<"u"?URLSearchParams:$u,Hm=typeof FormData<"u"?FormData:null,Vm=typeof Blob<"u"?Blob:null,Wm={isBrowser:!0,classes:{URLSearchParams:$m,FormData:Hm,Blob:Vm},protocols:["http","https","file","blob","url","data"]},ad=typeof window<"u"&&typeof document<"u",Qm=(e=>ad&&["ReactNative","NativeScript","NS"].indexOf(e)<0)(typeof navigator<"u"&&navigator.product),Km=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Gm=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ad,hasStandardBrowserEnv:Qm,hasStandardBrowserWebWorkerEnv:Km},Symbol.toStringTag,{value:"Module"})),We={...Gm,...Wm};function Jm(e,t){return no(e,new We.classes.URLSearchParams,Object.assign({visitor:function(n,r,l,o){return We.isNode&&g.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function Xm(e){return g.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Ym(e){const t={},n=Object.keys(e);let r;const l=n.length;let o;for(r=0;r=n.length;return i=!i&&g.isArray(l)?l.length:i,s?(g.hasOwnProp(l,i)?l[i]=[l[i],r]:l[i]=r,!u):((!l[i]||!g.isObject(l[i]))&&(l[i]=[]),t(n,r,l[i],o)&&g.isArray(l[i])&&(l[i]=Ym(l[i])),!u)}if(g.isFormData(e)&&g.isFunction(e.entries)){const n={};return g.forEachEntry(e,(r,l)=>{t(Xm(r),l,n,0)}),n}return null}function qm(e,t,n){if(g.isString(e))try{return(t||JSON.parse)(e),g.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const Hu={transitional:sd,adapter:["xhr","http"],transformRequest:[function(t,n){const r=n.getContentType()||"",l=r.indexOf("application/json")>-1,o=g.isObject(t);if(o&&g.isHTMLForm(t)&&(t=new FormData(t)),g.isFormData(t))return l&&l?JSON.stringify(cd(t)):t;if(g.isArrayBuffer(t)||g.isBuffer(t)||g.isStream(t)||g.isFile(t)||g.isBlob(t))return t;if(g.isArrayBufferView(t))return t.buffer;if(g.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let u;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Jm(t,this.formSerializer).toString();if((u=g.isFileList(t))||r.indexOf("multipart/form-data")>-1){const s=this.env&&this.env.FormData;return no(u?{"files[]":t}:t,s&&new s,this.formSerializer)}}return o||l?(n.setContentType("application/json",!1),qm(t)):t}],transformResponse:[function(t){const n=this.transitional||Hu.transitional,r=n&&n.forcedJSONParsing,l=this.responseType==="json";if(t&&g.isString(t)&&(r&&!this.responseType||l)){const i=!(n&&n.silentJSONParsing)&&l;try{return JSON.parse(t)}catch(u){if(i)throw u.name==="SyntaxError"?F.from(u,F.ERR_BAD_RESPONSE,this,null,this.response):u}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:We.classes.FormData,Blob:We.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};g.forEach(["delete","get","head","post","put","patch"],e=>{Hu.headers[e]={}});const Vu=Hu,Zm=g.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),bm=e=>{const t={};let n,r,l;return e&&e.split(` +`).forEach(function(i){l=i.indexOf(":"),n=i.substring(0,l).trim().toLowerCase(),r=i.substring(l+1).trim(),!(!n||t[n]&&Zm[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},ya=Symbol("internals");function Mn(e){return e&&String(e).trim().toLowerCase()}function ul(e){return e===!1||e==null?e:g.isArray(e)?e.map(ul):String(e)}function e0(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const t0=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Uo(e,t,n,r,l){if(g.isFunction(r))return r.call(this,t,n);if(l&&(t=n),!!g.isString(t)){if(g.isString(r))return t.indexOf(r)!==-1;if(g.isRegExp(r))return r.test(t)}}function n0(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function r0(e,t){const n=g.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(l,o,i){return this[r].call(this,t,l,o,i)},configurable:!0})})}let ro=class{constructor(t){t&&this.set(t)}set(t,n,r){const l=this;function o(u,s,a){const f=Mn(s);if(!f)throw new Error("header name must be a non-empty string");const c=g.findKey(l,f);(!c||l[c]===void 0||a===!0||a===void 0&&l[c]!==!1)&&(l[c||s]=ul(u))}const i=(u,s)=>g.forEach(u,(a,f)=>o(a,f,s));return g.isPlainObject(t)||t instanceof this.constructor?i(t,n):g.isString(t)&&(t=t.trim())&&!t0(t)?i(bm(t),n):t!=null&&o(n,t,r),this}get(t,n){if(t=Mn(t),t){const r=g.findKey(this,t);if(r){const l=this[r];if(!n)return l;if(n===!0)return e0(l);if(g.isFunction(n))return n.call(this,l,r);if(g.isRegExp(n))return n.exec(l);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Mn(t),t){const r=g.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Uo(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let l=!1;function o(i){if(i=Mn(i),i){const u=g.findKey(r,i);u&&(!n||Uo(r,r[u],u,n))&&(delete r[u],l=!0)}}return g.isArray(t)?t.forEach(o):o(t),l}clear(t){const n=Object.keys(this);let r=n.length,l=!1;for(;r--;){const o=n[r];(!t||Uo(this,this[o],o,t,!0))&&(delete this[o],l=!0)}return l}normalize(t){const n=this,r={};return g.forEach(this,(l,o)=>{const i=g.findKey(r,o);if(i){n[i]=ul(l),delete n[o];return}const u=t?n0(o):String(o).trim();u!==o&&delete n[o],n[u]=ul(l),r[u]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return g.forEach(this,(r,l)=>{r!=null&&r!==!1&&(n[l]=t&&g.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(l=>r.set(l)),r}static accessor(t){const r=(this[ya]=this[ya]={accessors:{}}).accessors,l=this.prototype;function o(i){const u=Mn(i);r[u]||(r0(l,i),r[u]=!0)}return g.isArray(t)?t.forEach(o):o(t),this}};ro.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);g.reduceDescriptors(ro.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});g.freezeMethods(ro);const be=ro;function Ao(e,t){const n=this||Vu,r=t||n,l=be.from(r.headers);let o=r.data;return g.forEach(e,function(u){o=u.call(n,o,l.normalize(),t?t.status:void 0)}),l.normalize(),o}function fd(e){return!!(e&&e.__CANCEL__)}function Pr(e,t,n){F.call(this,e??"canceled",F.ERR_CANCELED,t,n),this.name="CanceledError"}g.inherits(Pr,F,{__CANCEL__:!0});function l0(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new F("Request failed with status code "+n.status,[F.ERR_BAD_REQUEST,F.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const o0=We.hasStandardBrowserEnv?{write(e,t,n,r,l,o){const i=[e+"="+encodeURIComponent(t)];g.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),g.isString(r)&&i.push("path="+r),g.isString(l)&&i.push("domain="+l),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function i0(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function u0(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function dd(e,t){return e&&!i0(t)?u0(e,t):t}const s0=We.hasStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function l(o){let i=o;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=l(window.location.href),function(i){const u=g.isString(i)?l(i):i;return u.protocol===r.protocol&&u.host===r.host}}():function(){return function(){return!0}}();function a0(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function c0(e,t){e=e||10;const n=new Array(e),r=new Array(e);let l=0,o=0,i;return t=t!==void 0?t:1e3,function(s){const a=Date.now(),f=r[o];i||(i=a),n[l]=s,r[l]=a;let c=o,m=0;for(;c!==l;)m+=n[c++],c=c%e;if(l=(l+1)%e,l===o&&(o=(o+1)%e),a-i{const o=l.loaded,i=l.lengthComputable?l.total:void 0,u=o-n,s=r(u),a=o<=i;n=o;const f={loaded:o,total:i,progress:i?o/i:void 0,bytes:u,rate:s||void 0,estimated:s&&i&&a?(i-o)/s:void 0,event:l};f[t?"download":"upload"]=!0,e(f)}}const f0=typeof XMLHttpRequest<"u",d0=f0&&function(e){return new Promise(function(n,r){let l=e.data;const o=be.from(e.headers).normalize();let{responseType:i,withXSRFToken:u}=e,s;function a(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}let f;if(g.isFormData(l)){if(We.hasStandardBrowserEnv||We.hasStandardBrowserWebWorkerEnv)o.setContentType(!1);else if((f=o.getContentType())!==!1){const[y,...E]=f?f.split(";").map(p=>p.trim()).filter(Boolean):[];o.setContentType([y||"multipart/form-data",...E].join("; "))}}let c=new XMLHttpRequest;if(e.auth){const y=e.auth.username||"",E=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(y+":"+E))}const m=dd(e.baseURL,e.url);c.open(e.method.toUpperCase(),ud(m,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function S(){if(!c)return;const y=be.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders()),p={data:!i||i==="text"||i==="json"?c.responseText:c.response,status:c.status,statusText:c.statusText,headers:y,config:e,request:c};l0(function(h){n(h),a()},function(h){r(h),a()},p),c=null}if("onloadend"in c?c.onloadend=S:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(S)},c.onabort=function(){c&&(r(new F("Request aborted",F.ECONNABORTED,e,c)),c=null)},c.onerror=function(){r(new F("Network Error",F.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let E=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const p=e.transitional||sd;e.timeoutErrorMessage&&(E=e.timeoutErrorMessage),r(new F(E,p.clarifyTimeoutError?F.ETIMEDOUT:F.ECONNABORTED,e,c)),c=null},We.hasStandardBrowserEnv&&(u&&g.isFunction(u)&&(u=u(e)),u||u!==!1&&s0(m))){const y=e.xsrfHeaderName&&e.xsrfCookieName&&o0.read(e.xsrfCookieName);y&&o.set(e.xsrfHeaderName,y)}l===void 0&&o.setContentType(null),"setRequestHeader"in c&&g.forEach(o.toJSON(),function(E,p){c.setRequestHeader(p,E)}),g.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),i&&i!=="json"&&(c.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&c.addEventListener("progress",va(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",va(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=y=>{c&&(r(!y||y.type?new Pr(null,e,c):y),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const v=a0(m);if(v&&We.protocols.indexOf(v)===-1){r(new F("Unsupported protocol "+v+":",F.ERR_BAD_REQUEST,e));return}c.send(l||null)})},Mi={http:Dm,xhr:d0};g.forEach(Mi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const ga=e=>`- ${e}`,p0=e=>g.isFunction(e)||e===null||e===!1,pd={getAdapter:e=>{e=g.isArray(e)?e:[e];const{length:t}=e;let n,r;const l={};for(let o=0;o`adapter ${u} `+(s===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since : +`+o.map(ga).join(` +`):" "+ga(o[0]):"as no adapter specified";throw new F("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:Mi};function Mo(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Pr(null,e)}function wa(e){return Mo(e),e.headers=be.from(e.headers),e.data=Ao.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),pd.getAdapter(e.adapter||Vu.adapter)(e).then(function(r){return Mo(e),r.data=Ao.call(e,e.transformResponse,r),r.headers=be.from(r.headers),r},function(r){return fd(r)||(Mo(e),r&&r.response&&(r.response.data=Ao.call(e,e.transformResponse,r.response),r.response.headers=be.from(r.response.headers))),Promise.reject(r)})}const Sa=e=>e instanceof be?e.toJSON():e;function En(e,t){t=t||{};const n={};function r(a,f,c){return g.isPlainObject(a)&&g.isPlainObject(f)?g.merge.call({caseless:c},a,f):g.isPlainObject(f)?g.merge({},f):g.isArray(f)?f.slice():f}function l(a,f,c){if(g.isUndefined(f)){if(!g.isUndefined(a))return r(void 0,a,c)}else return r(a,f,c)}function o(a,f){if(!g.isUndefined(f))return r(void 0,f)}function i(a,f){if(g.isUndefined(f)){if(!g.isUndefined(a))return r(void 0,a)}else return r(void 0,f)}function u(a,f,c){if(c in t)return r(a,f);if(c in e)return r(void 0,a)}const s={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:u,headers:(a,f)=>l(Sa(a),Sa(f),!0)};return g.forEach(Object.keys(Object.assign({},e,t)),function(f){const c=s[f]||l,m=c(e[f],t[f],f);g.isUndefined(m)&&c!==u||(n[f]=m)}),n}const hd="1.6.2",Wu={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Wu[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const xa={};Wu.transitional=function(t,n,r){function l(o,i){return"[Axios v"+hd+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,u)=>{if(t===!1)throw new F(l(i," has been removed"+(n?" in "+n:"")),F.ERR_DEPRECATED);return n&&!xa[i]&&(xa[i]=!0,console.warn(l(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,u):!0}};function h0(e,t,n){if(typeof e!="object")throw new F("options must be an object",F.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let l=r.length;for(;l-- >0;){const o=r[l],i=t[o];if(i){const u=e[o],s=u===void 0||i(u,o,e);if(s!==!0)throw new F("option "+o+" must be "+s,F.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new F("Unknown option "+o,F.ERR_BAD_OPTION)}}const Bi={assertOptions:h0,validators:Wu},it=Bi.validators;let Fl=class{constructor(t){this.defaults=t,this.interceptors={request:new ma,response:new ma}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=En(this.defaults,n);const{transitional:r,paramsSerializer:l,headers:o}=n;r!==void 0&&Bi.assertOptions(r,{silentJSONParsing:it.transitional(it.boolean),forcedJSONParsing:it.transitional(it.boolean),clarifyTimeoutError:it.transitional(it.boolean)},!1),l!=null&&(g.isFunction(l)?n.paramsSerializer={serialize:l}:Bi.assertOptions(l,{encode:it.function,serialize:it.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&g.merge(o.common,o[n.method]);o&&g.forEach(["delete","get","head","post","put","patch","common"],v=>{delete o[v]}),n.headers=be.concat(i,o);const u=[];let s=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(s=s&&y.synchronous,u.unshift(y.fulfilled,y.rejected))});const a=[];this.interceptors.response.forEach(function(y){a.push(y.fulfilled,y.rejected)});let f,c=0,m;if(!s){const v=[wa.bind(this),void 0];for(v.unshift.apply(v,u),v.push.apply(v,a),m=v.length,f=Promise.resolve(n);c{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](l);r._listeners=null}),this.promise.then=l=>{let o;const i=new Promise(u=>{r.subscribe(u),o=u}).then(l);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,u){r.reason||(r.reason=new Pr(o,i,u),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new md(function(l){t=l}),cancel:t}}};const y0=m0;function v0(e){return function(n){return e.apply(null,n)}}function g0(e){return g.isObject(e)&&e.isAxiosError===!0}const $i={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries($i).forEach(([e,t])=>{$i[t]=e});const w0=$i;function yd(e){const t=new sl(e),n=Xf(sl.prototype.request,t);return g.extend(n,sl.prototype,t,{allOwnKeys:!0}),g.extend(n,t,null,{allOwnKeys:!0}),n.create=function(l){return yd(En(e,l))},n}const q=yd(Vu);q.Axios=sl;q.CanceledError=Pr;q.CancelToken=y0;q.isCancel=fd;q.VERSION=hd;q.toFormData=no;q.AxiosError=F;q.Cancel=q.CanceledError;q.all=function(t){return Promise.all(t)};q.spread=v0;q.isAxiosError=g0;q.mergeConfig=En;q.AxiosHeaders=be;q.formToJSON=e=>cd(g.isHTMLForm(e)?new FormData(e):e);q.getAdapter=pd.getAdapter;q.HttpStatusCode=w0;q.default=q;const vd=q,{Axios:V0,AxiosError:S0,CanceledError:W0,isCancel:Q0,CancelToken:K0,VERSION:G0,all:J0,Cancel:X0,isAxiosError:Y0,spread:q0,toFormData:Z0,AxiosHeaders:b0,HttpStatusCode:ey,formToJSON:ty,getAdapter:ny,mergeConfig:ry}=vd,Qu=e=>{const t=vd.create({baseURL:`http://localhost:${e}/api/`,withCredentials:!0});return t.interceptors.response.use(n=>n,n=>(console.log(n),n.response.status,Promise.reject(n))),t},Bo=Qu(3e3),x0=Qu(3001),Ea=Qu(3002),gd={isLoading:!1,user:"",items:[]},wd=C.createContext({...gd,startLoading:()=>null,stopLoading:()=>null,loginUser:()=>null,logoutUser:()=>null,createItem:()=>null,adjustInventory:()=>null}),E0=({children:e})=>{const[t,n]=C.useReducer(tm,gd);C.useEffect(()=>{u()},[]);const r=()=>{n({type:Se.START_LOADING})},l=()=>{n({type:Se.STOP_LOADING})},o=async(f,c)=>{r();try{const m=await Bo.post("/auth/login",{username:f,password:c});n({type:Se.LOGIN_USER,payload:{user:m.data.username}})}catch(m){console.log(m)}l()},i=async()=>{r();try{const f=await Bo.post("/auth/logout");console.log(f),n({type:Se.LOGOUT_USER})}catch(f){console.log(f)}l()},u=async()=>{r();try{const f=await Bo("/auth/current-user"),{currentUser:c}=f.data;c&&n({type:Se.LOGIN_USER,payload:{user:c}})}catch(f){console.log(f)}l()},s=async f=>{if(!(f!=="bananas"&&f!=="strawberries"&&f!=="grapes")){try{r();const c=await x0.post("/items/createItem",{itemName:f});console.log(c.data),setTimeout(async()=>{const m=await Ea("/inventory/getAllItems");n({type:Se.RETRIEVED_ITEMS,payload:{items:m.data}})},1500)}catch(c){c instanceof S0&&window.alert(c.message),console.log(c)}l()}},a=async(f,c)=>{console.log("💥 Adjust Inventory");try{const m=await Ea.patch("/inventory/updateItemInventory",{id:f,units:c});n({type:Se.RETRIEVED_ITEMS,payload:{items:m.data}})}catch(m){console.log(m)}};return k.jsxs(wd.Provider,{value:{...t,startLoading:r,stopLoading:l,loginUser:o,logoutUser:i,createItem:s,adjustInventory:a},children:[e," "]})},Rn=()=>C.useContext(wd),Sd=()=>{const[e,t]=C.useState("");return C.useEffect(()=>{setTimeout(()=>{e.length>=4?t(""):t(n=>n+".")},500)},[e]),k.jsxs("div",{className:"w-full h-screen flex flex-col justify-center items-center text-light bg-dark",children:["Loading",e]})},k0=()=>{const{isLoading:e,user:t,loginUser:n}=Rn(),r="ScrumLord",l="McKenzie",o=Mu();if(C.useEffect(()=>{t&&o("/")},[t]),e)return k.jsx(Sd,{});const i=a=>{a.preventDefault(),n(r,l)},u=(a,f)=>k.jsx("label",{className:"text-xl capitalize",htmlFor:f,children:a}),s=(a,f,c)=>k.jsx("input",{value:c,readOnly:!0,className:"text-dark mb-2 min-w-[250px] p-1 border-2 border-black text-center",type:a,id:f});return k.jsx("div",{className:`w-full h-screen flex flex-col justify-center items-center\r + bg-dark text-light`,children:k.jsxs("div",{className:"relative",children:[k.jsx("div",{className:`absolute top-[-50px] right-[-50px]\r + w-[100px] h-[100px]\r + rounded-tl-[150px] rounded-tr-[120px]\r + rounded-bl-[130px] rounded-br-[200px]\r + shadow-blkSm animate-rotate1\r + bg-amber-500`}),k.jsx("div",{className:`absolute bottom-[-50px] left-[-50px]\r + w-[100px] h-[100px]\r + rounded-tl-[620px] rounded-tr-[420px]\r + rounded-bl-[500px] rounded-br-[530px]\r + shadow-blkSm animate-rotate2\r + bg-lime-600`}),k.jsxs("form",{onSubmit:a=>i(a),className:`flex flex-col justify-center items-center relative\r + px-20 py-10 ring-1 ring-black/5 bg-white/20 backdrop-blur-lg\r + rounded-md\r + shadow-blkSm`,children:[k.jsx("div",{}),u("username","username"),s("text","username","ScrumLord"),u("password","password"),s("password","password","McKenzie"),k.jsx("button",{className:`my-4 px-8 py-2\r + rounded-md shadow-blkSm\r + bg-blue-400/50 font-bold`,children:"Login"})]})]})})};let Ku=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");var xd={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},ka=ht.createContext&&ht.createContext(xd),Ct=function(){return Ct=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const t=n=>{const r="text-6xl";switch(n){case"bananas":return k.jsx(Ca,{className:`text-yellow-300 ${r}`});case"strawberries":return k.jsx(P0,{className:`text-red-300 ${r}`});case"grapes":return k.jsx(_0,{className:`text-purple-400 ${r}`});default:return k.jsx(Ca,{className:`text-yellow-300 ${r}`})}};return k.jsx(k.Fragment,{children:t(e)})},R0=["bananas","strawberries","grapes"],O0=()=>{const{items:e,createItem:t}=Rn(),[n,r]=C.useState("bananas");console.log(e);const l=o=>{o.preventDefault(),t(n)};return k.jsxs("form",{className:"flex flex-col justify-center items-center bg-white/70 text-dark py-4 px-8 rounded-md",onSubmit:o=>l(o),children:[k.jsx("h1",{className:"text-2xl font-bold",children:"Create an Item"}),k.jsx("div",{className:"bg-dark rounded-md p-2 mt-4 shadow-blkSm",children:k.jsx(kd,{fruit:n})}),k.jsx("select",{className:"text-dark mt-4 p-1 w-full text-center rounded-md",value:n,onChange:o=>{r(o.target.value)},children:R0.map(o=>k.jsx("option",{value:o,className:"capitalize",children:o},Ku()))}),k.jsx("button",{className:"bg-blue-400 py-2 px-4 rounded-md hover:shadow-blkSm hover:scale-110 mt-4 w-full",children:"Create Item"})]})},T0=()=>{const{items:e,adjustInventory:t}=Rn(),n=(r,l,o)=>{!r&&o===1||t(l,r?o+1:o-1)};return k.jsxs("div",{className:"w-full flex flex-col justify-center items-center mt-4",children:[k.jsx("h1",{className:"text-3xl font-bold",children:"Created Items"}),k.jsx("div",{className:"flex flex-wrap justify-center w-[85%]",children:e.map(r=>k.jsxs("div",{className:"bg-white/70 rounded-md m-2 p-4 min-w-[150px] flex flex-col justify-center items-center text-center",children:[k.jsx(kd,{fruit:r.itemName}),k.jsx("p",{className:"capitalize",children:r.itemName}),k.jsx("div",{className:"my-2 border-[1px] w-full border-dark"}),k.jsxs("div",{children:[k.jsxs("p",{className:"my-2",children:["In stock:"," ",k.jsx("span",{className:"text-light bg-dark p-2 rounded-md text-center",children:r.units})]}),k.jsxs("div",{className:"flex justify-center items-center",children:[k.jsx("button",{className:"bg-blue-400 p-2 rounded-md shadow-blkSm",onClick:()=>n(!1,r.id,r.units),children:"-"}),k.jsx("p",{className:"mx-2",children:" Adjust Stock"}),k.jsx("button",{className:"bg-blue-400 p-2 rounded-md shadow-blkSm",onClick:()=>n(!0,r.id,r.units),children:"+"})]})]})]},Ku()))})]})},L0=()=>{const{items:e}=Rn();return k.jsxs("div",{className:"flex flex-col justify-center items-center",children:[k.jsx(O0,{}),e.length>0&&k.jsx(T0,{})]})},z0=({children:e})=>{const{user:t,isLoading:n}=Rn(),r=Mu();return C.useEffect(()=>{t||r("/login")},[t]),n?k.jsx(Sd,{}):e};function j0(e){return Rr({tag:"svg",attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3 0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8 24.9-25 24.9-65.5-.1-90.5z"}}]})(e)}function I0(e){return Rr({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"line",attr:{x1:"3",y1:"12",x2:"21",y2:"12"}},{tag:"line",attr:{x1:"3",y1:"6",x2:"21",y2:"6"}},{tag:"line",attr:{x1:"3",y1:"18",x2:"21",y2:"18"}}]})(e)}const F0=()=>{const[e,t]=C.useState(!1),{pathname:n}=Nr(),{logoutUser:r}=Rn();return k.jsxs("div",{className:"fixed top-0 left-0 w-full flex justify-between items-center px-4 py-2",children:[k.jsx(Fo,{to:"/",className:`rounded-full p-2 text-2xl border-2 + ${n==="/"?"border-light":"bg-light text-dark shadow-insetLight border-dark"}`,children:k.jsx(j0,{})}),k.jsxs("div",{children:[k.jsx("div",{className:`text-2xl rounded-sm ${e?"bg-light text-dark border-2 border-light":""}`,onClick:()=>t(!e),children:k.jsx(I0,{})}),e&&k.jsxs("div",{className:`bg-white/40 rounded-md p-6 absolute top-14 right-4\r + flex flex-col justify-center items-center text-center min-w-[150px]`,children:[n!=="/about"?k.jsx(Fo,{className:"w-full px-4 py-2 bg-blue-400 rounded-md",to:"/about",onClick:()=>t(!1),children:"About"}):k.jsx(Fo,{className:"w-full px-4 py-2 bg-blue-400 rounded-md",to:"/",onClick:()=>t(!1),children:"Home"}),k.jsx("button",{className:"w-full px-4 py-2 bg-blue-400 rounded-md mt-4",onClick:r,children:"Logout"})]})]})]})},D0=()=>k.jsxs("main",{className:`w-full h-screen max-h-[100vh]\r + flex flex-col justify-center items-center\r + bg-dark text-light`,children:[k.jsx(F0,{}),k.jsx(Vh,{})]}),U0=()=>k.jsx("div",{className:"flex flex-col justify-center items-center",children:k.jsx("h1",{className:"text-4xl font-bold",children:"The page you're looking for doesn't exist. We respect you're commitment to testing"})}),A0=["Elsa the Tech Talk Extraordinaire","Kelly el Shuffler del Cards","McKenzie aka ScrumLord","TripleDDDaniel","Seanica Patrick"],M0=()=>k.jsxs("div",{className:"bg-blue-700 p-8 rounded-md flex flex-col justify-center items-center",children:[k.jsx("h1",{className:"text-3xl font-semibold",children:"ChronosRx Team"}),A0.map(e=>k.jsxs("h1",{className:"mt-2",children:["👑 ",e]},Ku()))]});function B0(){return k.jsxs(Qh,{children:[k.jsx(Xt,{path:"/login",element:k.jsx(k0,{})}),k.jsxs(Xt,{path:"/",element:k.jsx(z0,{children:k.jsx(D0,{})}),children:[k.jsx(Xt,{index:!0,element:k.jsx(L0,{})}),k.jsx(Xt,{path:"/about",element:k.jsx(M0,{})})]}),k.jsx(Xt,{path:"*",element:k.jsx(U0,{})})]})}$o.createRoot(document.getElementById("root")).render(k.jsx(qh,{children:k.jsx(E0,{children:k.jsx(B0,{})})})); diff --git a/examples_new/docker/client/dist/index.html b/examples_new/docker/client/dist/index.html new file mode 100644 index 000000000..ead84e7dc --- /dev/null +++ b/examples_new/docker/client/dist/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + Chronos Microservices + + + + +
+ + From 9648cf74edc9fcb6998463b7ef92dbecbe5c361b Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Tue, 9 Jan 2024 11:02:31 -0500 Subject: [PATCH 10/12] readme tuesday --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index 0fe17ae48..a31cd413b 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ Chronos is a comprehensive developer tool that monitors the health and web traff ### Chronos 13.0 - - ### **Iteration Log**
Chronos 12.0 From 4012506ff6cadb06dcf821079b1d8e36b4c391dc Mon Sep 17 00:00:00 2001 From: Elsa <112454286+ekh88@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:17:39 -0600 Subject: [PATCH 11/12] npm package readme completed --- chronos_npm_package/README.md | 145 +++++++++++++++++----------------- 1 file changed, 73 insertions(+), 72 deletions(-) diff --git a/chronos_npm_package/README.md b/chronos_npm_package/README.md index 381f92355..779c893fb 100644 --- a/chronos_npm_package/README.md +++ b/chronos_npm_package/README.md @@ -20,7 +20,7 @@ ## Using Chronos The following steps should be performed in each microservice you want to track unless otherwise noted. -### Install Chronos Tracker +### 1. Install Chronos Tracker Install the package as a dependency in each of the microservices you want to track: ``` @@ -28,76 +28,56 @@ npm install @chronosmicro/tracker ``` -### Configuring Chronos Tracker -Create a `.js` Chronos configuration file (hereby referred to as `chronos-config.js`), which exports a JavaScript object with required Chronos configuration parameters. This object will be used as the sole Chronos class constructor argument. Feel free to use a `.env` file to hold sensitive parameters like the database URI, for example. +### 2. Configuring Chronos Tracker +Create a `chronos-config.js` file, which exports a JavaScript object with required Chronos configuration parameters. Use this configuration to customize Chronos for your specific microservice environment. ```js // A sample `chronos-config.js` file +//replace the values with your specific configuration module.exports = { // General Configuration - microservice: 'my-service', - interval: 10000, + microservice: 'my-service', //Name of your microservice. For **Dockerized** microservices, this field **must** match the container_name of the corresponding Docker container. + interval: 10000, //monitoring interval in milliseconds, if ommitted, Chronos will default to recording server health every 60000 ms. // Database Information database: { - connection: 'REST', // 'REST' or 'gRPC' - type: 'MongoDB', // 'MongoDB' or 'PostgreSQL' - URI: '', // + connection: 'REST', // Choose 'REST' or 'gRPC' for your connection type + type: 'MongoDB', // Choose 'MongoDB' or 'PostgreSQL' + URI: '', // should be a connection string to the database where you intend Chronos to write and record data regarding health, HTTP route tracing, and container infomation }, - /* USE ONE OF THE MODE-SPECIFIC CONFIGURATIONS BELOW */ - // (a) Microservices + /* USE ONLY ONE OF THE CONFIGURATIONS BELOW: */ + // (a) Microservices Mode mode: 'microservices', - dockerized: false, // false or true + dockerized: false, // set to true if your service is Dockerized // (b) Kubernetes mode: 'kubernetes', - promService: 'prometheus-service', - promPort: 8080, - grafanaAPIKey: process.env.CHRONOS_GRAFANA_API_KEY, + promService: 'prometheus-service', // Prometheus service name + promPort: 8080, //Prometheus service port + grafanaAPIKey: process.env.CHRONOS_GRAFANA_API_KEY,//API for Grafana // (c) Apache Kafka mode: 'kafka', - jmxuri: '', + jmxuri: '', //URI for JMX to Prometheus Exporter // (d) Docker mode: 'docker', - promService: 'docker.for.mac.localhost', - promPort: 9090, - grafanaAPIKey: process.env.CHRONOS_GRAFANA_API_KEY, + promService: 'docker.for.mac.localhost', //Prometheus service for Docker + promPort: 9090, //Prometheus service port + grafanaAPIKey: process.env.CHRONOS_GRAFANA_API_KEY, //API key for Grafana + - /* USE ONE OF THE MODE-SPECIFIC CONFIGURATIONS ABOVE */ // Notifications + //Add notification configurations here notifications: [], } ``` +Note: Consider using a `.env` file to securely store sensitive parameters like database URIs. -Then utilize the `chronos-config.js` file into your application by importing it and using it as the Chronos class constructor argument: -```js -const chronosConfig = require('./chronos-config.js'); -const Chronos = require('@chronosmicro/tracker'); -const chronos = new Chronos(chronosConfig); -``` - - -#### Chronos Configuration Parameters -_See mode-specific configuration descriptions in the "Chronos Tracker for Microservices" section_ - -The `microservice` property takes in a string. This should be a descriptive name for your microservice. - -- Important For **Dockerized** microservices, this field **must** match the _container_name_ of the corresponding Docker container. - -The `interval` property is optional and takes in an integer. This controls the Chronos monitoring frequency. If this is omitted, Chronos will default to recording server health every 60000 ms or 60 seconds. - -The `database` property is required and takes in the following: -- `connection` is a string that should should be either 'REST' or 'gRPC' -- `type` should be a string and only supports 'MongoDB' and 'PostgreSQL' at this time -- `URI` should be a connection string to the database where you intend Chronos to write and record data regarding health, HTTP route tracing, and container infomation - -The `mode` property accepts a string that can either be 'microservices', 'kubernetes', 'kafka', or 'docker'. There are other settings that depend on the mode choice, so these are broken down in the "Chronos Tracker for Microservices" section. - +### 3. Configuring notifications The `notifications` property is an array that can be optionally left empty. It allows developers to be alerted when the server responds to requests with status codes >= 400. To set up notifications, set the value of the `notifications` property to an array of objects, each with a `type` and `settings` property. Chronos only supports **Slack** and **email** notifications at this time. @@ -124,32 +104,48 @@ notifications: [ { type: 'email', settings: { - emails: 'foobar@email.com, bizbaz@email.edu', - emailHost: 'smpt@gmail.com', - emailPort: 465, - user: process.env.SENDER_EMAIL, - password: process.env.SENDER_PASSWORD + emails: 'foobar@email.com, bizbaz@email.edu', //can be single or multiple, separated by a comma + emailHost: 'smpt@gmail.com',// the smtp host of your email server + emailPort: 465, // the email port is either **465** or **587** depending on the sender email security settings. Learn more about email ports by reading the [nodemailer docs](https://nodemailer.com/smtp/) + user: process.env.SENDER_EMAIL, //email address of the sender + password: process.env.SENDER_PASSWORD //password of the sender's email } } ] -// ... ``` -Chronos provides the option to send emails. The properties that should be provided are the following -- `emails` - The recipient list (string) can be a single email address or multiple as comma seprated values. -- `emailHost` - The smtp host (string) of your email server -- `emailPort` - The email port (integer) is either **465** or **587** depending on the sender email security settings. Learn more about email ports by reading the [nodemailer docs](https://nodemailer.com/smtp/) -- `user` - The email address (string) of the sender -- `password` - The password (string) of the sender email -**NOTE: Email notification settings may require alternative security settings to work** +### 4. Utilize `chronos-config.js` in your application +To integrate the `chronos-config.js` file into your application, follow these steps: + 1. importing the `chronos-config.js` file +```js +const chronosConfig = require('./chronos-config.js'); +``` + 2. importing the Chronos class +```js +const Chronos = require('@chronosmicro/tracker'); +``` + 3. creating a new instance of the Chronos class +```js +const chronos = new Chronos(chronosConfig); +``` + # +### Mode Specific Configurations + + + +### A. Chronos Tracker for "Microservices" Mode +In the `microservices` mode, Chronos employs the `dockerized` setting to determine the operational environment of the microservice. + + * `dockerized`: This setting is crucial for specifying the nature of the service deployment. + * Default Setting: If `dockerized` is not explicitly set to true, Chronos defaults to assuming that the service is not operating in a Docker container environment. Hence, the default value of `dockerized` is false. + * When `dockerized` is `false`: This configuration tells Chronos to collect metrics directly from the host system. It's applicable for services running outside of Docker containers. + * When `dockerized` is `true`: This configuration directs Chronos to retrieve metrics from the Docker daemon, aligning with services deployed within Docker containers for accurate monitoring. + -### Chronos Tracker for "Microservices" Mode -The mode `microservices` uses the additional setting `dockerized`, which indicates whether or not the microservice has been containerized with Docker. If omitted, Chronos will assume this server is not running in a container, i.e. `dockerized` will default to _false_. -Setting the flag to `false` will collect metrics from the host computer directly, while `true` indicates for Chronos to pull metrics from the Docker daemon. ```js // Excerpt from a chronos-config.js @@ -173,7 +169,7 @@ const chronos = new Chronos(chronosConfig); chronos.track() ``` -If you are using an Express.js REST API, calling `Chronos.track()` returns middleware that allows users to track incoming network requests and outgoing their corresponding outgoing responses by marking them with unique IDs using `Chronos.propagate`. +If you are using an Express.js REST API, calling `Chronos.track()` returns middleware that allows users to track incoming network requests and their corresponding outgoing responses by marking them with unique IDs using `Chronos.propagate`. If you want to utilize this feature, setup a catchall route that will serve as a pass through for tracking and chain in the middleware from `Chronos.track`. @@ -212,8 +208,11 @@ volumes: - "/var/run/docker.sock:/var/run/docker.sock" ``` -### Chronos Tracker for "Kubernetes" Mode -Chronos can monitor an Kubernetes clusters by saving metric data from instant queries to a Prometheus server in your Kubernetes cluster, and then display all metrics data through Grafana dashboards. +Check out the [**Microservices Readme**](../examples_new/README.md). +# + +### B. Chronos Tracker for "Kubernetes" Mode +Chronos monitors Kubernetes clusters in two steps. First, it saves metric data from instant queries to a Prometheus server in your Kubernetes cluster. Then, it displays all metrics data through Grafana dashboards. In `chronos-config.js`, set the `mode` to `kubernetes` and pass it both the name of the port the Prometheus server is listening on INSIDE the cluster, and the name of the Prometheus service so that its IP address can be resolved using KubeDNS. @@ -245,9 +244,10 @@ const chronos = new Chronos(chronosConfig); chronos.kubernetes(); ``` +Check out the [**Kubernetes Readme**](../examples/kubernetes/README.md). +# - -### Chronos Tracker for "Kafka" Mode +### C. Chronos Tracker for "Kafka" Mode Chronos can monitor an Apache Kafka cluster via JMX to Prometheus Exporter. In order for this feature to work you must be running [JMX to Prometheus Exporter](https://github.com/prometheus/jmx_exporter) either as a Java Agent with your cluster or as a standalone HTTP server. Then, use `chronos-config.js` to specifiy where to retrieve the metrics. @@ -280,7 +280,7 @@ When viewing your information in the Chronos Electron application the data will **NOTE:** We provide a jmx_config.yaml file in the Chronos root folder for use with JMX prometheus that provides some useful baseline metrics to monitor. # -### Chronos Tracker for "Docker" Mode +### D. Chronos Tracker for "Docker" Mode Chronos monitors Docker containers by storing metric data through instant Prometheus queries within your Docker container environment. In `chronos-config.js`, configure the `mode` parameter to `docker`. Additionally, provide the name of the port where the Prometheus server is actively listening inside the container, and specify the name of the Prometheus service to enable DNS-based resolution of its IP address. @@ -313,8 +313,8 @@ const chronos = new Chronos(chronosConfig); chronos.docker(); ``` - - +Check out the [**Docker Readme**](../examples/docker/README.md). +# ### Chronos Tracker for gRPC To monitor your gRPC server, setup `chronos-config.js` as if it was a standard microservices example, but be sure to set the `connection` type to `gRPC`. @@ -432,17 +432,18 @@ Finally, on all servers that will be involved in the request path, invoke `chron ```js chronos.link(client, ServerWrapper); ``` +Check out the [**gRPC README**](../examples/gRPC/README.md). # ### Viewing Chronos Data Once you have configured and intialized Chronos Tracker, it will automatically record monitoring data when your servers are running. The data will be saved into your database of choice, and then start the Chronos desktop app to view by cloning our [GitHub repo](https://github.com/open-source-labs/Chronos). Folow the ReadMe in that repo to setup the Chronos desktop app. - +# ## Examples We provide working example microservice applications in Chronos desktop app repo in the [**examples**](../chronos_npm_package/README.md) folder. - +# ## Technologies - Electron - JavaScript @@ -458,16 +459,16 @@ We provide working example microservice applications in Chronos desktop app repo - Docker - Kubernetes - +# ## Contributing Chronos hopes to inspire an active community of both users and developers. For questions, comments, or contributions, please submit a pull request. Read our [contributing README](../../CONTRIBUTING.md) to further learn how you can take part in improving Chronos. - +# ## License [MIT](https://github.com/oslabs-beta/Chronos/blob/master/LICENSE.md) # -###### Return to [Top](#chronos) +###### Return to [Top](#whats-new) From 747006557ff93d5589327b0d9cbbc5c8393282ae Mon Sep 17 00:00:00 2001 From: Zhongyan Liang Date: Wed, 10 Jan 2024 10:57:23 -0500 Subject: [PATCH 12/12] main readme --- README.md | 10 +++++++--- contributors.md | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a31cd413b..1c26cad0e 100644 --- a/README.md +++ b/README.md @@ -28,12 +28,16 @@ Contributors: [Elsa Holmgren](https://github.com/ekh88), [Mckenzie Morris](https://github.com/mckenzie-morris), [Kelly Chandler](https://github.com/kchandler44), -[Sean Simson](https://github.com/seantokuzo), +[Sean Simpson](https://github.com/seantokuzo), [Zhongyan Liang](https://github.com/ZhongyanLiang)
Updates: -
  • TBD
  • +
  • Created new and improved microservices application with updated syntax to better demonstrate Chronos' capabilities
  • +
  • Dockerized microservices application to demonstrate Chronos within a containerized environment
  • +
  • Added visulization of Chronos' codebase to illustrate overall structure
  • +
  • Simplified installation and startup instructions in the root directory README file
  • +
  • Improved documentation in chronos_npm_package README file for easier on-boarding
  • Version 13.0 Medium Article @@ -256,7 +260,7 @@ export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0" 1. From the root directory, run `npm install` 2. Run `npm run build` -3. Depends on the environment, run `npm audit fix` or `npm audit fix --force` if prompted +3. For Windows users, run `npm audit fix` or `npm audit fix --force` if prompted 4. Open a new terminal and run `npm run dev:app` to start the Webpack development server 5. Open a new terminal and run `npm run dev:electron` to start the Electron UI in development mode. 6. Refer to `Examples` sections below to spin up example applications. diff --git a/contributors.md b/contributors.md index d2e09da83..5ce25dbe1 100644 --- a/contributors.md +++ b/contributors.md @@ -3,7 +3,7 @@ [Elsa Holmgren](https://github.com/ekh88), [Mckenzie Morris](https://github.com/mckenzie-morris), [Kelly Chandler](https://github.com/kchandler44), -[Sean Simson](https://github.com/seantokuzo), +[Sean Simpson](https://github.com/seantokuzo), [Zhongyan Liang](https://github.com/ZhongyanLiang), [Tyler Coryell](https://github.com/Tcoryell), [Edwin Leong](https://github.com/edwinlny),