diff --git a/mover/001/coLearn2411/images/readme.md b/mover/001/coLearn2411/images/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/001/coLearn2411/images/readme.md @@ -0,0 +1 @@ + diff --git "a/mover/0xHoGan/co-learn-2411/images/b\347\253\231\345\205\263\346\263\250.png" "b/mover/0xHoGan/co-learn-2411/images/b\347\253\231\345\205\263\346\263\250.png" new file mode 100644 index 000000000..9d6f32a91 Binary files /dev/null and "b/mover/0xHoGan/co-learn-2411/images/b\347\253\231\345\205\263\346\263\250.png" differ diff --git a/mover/Ming-XX/code/readme.md b/mover/0xHoGan/co-learn-2411/images/readme.md similarity index 100% rename from mover/Ming-XX/code/readme.md rename to mover/0xHoGan/co-learn-2411/images/readme.md diff --git "a/mover/0xHoGan/co-learn-2411/images/task1/11\346\234\2105\346\227\245\350\257\276\347\250\213\345\255\246\344\271\240.png" "b/mover/0xHoGan/co-learn-2411/images/task1/11\346\234\2105\346\227\245\350\257\276\347\250\213\345\255\246\344\271\240.png" new file mode 100644 index 000000000..3905f14c4 Binary files /dev/null and "b/mover/0xHoGan/co-learn-2411/images/task1/11\346\234\2105\346\227\245\350\257\276\347\250\213\345\255\246\344\271\240.png" differ diff --git a/mover/0xHoGan/co-learn-2411/images/task1/SuiWallet.png b/mover/0xHoGan/co-learn-2411/images/task1/SuiWallet.png new file mode 100644 index 000000000..ed1f65df3 Binary files /dev/null and b/mover/0xHoGan/co-learn-2411/images/task1/SuiWallet.png differ diff --git a/mover/0xHoGan/co-learn-2411/images/task1/suiscan.png b/mover/0xHoGan/co-learn-2411/images/task1/suiscan.png new file mode 100644 index 000000000..5278dae18 Binary files /dev/null and b/mover/0xHoGan/co-learn-2411/images/task1/suiscan.png differ diff --git "a/mover/0xHoGan/co-learn-2411/images/task3/11\346\234\21012\346\227\245\350\257\276\347\250\213\345\255\246\344\271\240.png" "b/mover/0xHoGan/co-learn-2411/images/task3/11\346\234\21012\346\227\245\350\257\276\347\250\213\345\255\246\344\271\240.png" new file mode 100644 index 000000000..25b3a0a54 Binary files /dev/null and "b/mover/0xHoGan/co-learn-2411/images/task3/11\346\234\21012\346\227\245\350\257\276\347\250\213\345\255\246\344\271\240.png" differ diff --git "a/mover/0xHoGan/co-learn-2411/images/\345\205\263\346\263\250HOH.png" "b/mover/0xHoGan/co-learn-2411/images/\345\205\263\346\263\250HOH.png" new file mode 100644 index 000000000..c6e18b13c Binary files /dev/null and "b/mover/0xHoGan/co-learn-2411/images/\345\205\263\346\263\250HOH.png" differ diff --git "a/mover/0xHoGan/co-learn-2411/images/\347\273\231github\344\273\223\345\272\223star.png" "b/mover/0xHoGan/co-learn-2411/images/\347\273\231github\344\273\223\345\272\223star.png" new file mode 100644 index 000000000..a1780f924 Binary files /dev/null and "b/mover/0xHoGan/co-learn-2411/images/\347\273\231github\344\273\223\345\272\223star.png" differ diff --git a/mover/0xHoGan/co-learn-2411/project/readme.md b/mover/0xHoGan/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/0xHoGan/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/0xHoGan/co-learn-2411/readme.md b/mover/0xHoGan/co-learn-2411/readme.md new file mode 100644 index 000000000..47a56259f --- /dev/null +++ b/mover/0xHoGan/co-learn-2411/readme.md @@ -0,0 +1,55 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [] b站关注截图: ![关注截图](./images/b站关注.png) + + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/task1/11月5日课程学习.png) +- [] 第二周:![学习记录截图](./images/task3/11月12日课程学习.png) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/0xHoGan/code/readme.md b/mover/0xHoGan/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/Ming-XX/code/task1/hello_move/Move.lock b/mover/0xHoGan/code/task1/hello_move/Move.lock similarity index 79% rename from mover/Ming-XX/code/task1/hello_move/Move.lock rename to mover/0xHoGan/code/task1/hello_move/Move.lock index 30ab1cef8..cedc1b702 100644 --- a/mover/Ming-XX/code/task1/hello_move/Move.lock +++ b/mover/0xHoGan/code/task1/hello_move/Move.lock @@ -21,7 +21,7 @@ dependencies = [ ] [move.toolchain-version] -compiler-version = "1.37.1" +compiler-version = "1.37.3" edition = "2024.beta" flavor = "sui" @@ -29,6 +29,6 @@ flavor = "sui" [env.testnet] chain-id = "4c78adac" -original-published-id = "0xdd4ca7a8ef868cfe3b9ac142bf1f6ba5643196165a6f0f6f9d76628acfab9a52" -latest-published-id = "0xdd4ca7a8ef868cfe3b9ac142bf1f6ba5643196165a6f0f6f9d76628acfab9a52" +original-published-id = "0xcfbaa6e97ae0b3184cbc9b72eb9a1f21f82523aa32bccf86c9c27f88bd583a15" +latest-published-id = "0xcfbaa6e97ae0b3184cbc9b72eb9a1f21f82523aa32bccf86c9c27f88bd583a15" published-version = "1" diff --git a/mover/Ming-XX/code/task1/hello_move/Move.toml b/mover/0xHoGan/code/task1/hello_move/Move.toml similarity index 100% rename from mover/Ming-XX/code/task1/hello_move/Move.toml rename to mover/0xHoGan/code/task1/hello_move/Move.toml diff --git a/mover/0xHoGan/code/task1/hello_move/sources/hello_move.move b/mover/0xHoGan/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..b2899ead7 --- /dev/null +++ b/mover/0xHoGan/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,19 @@ +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext, sender}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"0xHoGan"), + }; + transfer(hello_move, sender(ctx)); +} \ No newline at end of file diff --git a/mover/Ming-XX/code/task1/hello_move/tests/hello_move_tests.move b/mover/0xHoGan/code/task1/hello_move/tests/hello_move_tests.move similarity index 100% rename from mover/Ming-XX/code/task1/hello_move/tests/hello_move_tests.move rename to mover/0xHoGan/code/task1/hello_move/tests/hello_move_tests.move diff --git a/mover/0xHoGan/notes/readme.md b/mover/0xHoGan/notes/readme.md new file mode 100644 index 000000000..256dfc08a --- /dev/null +++ b/mover/0xHoGan/notes/readme.md @@ -0,0 +1,349 @@ +# Task1 Hello Move + +## 1.学习资源 + +* [Bootcamp 01_hello](https://github.com/hoh-zone/move-bootcamp/tree/main/01_hello) +* [任务指南](https://github.com/move-cn/letsmove/tree/main/task) +* [提交作业](https://github.com/move-cn/letsmove) +* [通用工具讲解(Vs Code、Git)](https://github.com/hoh-zone/lets-fullstack) + +## 2.Prerequisites(Liunx) + +``` +sudo apt-get update +sudo apt-get install curl git-all cmake gcc libssl-dev pkg-config libclang-dev libpq-dev build-essential +``` + +## 3.Install Sui(Liunx) + +1. Go to [Sui](https://github.com/MystenLabs/sui). +2. In the right pane, find the Releases section. +3. Click the release tagged Latest to open the release's page. +4. In the Assets section of the release, select the .tgz compressed file that corresponds to your operating system. +5. Extract all files from the .tgz file into the preferred location on your system. + +``` +wget .tgz +tar -zxvf .tgz +``` + +6. Navigate to the expanded folder. You should have the following extracted files: + +| Name | Description | +| ---- | ---- | +|move-analyzer | Language Server Protocol implementation. | +|sui | Main Sui binary.| +|sui-bridge | Sui native bridge.| +|sui-data-ingestion | Capture Full node data for indexer to store in a database.| +|sui-faucet | Local faucet to mint coins on local network.| +|sui-graphql-rpc | GraphQL service for Sui RPC. | +|sui-node | Run a local node.| +|sui-test-validator | Run test validators on a local network for development.| +|sui-tool | Provides utilities for Sui.| + +7. Add the folder containing the extracted files to ~/.bashrc. + +``` +export PATH=$PATH:~/sui +``` + +8. Start a new terminal session or type source ~/.bashrc to load the new PATH value. + +``` +source ~/.bashrc +``` + +## 4.Check Sui is Installed + +``` +Sui -V +``` + +## 5.Sui Wallet +* [SuiWallet(Chrome)](https://chromewebstore.google.com/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil) + +## 6.Sui Explorer +* [Suiscan](https://suiscan.xyz/testnet/home) +* [SuiVision](https://testnet.suivision.xyz/) + +## 7.Sui CLI Command +* Get Sui Address + +``` +sui client addresses +``` + +tips:The first time you start Sui client without having a client.yaml file, the console displays the following message: + +``` +Config file ["``/client.yaml"] doesn't exist, do you want to connect to a Sui Full node server [y/N]? +``` + +* Get Sui Faucet + +``` +sui client faucet +``` + +* Request test tokens through cURL + +``` +curl --location --request POST 'https://faucet.testnet.sui.io/gas' +--header 'Content-Type: application/json' +--data-raw '{ + "FixedAmountRequest": { + "recipient": "``" + } +}' +``` + +* Get Sui Gas + +``` +sui client gas +``` + +* Add a Mnemonic Phrase to Sui +``` +sui keytool import "INPUT KEY_SCHEME" ed25519 +``` + +## 8.创建项目 + +``` +sui move new hello_move +``` + +* 将如下代码复制到sources/hello_move.move + +``` +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext, sender}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"move"), + }; + transfer(hello_move, sender(ctx)); +} +``` + +## 9.发布上链 + +``` +sui client publish +``` + +* 如遇到访问github网络问题,可修改Move.toml中的dependencies段 + +``` +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +``` + +# Task2 Move Coin +## 1.学习资源 +* [Bootcamp 02_basic](https://github.com/hoh-zone/move-bootcamp/tree/main/02_basic) + +## 2.Move基础数据类型 +* 常量、变量的定义 +``` +let 常量名称: 类型 = 常量值; +let mut 变量名称: 类型 = 变量值; +``` + +* 数字类型(Number) + * Move只有6个无符号整数 + * Move没有负数和小数 + * 小数定义: a / b,只要放大整数的倍数 + * 负数定义: 前端展现和约定的方式表示,比如U8类型的1-127表示负数,128-255表示正数 + * 如果未指定类型,编译器会尝试推断类型,如果无法推断,则假定为U32 + * 有两种常用进制:十进制、以0x为前缀十六进制 + * 运算符: 加+、减-、乘*、除/、%取余数 + * 只有类型相同的才能做基本运算 + * as是Move的整数类型转换运算符,比如1u8 as u64 + * Move不支持类型的隐式转换 + +| u8 | Unsigned 8-bit | 0 - 255 | +| --- | --- | --- | +| u16 | Unsigned 16-bit | 0 - 65535 | +| u32 | Unsigned 32-bit | 0 - 4294967295 | +| u64 | Unsigned 64-bit | 0 - 2的64次方-1 | +| u128 | Unsigned 128-bit | 0 - 2的128次方-1 | +| u256 | Unsigned 256-bit | 0 - 2的256次方-1 | + +* 布尔类型(Bool) + * 值只有两种:true和false + * 支持与&&、或||、非!运算 + +* 地址类型(Address) + * 长度为32字节 + * 在表达式中,值需要使用前缀@ + * Move.toml中的[addresses]定义,就可以在代码中引用 +``` +[addresses] +hello_move = "0x0" +let address1: address = @hello_move +``` + +* 编译合约 +``` +sui move build +``` + +## 3.包、模块、方法 +* 包 + * 包是同一个合约地址包含的全部代码的集合,由很多模块组成 + +* 模块(Module) + * module hello_move::hello + * 关键字module表示包 + * hello_move来自Move.toml的[addresses] + * hello和外面的文件名对应 + +* 方法(Function) + * 语法 +``` +fun <[type_parameters: constraint],*>([identifier: type],*):    +``` + + * 方法访问权限控制 + +| 方法签名 | 调用范围 | 返回值 | +| --- | --- | --- | +| fun call() | 只能在模块内调用 | 可以有 | +| public fun call() | 全部合约能调用 | 可以有 | +| public entry fun call() | 全部合约能调用和Dapp(RPC)调用 | 无 | +| entry fun call() | 只能Dapp(RPC)调用 | 无 | +| public(package) fun call() | 只能当前的模块能调用 | 可以有 | + * init方法 + * 只能是私有的 + * 会在发布合约时自动调用一次 + * 只有两种形式 +``` +fun init(ctx: &mut TxContext) {} +fun init(otw: EXAMPLE, ctx: &mut TxContext) {} +``` + +## 4.第一个Dapp +* NodeJs安装 +``` +curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash - +sudo apt-get install -y nodejs + +# Node.js version +node -v + +# npm version +npm -v + +sudo npm install -g pnpm +``` + +* [脚手架](https://sdk.mystenlabs.com/dapp-kit/create-dapp) + * 创建Dapp项目,会提供两种模板 react-client-dapp(仅有前端) 和 react-e2e-counter(前端和后端) +``` +pnpm create @mysten/dapp --template react-e2e-counter +``` + +* 发布上链 +``` +cd my-first-sui-dapp/move/counter +sui client publish +``` + +* 安装依赖 +``` +cd my-first-sui-dapp +pnpm install +``` + +* 添加合约地址 + * my-first-sui-dapp/src下的constants.ts添加部署的合约地址 + +* 运行Dapp项目 +``` +pnpm dev +``` + +## 5.基础语法 +* 注释 +``` +// # 注释 +/* */ # 块注释 +/// # 文档注释 +``` + +* if(条件语句) +``` +if (condition) true_branch else () +``` + +* while(条件循环语句) + * 满足条件为True,才会执行表达式 +``` +while ( idx <= 99 ) { + idx = idx + 1; + if ( idx % 2 == 0) continue; # continue 跳出本次循环 + # break 直接跳出循环 +} +``` + +* loop(无限循环语句) + * 没有条件判断,会一直循环,直到break loop结束。 +``` +loop { + i = i + 1 +} +``` + +## 6.Object定义 +* Struct(结构体) + * 结构体是Move中创建自定义类型的唯一方法。 + * 只能在模块内部定义,并且以关键字public struct开头 + * +``` +public struct NAME { + FIELD1: TYPE1, + FIELD2: TYPE2, + ... +} +``` + +* 数据模型 + * 以太坊和Aptos通过账户(account)余额来追踪区块链状态 + * 比特币和Cardano则使用UTXO来记账 + +* 对象(Object) + * 对象在sui上存储,维护了一个全局的Map数据结构:Map + * 对象定义 + * 必须有key能力 + * 第一个字段必须是ID,而且类型是sui::object::UID + * + +* + + +# Task3 Move NFT + + + +# Task4 Move Game + +# Task5 Move Swap + +# Task6 SDK PTB + +# Task7 Move CTF Check In + +# Task8 Move CTF POW diff --git a/mover/0xHoGan/readme.md b/mover/0xHoGan/readme.md new file mode 100644 index 000000000..f43942543 --- /dev/null +++ b/mover/0xHoGan/readme.md @@ -0,0 +1,54 @@ +## 基本信息 +- Sui钱包地址: `0x034b72d1519ce9fcd53a3e548f25e992abd7c6edf34c5ee794cad764963c464e` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `0xHoGan` + +## 个人简介 +- 工作经验: 8年 +- 技术栈: `Java` `Python` +> 重要提示 请认真写自己的简介 +- 多年后端开发经验,熟悉Java、Python +- 联系方式: tg: `hogan0x` + +## 任务 + +## 01 hello move +- [√] Sui cli version: sui 1.37.3-b8eb8920aeca +- [√] Sui钱包截图: ![Sui钱包截图](./co-learn-2411/images/task1/SuiWallet.png) +- [√] package id: 0xcfbaa6e97ae0b3184cbc9b72eb9a1f21f82523aa32bccf86c9c27f88bd583a15 +- [√] package id 在 scan上的查看截图:![Scan截图](./co-learn-2411/images/task1/suiscan.png) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/0xHoGan/scan/readme.md b/mover/0xHoGan/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/0xHoGan/scan/readme.md @@ -0,0 +1 @@ + diff --git a/mover/262S/co-learn-2411/images/readme.md b/mover/262S/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/262S/co-learn-2411/project/readme.md b/mover/262S/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/262S/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/262S/co-learn-2411/readme.md b/mover/262S/co-learn-2411/readme.md new file mode 100644 index 000000000..9b3eccb1d --- /dev/null +++ b/mover/262S/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/262S/code/readme.md b/mover/262S/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/262S/code/task1/hellomove/Move.lock b/mover/262S/code/task1/hellomove/Move.lock new file mode 100644 index 000000000..0cfa7f704 --- /dev/null +++ b/mover/262S/code/task1/hellomove/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "11BAF94A33662E7D904523341D85F0402E2C1A82A85216775F5E05EC6ADE9D9C" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xef7d2ccd783c5467d023ac357f31e02a02b58ffc7f5552d6b3d3d3294a03fbbf" +latest-published-id = "0xef7d2ccd783c5467d023ac357f31e02a02b58ffc7f5552d6b3d3d3294a03fbbf" +published-version = "1" diff --git a/mover/262S/code/task1/hellomove/Move.toml b/mover/262S/code/task1/hellomove/Move.toml new file mode 100644 index 000000000..be65a17c8 --- /dev/null +++ b/mover/262S/code/task1/hellomove/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hellomove" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hellomove = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/262S/code/task1/hellomove/sources/hellomove.move b/mover/262S/code/task1/hellomove/sources/hellomove.move new file mode 100644 index 000000000..6bd208a4b --- /dev/null +++ b/mover/262S/code/task1/hellomove/sources/hellomove.move @@ -0,0 +1,19 @@ +module hellomove::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hellomove = Hello { + id: object::new(ctx), + say: string(b"262S"), + }; + transfer(hellomove, ctx.sender()); +} \ No newline at end of file diff --git a/mover/262S/code/task1/hellomove/tests/hellomove_tests.move b/mover/262S/code/task1/hellomove/tests/hellomove_tests.move new file mode 100644 index 000000000..3f6ec59dc --- /dev/null +++ b/mover/262S/code/task1/hellomove/tests/hellomove_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hellomove::hellomove_tests; +// uncomment this line to import the module +// use hellomove::hellomove; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hellomove() { + // pass +} + +#[test, expected_failure(abort_code = ::hellomove::hellomove_tests::ENotImplemented)] +fun test_hellomove_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/262S/images/s.PNG b/mover/262S/images/s.PNG new file mode 100644 index 000000000..41fd39bcd Binary files /dev/null and b/mover/262S/images/s.PNG differ diff --git a/mover/262S/images/w.PNG b/mover/262S/images/w.PNG new file mode 100644 index 000000000..842a27d85 Binary files /dev/null and b/mover/262S/images/w.PNG differ diff --git a/mover/262S/notes/readme.md b/mover/262S/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/262S/readme.md b/mover/262S/readme.md new file mode 100644 index 000000000..51e73cf62 --- /dev/null +++ b/mover/262S/readme.md @@ -0,0 +1,53 @@ +## 基本信息 +- Sui钱包地址: `0x70fb19e1845ba09696fb8f6db7b8243137a6aa2b0d04bb674ed371c8871fb27e` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `262S` + +## 个人简介 +- 工作经验: 0年 +- 技术栈: `Rust` `C++` +- 多年web2开发经验,对Move特别感兴趣,想通过Move入门区块链 +- 联系方式: tg: `` + +## 任务 + +## 01 hello move +- [] Sui cli version:sui-client 1.37.1-7839b9501066 +- [] Sui钱包截图: ![Sui钱包截图](./images/s.PNG) +- [] package id: 0xef7d2ccd783c5467d023ac357f31e02a02b58ffc7f5552d6b3d3d3294a03fbbf +- [] package id 在 scan上的查看截图:![Scan截图](./images/w.PNG) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/262S/scan/readme.md b/mover/262S/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/262S/scan/readme.md @@ -0,0 +1 @@ + diff --git a/mover/404ll/code/task6/navi_sdk/src/App.tsx b/mover/404ll/code/task6/navi_sdk/src/App.tsx new file mode 100644 index 000000000..32cb11f4b --- /dev/null +++ b/mover/404ll/code/task6/navi_sdk/src/App.tsx @@ -0,0 +1,68 @@ +import { NAVISDKClient } from 'navi-sdk'; +import { TransactionBlock } from "@mysten/sui.js/transactions"; +import { depositCoin, borrowCoin, SignAndSubmitTXB } from 'navi-sdk/dist/libs/PTB/index.js'; +import { CoinInfo, Pool, PoolConfig } from "navi-sdk/dist/types"; +import { pool, wUSDC, Sui } from 'navi-sdk/dist/address.js'; +import { Transaction } from '@mysten/sui/transactions'; + + +async function navi() { + // 格式化日期数字,确保为两位数格式(如 01, 02) + const formatDateNumber = (num: number) => (num < 10 ? `0${num}` : `${num}`); + + // 获取当前时间信息并计算 `amount` + const date = new Date(); + const day = formatDateNumber(date.getDate()); + const month = formatDateNumber(date.getMonth() + 1); // 注意月份从 0 开始,需要 +1 + const hour = formatDateNumber(date.getHours()); + const amount = Number(`${month}${day}${hour}`); + + // 初始化 + const mnemonic = process.env.mnemonic; + const client = new NAVISDKClient({ mnemonic, networkType: "mainnet", numberOfAccounts: 1 }); + + //const txb = new TransactionBlock(); + const txb = new Transaction(); + const account = client.accounts[0]; + const sender = account.address; + txb.setSender(sender); + txb.setGasBudget(100000000); + + + console.log("账户地址: ", sender); + + // 获取账户中的 SUI 资产 + const allCoins = await account.getCoins(Sui); + console.log("账户中的 SUI: ", allCoins); + + // 存入 SUI + const depositAmount = 1e9; // 1 SUI + const suiPool: PoolConfig = pool[Sui.symbol as keyof Pool]; + const [toDeposit] = txb.splitCoins(txb.gas, [depositAmount]); + depositCoin(txb, suiPool, toDeposit, depositAmount); + console.log("存入 SUI: ", depositAmount); + + // 借出 wUSDC + const usdcPool: PoolConfig = pool[wUSDC.symbol as keyof Pool]; + const toBorrowCoin: CoinInfo = wUSDC; + const borrowAmount = amount * 10 ** toBorrowCoin.decimal; + const [usdcBorrowCoinObj] = await borrowCoin(txb, usdcPool, borrowAmount); + console.log(`借出 USDC: ${borrowAmount / 10 ** toBorrowCoin.decimal}`); + + // 归还 USDC + depositCoin(txb, usdcPool, usdcBorrowCoinObj, borrowAmount); + console.log("归还 USDC: ", borrowAmount); + + // 签名并提交交易 + const result = await SignAndSubmitTXB(txb, account.client, account.keypair); + console.log("交易结果: ", result); + + return result; +} + +// 执行任务 +navi().then((result) => { + console.log("任务执行成功,结果为: ", result); +}).catch((error) => { + console.error("任务执行失败: ", error); +}); diff --git a/mover/404ll/readme.md b/mover/404ll/readme.md index 74524fa4b..2d88d4a6e 100644 --- a/mover/404ll/readme.md +++ b/mover/404ll/readme.md @@ -46,7 +46,7 @@ - [FxnE3wH7yaYxdB9BeUAt8kwfAtPNhXRwNUcPkSiBSoUK] call swap CoinB-> CoinA hash : ## 06 Dapp-kit SDK PTB - - [] save hash : + - [x] save hash : 9JhgQrQoTwHhQfHSbj5tWZmzRzSF5LBTgNDqviG8iojz ## 07 Move CTF Check In - [] CLI call 截图 : ![截图](./images/你的图片地址) diff --git a/mover/AlexWaker/co-learn-2411/images/week2answer.png b/mover/AlexWaker/co-learn-2411/images/week2answer.png new file mode 100644 index 000000000..2e84d8930 Binary files /dev/null and b/mover/AlexWaker/co-learn-2411/images/week2answer.png differ diff --git a/mover/AlexWaker/co-learn-2411/images/week2learn.jpg b/mover/AlexWaker/co-learn-2411/images/week2learn.jpg new file mode 100644 index 000000000..2e33ba46a Binary files /dev/null and b/mover/AlexWaker/co-learn-2411/images/week2learn.jpg differ diff --git a/mover/AlexWaker/co-learn-2411/readme.md b/mover/AlexWaker/co-learn-2411/readme.md index cb3f8de0e..4e4b3cf02 100644 --- a/mover/AlexWaker/co-learn-2411/readme.md +++ b/mover/AlexWaker/co-learn-2411/readme.md @@ -11,27 +11,27 @@ ## 每周课程学习 - [✅] 第一周:![学习记录截图](./images/week1learn.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [✅] 第二周:![学习记录截图](./images/week2learn.jpg) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 - [✅] 第一周:![学习记录截图](./images/week1answer.jpeg) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [✅] 第二周:![学习记录截图](./images/week2answer.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 -- [] 第一篇笔记 +- [✅] 第一篇笔记: [登链社区](https://learnblockchain.cn/article/9985) - [] 第二篇笔记 - [] 第三篇笔记 - [] 第四篇笔记 ## 对外输出学习笔记 -- [] 第一篇笔记【学习笔记链接】 +- [✅] 第一篇笔记【[登链社区](https://learnblockchain.cn/article/9985)】 - [] 第二篇笔记【学习笔记链接】 - [] 第三篇笔记【学习笔记链接】 - [] 第四篇笔记【学习笔记链接】 diff --git a/mover/AlexWaker/code/task4/task4_game.move b/mover/AlexWaker/code/task4/task4_game.move new file mode 100644 index 000000000..c42e32bef --- /dev/null +++ b/mover/AlexWaker/code/task4/task4_game.move @@ -0,0 +1,144 @@ + +// 目前该游戏仅支持两人对赌,且必须一个人猜正,一个人猜反 +module task4_game::alexwaker_coin_game { + + use sui::balance; + use sui::balance::{Balance, zero}; + use sui::coin::{Coin, into_balance, from_balance}; + //use sui::object; + //use sui::coin; + use sui::random; + use sui::random::Random; + use sui::transfer::{share_object, public_transfer}; + use sui::tx_context::{sender}; + use my_faucet_coin::alexwaker_faucet_coin::{ALEXWAKER_FAUCET_COIN}; + + /// 记录玩家的下注数据 + public struct Bet has store, drop { + //id: UID, + player: address, // 玩家地址 + guess: bool, // true: 正, false: 反 + //val: Balance, // 玩家下注数量 + } + + /// 游戏的主状态 + public struct Game has key, store { + id: UID, + admin: address, // 管理员地址 + // treasury_cap: TreasuryCap, // 游戏币资金池 + bets: vector, // 当前所有下注 + //bet_amount: u64, // 每次下注的固定金额 + val: Balance, // 游戏总资金池 balance类型 + } + fun init(ctx: &mut TxContext){ + let admin = ctx.sender(); + let game = Game { + id: object::new(ctx), + admin: admin, + // treasury_cap: TreasuryCap::new(), + // treasury_cap: TreasuryCap, // 指定泛型参数 + bets: vector::empty(), + //bet_amount: 100000, + val: zero(), + }; + share_object(game); + } + /// 玩家质押 + public fun deposit(game: &mut Game, player: address, guess: bool, coin: Coin, ctx: &mut TxContext) { + //assert!(coin.value() < game.bet_amount); + let mut all_balance = into_balance(coin); + //let in_balance = balance::split(&mut all_balance, game.bet_amount); + balance::join(&mut game.val, all_balance); + // game.treasury_cap.transfer(coin, ctx); // 使用 transfer 方法代替 deposit + game.bets.push_back(Bet { player, guess }); + } + // 即使同一个地址多次申请相同的 Faucet 代币,每次申请都会生成一个新的 Coin 对象 + /// 开始游戏,分配奖励 + public fun play(game: &mut Game, rand: &Random, ctx: &mut TxContext) { //ctx是上下文,包含了调用者地址等等一系列信息,这是系统提供的 + assert!(ctx.sender() == game.admin); //只有调用者才能调用 + + let mut gen = random::new_generator(rand, ctx); + let _random_number = random::generate_u64(&mut gen); + + // 生成随机数并计算结果 + // 生成随机数并计算结果 + // let mut gen = random::new_generator(rand, ctx); + let _result = random::generate_bool(&mut gen); + //let random_number = random::generate_u64(ctx); // 使用 generate_u64 替代 rand + //let result = random_number % 2 == 1; // 奇数为 true (正),偶数为 false (反) // 奇数为 true (正),偶数为 false (反) + + // 找到猜对的玩家 + let mut winner_address = @0xda46e2c5f929d6e0e748262137be920601ed7002971388e1de20e02af482e6fa; + let mut len = vector::length(&game.bets); + while (len > 0) { + let bet = &game.bets[len - 1]; + if (bet.guess == _result) { + winner_address = bet.player; + }; + len = len - 1; + }; // 循环查找当前获胜者 + + + // 分配奖励 + let coin_value = game.val.value(); + let win_balance = balance::split(&mut game.val, coin_value); + let win_coin = from_balance(win_balance, ctx); + public_transfer(win_coin, winner_address); + //public_transfer(in, play_address); + //let _win_balance = from_balance(game.val, ctx); // 赢得所有奖池 + //public_transfer(_win_balance, winner_address); + // let total_prize = game.treasury_cap.balance(); + // if !winners.is_empty() { + // let prize_per_winner = total_prize / winners.length(); + // for winner in &winners { + // let prize_coin = game.treasury_cap.withdraw(prize_per_winner, ctx); + // prize_coin.transfer(*winner, ctx); + // } + // } + + // 清空下注记录 + // 没有清空记录,因此这个游戏是一次性的 + vector::pop_back(&mut game.bets); + vector::pop_back(&mut game.bets); + } + + /// 管理员提取资金 + public fun withdraw(game: &mut Game, amount: u64, ctx: &mut TxContext) { + assert!(ctx.sender() == game.admin); + assert!(game.val.value() >= amount); + let admin_balance = balance::split(&mut game.val, amount); //分出一定数量的代币转给管理员 + let admin_coin = from_balance(admin_balance, ctx); + public_transfer(admin_coin, ctx.sender()); + } +} + +// testnet +// random objectid 0x8 +// admin address: 0x0fa9d9616f097057358f714f1a80078a1360fd1a954cc86426c62ea2a751eafc +// package id: 0x414fb59c145073d9bc6abd8f950a9cc98617d090379f8a87244e22c69b4a4d56 +// game id: 0xc57e19f1a87743960d491540a774c6ab6dc5f7bf16fab0ad050ccdabdc6aeda9 +// get faucet: sui client call --package 0x0414a27f58e752e8659c5e86d3b563f39b9e9cd40e15df8eb2e4c8512b86f3ec --module alexwaker_faucet_coin --function mint_in_my_module --args 0x72444a11f047f344a12770c1b65cf6ff7592b79a9d45e6b077b1180a6f118575 100000000 0x0fa9d9616f097057358f714f1a80078a1360fd1a954cc86426c62ea2a751eafc +// player1 address: 0x0fa9d9616f097057358f714f1a80078a1360fd1a954cc86426c62ea2a751eafc +// player1 alexwaker faucet id: 0x516476e617c1ae719204dd113fb640a4ab67ffaadbd347ffe06462d15eac9060 amount 100000000 +// player2 address: 0x8ec99ae020e195d772b65296ad99d6d2f6743a091ee9acbbb56361e189e6b282 +// player2 alexwaker faucet id: 0xa6b2cd86142002b7af5b7ab72c4d20b2259bf23ff9a81802873be27c4e5df9a9 amount 100000000 +// deposit: sui client call --package --module alexwaker_coin_game --function deposit --args true/false +// withdraw: sui client call --package --module alexwaker_coin_game --function withdraw --args amount(u64) +// play: sui client call --package --module alexwaker_coin_game --function play --args 0x8 +// withdraw hash: GrCM2Hk5snnUuiGwHqp8APNvamB5sX9UKPKoey9jtjtB + +// mainnet +// random objectid 0x8 +// admin address: 0x0fa9d9616f097057358f714f1a80078a1360fd1a954cc86426c62ea2a751eafc +// package id: 0xd58b8295f6bcebbcb3b565cd2506fe547d663e71460fc35c8f77518b03d18172 +// game id: 0xae7e2e98a3b2dc70adbf4e2c94bf92038ffc65f81846e75ac2adc5d93df54c13 +// get faucet: sui client call --package 0x2adc11d7339def7528121fb6302719cc37e588e4ea2672851efa8180c29037e5 --module alexwaker_faucet_coin --function mint_in_my_module --args 0xe0c3f2fe67dfb2e47be028a8b3f4e9999c5aaac30adbc2523048d93f3f322622 100000000 0x0fa9d9616f097057358f714f1a80078a1360fd1a954cc86426c62ea2a751eafc +// player1 address: 0x0fa9d9616f097057358f714f1a80078a1360fd1a954cc86426c62ea2a751eafc +// player1 alexwaker faucet id: 0xcd0bac5add8f180a73820766cc2d2555f99ff730bef409975a2ad273981aecc1 amount 100000000 +// player2 address: 0x8ec99ae020e195d772b65296ad99d6d2f6743a091ee9acbbb56361e189e6b282 +// player2 alexwaker faucet id: 0xa13ff725c5684e3ac0cba12bb3e5f35f7d8144fb59d595a8663c0d6b3e896eaa amount 100000000 +// palyer1 deposit hash: 3GaUrZiFRhb4pfp4W1HiaSKntPxvCdJk4w27SLfy6aEA +// palyer2 deposit hash: DqgzugvZvKzCtDgSNwQUFMR3Y4Bvv6uP5SUX3AkEXrNv +// withdraw hash: 5Kkc4ckL244b1UiqrpNgp36EfCpgkeoA62rtx148eVrC +// play hash: Efd8wLmV3QNkF74Cao7jtDu1UXk8r9vTwgzSt6hnKhxn + diff --git a/mover/AlexWaker/readme.md b/mover/AlexWaker/readme.md index 964cdc392..00bc25017 100644 --- a/mover/AlexWaker/readme.md +++ b/mover/AlexWaker/readme.md @@ -33,10 +33,10 @@ - [✅] scan上的NFT截图:![Scan截图](./images/mint_alexnft_myaddress.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [✅] game package id : `0xd58b8295f6bcebbcb3b565cd2506fe547d663e71460fc35c8f77518b03d18172` +- [✅] deposit Coin hash: `3GaUrZiFRhb4pfp4W1HiaSKntPxvCdJk4w27SLfy6aEA` +- [✅] withdraw `Coin` hash: `5Kkc4ckL244b1UiqrpNgp36EfCpgkeoA62rtx148eVrC` +- [✅] play game hash: `Efd8wLmV3QNkF74Cao7jtDu1UXk8r9vTwgzSt6hnKhxn` ## 05 Move Swap - [] swap package id : diff --git a/mover/Ch1hiro/co-learn-2411/images/01.png b/mover/Ch1hiro/co-learn-2411/images/01.png new file mode 100644 index 000000000..5f065f498 Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/01.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/02.png b/mover/Ch1hiro/co-learn-2411/images/02.png new file mode 100644 index 000000000..3a7afc9f9 Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/02.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/03.png b/mover/Ch1hiro/co-learn-2411/images/03.png new file mode 100644 index 000000000..82fe2c565 Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/03.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/04.png b/mover/Ch1hiro/co-learn-2411/images/04.png new file mode 100644 index 000000000..18ef35051 Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/04.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/05.png b/mover/Ch1hiro/co-learn-2411/images/05.png new file mode 100644 index 000000000..7a6f9313a Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/05.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/06.png b/mover/Ch1hiro/co-learn-2411/images/06.png new file mode 100644 index 000000000..f10e4c244 Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/06.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/07.png b/mover/Ch1hiro/co-learn-2411/images/07.png new file mode 100644 index 000000000..ccf2d225a Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/07.png differ diff --git a/mover/Ch1hiro/co-learn-2411/images/08.png b/mover/Ch1hiro/co-learn-2411/images/08.png new file mode 100644 index 000000000..75f88b7df Binary files /dev/null and b/mover/Ch1hiro/co-learn-2411/images/08.png differ diff --git a/mover/Ch1hiro/co-learn-2411/project/readme.md b/mover/Ch1hiro/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/Ch1hiro/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/Ch1hiro/co-learn-2411/readme.md b/mover/Ch1hiro/co-learn-2411/readme.md new file mode 100644 index 000000000..a05abb904 --- /dev/null +++ b/mover/Ch1hiro/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [x] b站,推特关注截图: ![关注截图](./images/01.png) +- [x] ![关注截图](./images/02.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [x] 第一周:![学习记录截图](./images/03.png) +- [x] 第二周:![学习记录截图](./images/05.png) +- [x] 第三周:![学习记录截图](./images/07.png) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [x] 第一周:![学习记录截图](./images/04.png) +- [x] 第二周:![学习记录截图](./images/06.png) +- [x] 第三周:![学习记录截图](./images/08.png) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [x] 第一篇笔记【https://learnblockchain.cn/article/9832】 +- [x] 第二篇笔记【https://learnblockchain.cn/article/9916】 +- [x] 第三篇笔记【https://learnblockchain.cn/article/10010】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + diff --git a/mover/Ch1hiro/code/task1/hello_move/sources/hello_move.move b/mover/Ch1hiro/code/task1/hello_move/sources/hello_move.move index c7a79fff6..86a266d25 100644 --- a/mover/Ch1hiro/code/task1/hello_move/sources/hello_move.move +++ b/mover/Ch1hiro/code/task1/hello_move/sources/hello_move.move @@ -12,7 +12,7 @@ module hello_move::hello { fun init(ctx: &mut TxContext) { let hello_move = Hello { id:object::new(ctx), - say: string(b"move"), + say: string(b"Ch1hiro"), }; transfer(hello_move, sender(ctx)); } diff --git a/mover/Ch1hiro/code/task2/FaucetCoin/sources/faucetcoin.move b/mover/Ch1hiro/code/task2/FaucetCoin/sources/faucetcoin.move index 82d57e8e5..c7ab4e42b 100644 --- a/mover/Ch1hiro/code/task2/FaucetCoin/sources/faucetcoin.move +++ b/mover/Ch1hiro/code/task2/FaucetCoin/sources/faucetcoin.move @@ -1,9 +1,5 @@ module faucetcoin::faucetcoin { - use std::option; use sui::coin::{Self, Coin, TreasuryCap}; - use sui::transfer; - use sui::tx_context::{Self, TxContext}; - public struct FAUCETCOIN has drop {} diff --git a/mover/Ch1hiro/code/task2/mycoin/sources/mycoin.move b/mover/Ch1hiro/code/task2/mycoin/sources/mycoin.move index baf06268a..59bff934f 100644 --- a/mover/Ch1hiro/code/task2/mycoin/sources/mycoin.move +++ b/mover/Ch1hiro/code/task2/mycoin/sources/mycoin.move @@ -1,8 +1,5 @@ module mycoin::mycoin { - use std::option; use sui::coin::{Self, Coin, TreasuryCap}; - use sui::transfer; - use sui::tx_context::{Self, TxContext}; public struct MYCOIN has drop {} diff --git a/mover/Ch1hiro/code/task3/my_nft/sources/my_nft.move b/mover/Ch1hiro/code/task3/my_nft/sources/my_nft.move index 0aa9eff5c..23dfe68c4 100644 --- a/mover/Ch1hiro/code/task3/my_nft/sources/my_nft.move +++ b/mover/Ch1hiro/code/task3/my_nft/sources/my_nft.move @@ -1,9 +1,6 @@ module my_nft::my_nft { - use std::string::{Self,String,utf8}; - use sui::object; - use sui::transfer::{Self,public_transfer}; - use sui::tx_context::{sender,TxContext}; - + use std::string::{String,utf8}; + public struct MY_NFT has key, store { id: UID, name: String, @@ -14,10 +11,10 @@ module my_nft::my_nft { let my_nft = MY_NFT{ id: object::new(ctx), name: utf8(b"Ch1hiro"), - image_url: utf8(b"https://oss-of-ch1hiro.oss-cn-beijing.aliyuncs.com/imgs/202407082229562.jpg"), + image_url: utf8(b"https://zhu-yuan.oss-cn-beijing.aliyuncs.com/img/Ch1hiro.jpg"), }; - public_transfer(my_nft,sender(ctx)) + transfer::public_transfer(my_nft,tx_context::sender(ctx)) } public entry fun mint(name:String,image_url:String,recipient: address,ctx: &mut TxContext) { @@ -27,7 +24,7 @@ module my_nft::my_nft { image_url: image_url, }; // 这里将铸造好的 my_nft 转移给其他人 - public_transfer(my_nft, recipient) + transfer::public_transfer(my_nft, recipient) } } diff --git a/mover/Ch1hiro/code/task4/my_game/Move.lock b/mover/Ch1hiro/code/task4/my_game/Move.lock new file mode 100644 index 000000000..b2b4148b5 --- /dev/null +++ b/mover/Ch1hiro/code/task4/my_game/Move.lock @@ -0,0 +1,49 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "EA0BE36330549BABD196947961F6FD2EAFFA2B4758DD773DA16BB71B424F2266" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "mycoin", name = "mycoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "mycoin" +source = { local = "../../02_coin/mycoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x04eaa015345257779bae2e257ed41951c0af2f8998f037d2960a7359113679bb" +latest-published-id = "0x04eaa015345257779bae2e257ed41951c0af2f8998f037d2960a7359113679bb" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xb7bb112a60162d790dfaf1249d76aeb470ba3f2a220bcbe07eba3eed86f11066" +latest-published-id = "0xb7bb112a60162d790dfaf1249d76aeb470ba3f2a220bcbe07eba3eed86f11066" +published-version = "1" diff --git a/mover/Ch1hiro/code/task4/my_game/Move.toml b/mover/Ch1hiro/code/task4/my_game/Move.toml new file mode 100644 index 000000000..8fe97cd35 --- /dev/null +++ b/mover/Ch1hiro/code/task4/my_game/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "my_game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +mycoin = { local = "../../02_coin/mycoin"} + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/Ch1hiro/code/task4/my_game/sources/my_game.move b/mover/Ch1hiro/code/task4/my_game/sources/my_game.move new file mode 100644 index 000000000..c06dc412c --- /dev/null +++ b/mover/Ch1hiro/code/task4/my_game/sources/my_game.move @@ -0,0 +1,103 @@ +#[allow(unused_let_mut,lint(public_random,abort_without_constant))] +module my_game::my_game { + + use std::ascii::{String, string}; + use sui::balance; + use sui::balance::Balance; + use sui::coin::{Self, Coin, from_balance, into_balance, split}; + use sui::random; + use sui::random::Random; + use sui::transfer::{share_object, transfer, public_transfer}; + use sui::tx_context::sender; + use mycoin::faucetcoin::FAUCETCOIN; + + // 创建一个池子,并指定代币 + public struct Game has key { + id: UID, + val: Balance, + creator: String + } + + // 设置管理员 + public struct Admin has key { + id: UID + } + + fun init(ctx: &mut TxContext) { + // 创建一个游戏对象,设置池子初始余额为0 + let game = Game { + id: object::new(ctx), + val: balance::zero(), + creator: string(b"Ch1hiro") + }; + share_object(game); // 共享游戏对象 + + // 设置一个管理员对象 + let admin = Admin { + id: object::new(ctx) + }; + transfer(admin,sender(ctx)); // 将管理员权限转移给发送者 + } + + + public entry fun play( + game: &mut Game, + user_value: bool, + user_in: Coin, + rand: &Random, + ctx: &mut TxContext + ) { + let user_in_coin = coin::value(&user_in); // 获取玩家下注硬币的值 + let user_address = sender(ctx); // 获取玩家的地址 + let game_val = balance::value(&game.val); // 获取游戏池子中的余额 + + // 如果池子的余额少于玩家下注的,则返回错误码 100 + if (game_val < user_in_coin) { + abort 100u64 + }; + + // 创建一个随机数生成器,并转换为 bool 值 + let mut generator = random::new_generator(rand,ctx); + let mut flag = random::generate_bool(&mut generator); + + // 判断玩家是否猜对了 + if (user_value == flag) { + let win_balance = balance::split(&mut game.val,user_in_coin); // 从池子余额中分出与玩家下注的等值金额 + let win_coin = from_balance(win_balance,ctx); // 将赢得的金额转为硬币 + public_transfer(win_coin,user_address); // 将赢得的硬币转移给玩家 + public_transfer(user_in,user_address); // 将玩家下注的硬币退还给玩家 + } else { + let in_balance = into_balance(user_in); // 将玩家的硬币转换为余额 + balance::join(&mut game.val,in_balance); // 将余额加入到游戏的池子中 + } + } + + // 将代币添加到游戏中 + public entry fun add_coin( + game: &mut Game, + add_coin: Coin, + _ctx: &mut TxContext + ) { + let add_coin_in_balance = into_balance(add_coin); // 将硬币转换为余额 + balance::join(&mut game.val, add_coin_in_balance); // 将余额加入到游戏的总余额中 + } + + // 分割代币 + public fun split_coin(coin: &mut Coin, amt: u64, ctx: &mut TxContext): Coin { + split(coin, amt, ctx) + } + + // 从游戏池子中取出 + public entry fun remove_coin( + _: &Admin, + game: &mut Game, + amt: u64, + ctx: &mut TxContext + ) { + let win_balance = balance::split(&mut game.val,amt); // 从游戏中分出指定金额 + let win_coin = from_balance(win_balance,ctx); // 将分出金额转化为硬币 + public_transfer(win_coin,sender(ctx)); // 将硬币转移给发送者 + } + +} + diff --git a/mover/Ch1hiro/code/task5/ch1hiro/Move.lock b/mover/Ch1hiro/code/task5/ch1hiro/Move.lock new file mode 100644 index 000000000..af98442d4 --- /dev/null +++ b/mover/Ch1hiro/code/task5/ch1hiro/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "47A34D68338E0923BF11A14349A8841445F79341A900C8A30148FB158C50862E" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "mycoin", name = "mycoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "mycoin" +source = { local = "../../02_coin/mycoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.38.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xd80653d568c836a17a5bef6802bc109512fdc653c93ceb4399c9d557d83c872b" +latest-published-id = "0xd80653d568c836a17a5bef6802bc109512fdc653c93ceb4399c9d557d83c872b" +published-version = "1" diff --git a/mover/Ch1hiro/code/task5/ch1hiro/Move.toml b/mover/Ch1hiro/code/task5/ch1hiro/Move.toml new file mode 100644 index 000000000..a214de23f --- /dev/null +++ b/mover/Ch1hiro/code/task5/ch1hiro/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "ch1hiro" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +mycoin = { local = "../../02_coin/mycoin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +ch1hiro = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/Ch1hiro/code/task5/ch1hiro/sources/ch1hiro.move b/mover/Ch1hiro/code/task5/ch1hiro/sources/ch1hiro.move new file mode 100644 index 000000000..73876388c --- /dev/null +++ b/mover/Ch1hiro/code/task5/ch1hiro/sources/ch1hiro.move @@ -0,0 +1,78 @@ +module ch1hiro::ch1hiro { + use sui::balance; + use sui::balance::Balance; + use sui::coin; + use sui::coin::{Coin, into_balance, from_balance}; + use sui::transfer::public_transfer; + use sui::tx_context::sender; + use mycoin::mycoin::MYCOIN; + use mycoin::faucetcoin::FAUCETCOIN; + + // 创建银行 + public struct Bank has key { + id: UID, + hiro: Balance, + fct: Balance + } + + // 创建管理员权限 + public struct AdminCap has key { + id: UID, + } + + // 实例化对象 + fun init(ctx: &mut TxContext) { + let bank = Bank { + id: object::new(ctx), + hiro: balance::zero(), + fct: balance::zero(), + }; + + transfer::share_object(bank); + + let admincap = AdminCap { + id: object::new(ctx), + }; + + transfer::transfer(admincap, sender(ctx)); + } + + // 将 hiro 转换为 balance 存入银行 + public entry fun deposit_hiro(bank: &mut Bank, hiro: Coin) { + let hiro_balance = into_balance(hiro); + balance::join(&mut bank.hiro, hiro_balance); + } + + // 将 fct 转换为 balance 存入银行 + public entry fun deposit_fct(bank: &mut Bank, fct: Coin) { + let fct_balance = into_balance(fct); + balance::join(&mut bank.fct, fct_balance); + } + + // 将 hiro 转为 coin 并取出 + public entry fun withdrawal_hiro(bank: &mut Bank, amt: u64, ctx: &mut TxContext) { + let hiro_balance = balance::split(&mut bank.hiro, amt); + let hiro_coin = from_balance(hiro_balance, ctx); + public_transfer(hiro_coin, sender(ctx)); + } + + // 1 hiro == 10 fct + public entry fun swap_hiro_fct(bank: &mut Bank, hiro: Coin, ctx: &mut TxContext) { + let amt = coin::value(&hiro); + balance::join(&mut bank.hiro, into_balance(hiro)); + let amt_fct = amt * 100 / 10; + let fct_balance = balance::split(&mut bank.fct, amt_fct); + let fct_coin = from_balance(fct_balance, ctx); + public_transfer(fct_coin, sender(ctx)); + } + + public entry fun swap_fct_hiro(bank: &mut Bank, fct: Coin, ctx: &mut TxContext) { + let amt = coin::value(&fct); + balance::join(&mut bank.fct, into_balance(fct)); + let amt_hiro = amt * 10 / 100; + let hiro_balance = balance::split(&mut bank.hiro, amt_hiro); + let hiro_coin = from_balance(hiro_balance, ctx); + public_transfer(hiro_coin, sender(ctx)); + } +} + diff --git a/mover/Ch1hiro/notes/readme.md b/mover/Ch1hiro/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/Ch1hiro/readme.md b/mover/Ch1hiro/readme.md index ee88c5324..1cc0196cb 100644 --- a/mover/Ch1hiro/readme.md +++ b/mover/Ch1hiro/readme.md @@ -1,5 +1,5 @@ ## 基本信息 -- Sui钱包地址: `0x8901f128dac4bac3c0324cccade86f5b29329f6cae32a09671476f61a87021db` +- Sui钱包地址: `0x24ddd392f33ab29f2c4a557e0e9fe0943760a078c41487cf807c158ab20067f3` > 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 - github: `Chi1hiro` @@ -13,34 +13,34 @@ ## 任务 ## 01 hello move -- [] Sui cli version: sui 1.26.0-d709c305ebf3-dirty -- [] Sui钱包截图: ![](./images/01.png) -- [] package id: 0xe6e1a62f94d8c20a0cc117fe3e59d4c8c48d4cde9414929ee1155e839efbdb04 -- [] package id 在 scan上的查看截图:![](./images/02.png) +- [x] Sui cli version: sui 1.26.0-d709c305ebf3-dirty +- [x] Sui钱包截图: ![](./images/01.png) +- [x] package id: 0xe6e1a62f94d8c20a0cc117fe3e59d4c8c48d4cde9414929ee1155e839efbdb04 +- [x] package id 在 scan上的查看截图:![](./images/02.png) ## 02 move coin -- [] My Coin package id : 0x88c45b95b24e19453fe0b5b7801655442f3c04609eb7734bb6d5ffcf58e72841 -- [] Faucet package id : 0x7813f75f27bed82d27de18dc569efb9cbdeeb8c0b3c8f5e8371a6a307988f9bd -- [] 转账 `My Coin` hash: 6BjS4DTrRmx6SNWkbqTnedppShYAMpMXCLk7PUmp8nYz -- [] `Faucet Coin` address1 mint hash: 6cafhP6pzpDj7RnyEibHSqPRog5FcneQGazgzXM6KQzu -- [] `Faucet Coin` address2 mint hash: 26mQjPR64fiUU1we3vxA37qQotXKpv9QJsaay8q8KZFA +- [x] My Coin package id : 0x88c45b95b24e19453fe0b5b7801655442f3c04609eb7734bb6d5ffcf58e72841 +- [x] Faucet package id : 0x7813f75f27bed82d27de18dc569efb9cbdeeb8c0b3c8f5e8371a6a307988f9bd +- [x] 转账 `My Coin` hash: 6BjS4DTrRmx6SNWkbqTnedppShYAMpMXCLk7PUmp8nYz +- [x] `Faucet Coin` address1 mint hash: 6cafhP6pzpDj7RnyEibHSqPRog5FcneQGazgzXM6KQzu +- [x] `Faucet Coin` address2 mint hash: 26mQjPR64fiUU1we3vxA37qQotXKpv9QJsaay8q8KZFA ## 03 move NFT -- [] nft package id : 0x1d1d2e3a881a0b0957448e4ef4596da63753bc83ab9d52bf6bc3c9b4fc3aa873 -- [] nft object id : 0xb4c1625faf5054f765ca6aaa977ae676d0819544f4172cda32641a5f9676518b -- [] 转账 nft hash: 6A5KhkEUqnBvXvKMEd9BBnbEjHWkKwUJEHzbvXLTUNLq -- [] scan上的NFT截图:![](./images/05.png) +- [x] nft package id : 0x1d1d2e3a881a0b0957448e4ef4596da63753bc83ab9d52bf6bc3c9b4fc3aa873 +- [x] nft object id : 0xb4c1625faf5054f765ca6aaa977ae676d0819544f4172cda32641a5f9676518b +- [x] 转账 nft hash: 6A5KhkEUqnBvXvKMEd9BBnbEjHWkKwUJEHzbvXLTUNLq +- [x] scan上的NFT截图:![](./images/05.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id : 0xb7bb112a60162d790dfaf1249d76aeb470ba3f2a220bcbe07eba3eed86f11066 +- [x] deposit Coin hash:6pCBciK1TSWhEJ7sr3BxnbFnsP959NAxpZho2H76nzLr +- [x] withdraw `Coin` hash:J3bNTxDskwCSanig5SDQJsScH1HE6FGTcaAMPHBrct8X +- [x] play game hash:9T1jyEu5bKYLoXgofMd9cvTxtB3zjaTtCgWiWjtCW9xk ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [x] swap package id : 0xd80653d568c836a17a5bef6802bc109512fdc653c93ceb4399c9d557d83c872b +- [x] call swap CoinA-> CoinB hash : 3KsbGtGDst7qV7i4YBjcKu7TkdLDXMECxvvxDBvHxsQB +- [x] call swap CoinB-> CoinA hash : BhYxRmP98LAWuALRb6vvsHh3oDhAQNT9NokGVnL1XvBV ## 06 Dapp-kit SDK PTB - [] save hash : @@ -48,4 +48,4 @@ ## 07 Move CTF Check In - [] CLI call 截图 : ![](./images/03.png) -- [] flag hash :![](./images/04.png) +- [] flag hash :![](./images/04.png) \ No newline at end of file diff --git a/mover/ChainRex/code/task8/get_challenge_byte/Move.lock b/mover/ChainRex/code/task8/get_challenge_byte/Move.lock new file mode 100644 index 000000000..8329ddd1a --- /dev/null +++ b/mover/ChainRex/code/task8/get_challenge_byte/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "BE30C7BB5B5E19122F8797BCD0890B326D26045898F5ED7F93BBE7884E62CB9D" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "lets_move", name = "lets_move" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "lets_move" +source = { local = "../lets_move" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x1718802dcf81f99cf1fb4d3573e074832b9b4ad2bc36aec93f45ec4dce7e93a6" +latest-published-id = "0x1718802dcf81f99cf1fb4d3573e074832b9b4ad2bc36aec93f45ec4dce7e93a6" +published-version = "1" diff --git a/mover/ChainRex/code/task8/get_challenge_byte/Move.toml b/mover/ChainRex/code/task8/get_challenge_byte/Move.toml new file mode 100644 index 000000000..5ad6c81be --- /dev/null +++ b/mover/ChainRex/code/task8/get_challenge_byte/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "get_challenge_byte" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +lets_move = { local = "../lets_move" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +get_challenge_byte = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/ChainRex/code/task8/get_challenge_byte/sources/get_challenge_byte.move b/mover/ChainRex/code/task8/get_challenge_byte/sources/get_challenge_byte.move new file mode 100644 index 000000000..73849eccb --- /dev/null +++ b/mover/ChainRex/code/task8/get_challenge_byte/sources/get_challenge_byte.move @@ -0,0 +1,16 @@ + +/// Module: get_challenge_byte +module get_challenge_byte::get_challenge_byte { + use lets_move::lets_move::Challenge; + use sui::bcs; + use sui::event; + + public struct ChallengeByte has copy, drop { + challenge_bytes: vector + } + + public entry fun get_challenge_byte(challenge: &Challenge) { + let challenge_bytes = bcs::to_bytes(challenge); + event::emit(ChallengeByte { challenge_bytes }); + } +} diff --git a/mover/ChainRex/code/task8/get_challenge_byte/tests/get_challenge_byte_tests.move b/mover/ChainRex/code/task8/get_challenge_byte/tests/get_challenge_byte_tests.move new file mode 100644 index 000000000..1d0c6119f --- /dev/null +++ b/mover/ChainRex/code/task8/get_challenge_byte/tests/get_challenge_byte_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module get_challenge_byte::get_challenge_byte_tests; +// uncomment this line to import the module +// use get_challenge_byte::get_challenge_byte; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_get_challenge_byte() { + // pass +} + +#[test, expected_failure(abort_code = ::get_challenge_byte::get_challenge_byte_tests::ENotImplemented)] +fun test_get_challenge_byte_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/ChainRex/code/task8/lets_move/Move.lock b/mover/ChainRex/code/task8/lets_move/Move.lock new file mode 100644 index 000000000..3a0c92449 --- /dev/null +++ b/mover/ChainRex/code/task8/lets_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 2 +manifest_digest = "786B91A5B97E30CFE4109DB806C7FDAA208AD34906C77AB899770D4D0AEB5DB1" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { name = "Sui" }, +] + +[[move.package]] +name = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +name = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.26.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x097a3833b6b5c62ca6ad10f0509dffdadff7ce31e1d86e63e884a14860cedc0f" +latest-published-id = "0x097a3833b6b5c62ca6ad10f0509dffdadff7ce31e1d86e63e884a14860cedc0f" +published-version = "1" \ No newline at end of file diff --git a/mover/ChainRex/code/task8/lets_move/Move.toml b/mover/ChainRex/code/task8/lets_move/Move.toml new file mode 100644 index 000000000..2a7ce5003 --- /dev/null +++ b/mover/ChainRex/code/task8/lets_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "lets_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +lets_move = "0x097a3833b6b5c62ca6ad10f0509dffdadff7ce31e1d86e63e884a14860cedc0f" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/ChainRex/code/task8/lets_move/sources/lets_move.move b/mover/ChainRex/code/task8/lets_move/sources/lets_move.move new file mode 100644 index 000000000..d90b480a6 --- /dev/null +++ b/mover/ChainRex/code/task8/lets_move/sources/lets_move.move @@ -0,0 +1,92 @@ +module lets_move::lets_move { + use std::ascii::{String, string}; + use std::hash; + use sui::event; + use sui::bcs; + use sui::random; + use sui::random::Random; + use sui::transfer::share_object; + + const EPROOF: u64 = 0; + + public struct Flag has copy, drop { + sender: address, + flag: bool, + ture_num: u64, + github_id: String + } + + public struct Challenge has key { + id: UID, + str: String, + difficulity: u64, + ture_num: u64 + } + + fun init(ctx: &mut TxContext) { + let flag_str = Challenge { + id: object::new(ctx), + str: string(b"LetsMoveCTF"), + difficulity: 3, + ture_num: 0, + }; + share_object(flag_str); + } + + entry fun get_flag( + proof: vector, + github_id: String, + challenge: &mut Challenge, + rand: &Random, + ctx: &mut TxContext + ) { + let mut full_proof: vector = vector::empty(); + vector::append(&mut full_proof, proof); + vector::append( + &mut full_proof, + tx_context::sender(ctx).to_bytes() + ); + vector::append( + &mut full_proof, + bcs::to_bytes(challenge) + ); + + let hash: vector = hash::sha3_256(full_proof); + + let mut prefix_sum: u32 = 0; + let mut i: u64 = 0; + while (i < challenge.difficulity) { + prefix_sum = prefix_sum + (*vector::borrow(&hash, i) as u32); + i = i + 1; + }; + + assert!(prefix_sum == 0, EPROOF); + + challenge.str = getRandomString(rand, ctx); + challenge.ture_num = challenge.ture_num + 1; + + event::emit( + Flag { + sender: tx_context::sender(ctx), + flag: true, + ture_num: challenge.ture_num, + github_id + } + ); + } + + fun getRandomString(rand: &Random, ctx: &mut TxContext): String { + let mut gen = random::new_generator(rand, ctx); + + let mut str_len = random::generate_u8_in_range(&mut gen, 4, 30); + + let mut rand: vector = b""; + while (str_len != 0) { + let rand_num = random::generate_u8_in_range(&mut gen, 34, 126); + vector::push_back(&mut rand, rand_num); + str_len = str_len - 1; + }; + + string(rand) + } +} diff --git a/mover/ChainRex/code/task8/lets_move/tests/lets_move_tests.move b/mover/ChainRex/code/task8/lets_move/tests/lets_move_tests.move new file mode 100644 index 000000000..9f2667878 --- /dev/null +++ b/mover/ChainRex/code/task8/lets_move/tests/lets_move_tests.move @@ -0,0 +1,4 @@ +#[test_only] +module lets_move::lets_move_tests { + +} diff --git a/mover/ChainRex/code/task8/proof.py b/mover/ChainRex/code/task8/proof.py new file mode 100644 index 000000000..1363e4fb8 --- /dev/null +++ b/mover/ChainRex/code/task8/proof.py @@ -0,0 +1,45 @@ +import hashlib +from typing import Optional +import struct + +def check_hash_prefix(hash_bytes: bytes, difficulty: int) -> bool: + """检查hash前缀和是否为0""" + return sum(hash_bytes[:difficulty]) == 0 + + + +def find_proof(sender_address: bytes, nonce: int, difficulty: int) -> bytes: + """尝试找到有效的proof""" + current_nonce = nonce + max_attempts = 1000000000 + + while current_nonce < max_attempts: + nonce_bytes = struct.pack("(url); + let (treasury, metadata) = create_currency( + coin, + 6, + b"CYC", + b"CreatorYuan Coin", + b"this is CreatorYuan Coin.", + pic, + ctx, + ); + public_freeze_object(metadata); + public_transfer(treasury,ctx.sender()); + } + +} + diff --git a/mover/CreatorYuan/code/creatoryuan_coin/sources/creatoryuan_coin_faucet.move b/mover/CreatorYuan/code/creatoryuan_coin/sources/creatoryuan_coin_faucet.move new file mode 100644 index 000000000..1d2ed9a3d --- /dev/null +++ b/mover/CreatorYuan/code/creatoryuan_coin/sources/creatoryuan_coin_faucet.move @@ -0,0 +1,23 @@ +/// Module: creatoryuan_coin +module creatoryuan_coin::creatoryuan_coin_faucet { + + use sui::coin::{create_currency}; + use sui::transfer::{public_freeze_object, public_share_object}; + + public struct CREATORYUAN_COIN_FAUCET has drop{} + + fun init(witness: CREATORYUAN_COIN_FAUCET, ctx: &mut TxContext){ + let (treasury, metadata) = create_currency( + witness, + 6, + b"CYCF", + b"CreatorYuan Faucet Coin", + b"this is CreatorYuan Faucet Coin.", + option::none(), + ctx); + + public_freeze_object(metadata); + public_share_object(treasury) + } + +} diff --git a/mover/CreatorYuan/code/creatoryuan_coin/tests/creatoryuan_coin_tests.move b/mover/CreatorYuan/code/creatoryuan_coin/tests/creatoryuan_coin_tests.move new file mode 100644 index 000000000..71bf63f5d --- /dev/null +++ b/mover/CreatorYuan/code/creatoryuan_coin/tests/creatoryuan_coin_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module creatoryuan_coin::creatoryuan_coin_tests { + // uncomment this line to import the module + // use creatoryuan_coin::creatoryuan_coin; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_creatoryuan_coin() { + // pass + } + + #[test, expected_failure(abort_code = creatoryuan_coin::creatoryuan_coin_tests::ENotImplemented)] + fun test_creatoryuan_coin_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/CreatorYuan/code/my_nft/Move.lock b/mover/CreatorYuan/code/my_nft/Move.lock new file mode 100644 index 000000000..95d77fd61 --- /dev/null +++ b/mover/CreatorYuan/code/my_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0EABF3B78D3217F097659A9CF29014A68F879A4CDC0946D976ABD538C312BAB2" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x60cea112ab74106087f3d8ccd783af45cceca73a0c3d250ffe9451ac91c081e6" +latest-published-id = "0x60cea112ab74106087f3d8ccd783af45cceca73a0c3d250ffe9451ac91c081e6" +published-version = "1" diff --git a/mover/smithclkpayphone123456789010/code/task01/hello/Move.toml b/mover/CreatorYuan/code/my_nft/Move.toml similarity index 88% rename from mover/smithclkpayphone123456789010/code/task01/hello/Move.toml rename to mover/CreatorYuan/code/my_nft/Move.toml index 7946e6102..577f2125b 100644 --- a/mover/smithclkpayphone123456789010/code/task01/hello/Move.toml +++ b/mover/CreatorYuan/code/my_nft/Move.toml @@ -1,11 +1,11 @@ [package] -name = "hello" +name = "my_nft" edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move # license = "" # e.g., "MIT", "GPL", "Apache 2.0" # authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] [dependencies] -Sui = { git = "https://gitee.com/WGB5445/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } # For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. # Revision can be a branch, a tag, and a commit hash. @@ -19,7 +19,7 @@ Sui = { git = "https://gitee.com/WGB5445/sui.git", subdir = "crates/sui-framewor # Override = { local = "../conflicting/version", override = true } [addresses] -hello_world = "0x0" +my_nft = "0x0" # Named addresses will be accessible in Move as `@name`. They're also exported: # for example, `std = "0x1"` is exported by the Standard Library. diff --git a/mover/CreatorYuan/code/my_nft/sources/my_nft.move b/mover/CreatorYuan/code/my_nft/sources/my_nft.move new file mode 100644 index 000000000..e924f7ded --- /dev/null +++ b/mover/CreatorYuan/code/my_nft/sources/my_nft.move @@ -0,0 +1,33 @@ + +/// Module: my_nft +module my_nft::my_nft { + use std::string; + use std::string::String; + use sui::transfer::public_transfer; + use sui::tx_context::sender; + + public struct MYNFT has key,store { + id: UID, + name: String, + image_url: String, + } + + fun init(ctx: &mut TxContext){ + let my_nft = MYNFT{ + id:object::new(ctx), + name:string::utf8(b"CreatorYuan NFT"), + image_url:string::utf8(b"https://avatars.githubusercontent.com/u/15226478?v=4"), + }; + public_transfer(my_nft, sender(ctx)); + } + + public entry fun mint(nft_name:String, url:String,ctx: &mut TxContext){ + let my_nft = MYNFT{ + id:object::new(ctx), + name:nft_name, + image_url:url, + }; + public_transfer(my_nft, sender(ctx)); + + } +} diff --git a/mover/Ch1hiro/code/task3/my_nft/tests/my_nft_tests.move b/mover/CreatorYuan/code/my_nft/tests/my_nft_tests.move similarity index 100% rename from mover/Ch1hiro/code/task3/my_nft/tests/my_nft_tests.move rename to mover/CreatorYuan/code/my_nft/tests/my_nft_tests.move diff --git a/mover/CreatorYuan/code/readme.md b/mover/CreatorYuan/code/readme.md index e69de29bb..10bd26530 100644 --- a/mover/CreatorYuan/code/readme.md +++ b/mover/CreatorYuan/code/readme.md @@ -0,0 +1,88 @@ + + +## my coin +-- + +```shell + sui move build --skip-fetch-latest-git-deps + +# testnet +sui client publish --skip-fetch-latest-git-deps +Transaction Digest: EMoZPucPYzKqMuDjz5H1xeWGNnEoZNAQhjRngZD1vZ6C +PackageID: 0xb3a01d23dcc9c2631d949af2f7bfdc4aa4f466b3018a6b4f45629ee2ff516dd8 │ +ObjectID: 0x2c350c3cf19db2a704e64a39f1d5a0767fc16e79d515b903d1c325cd35e00403 + +# 0xb3a01d23dcc9c2631d949af2f7bfdc4aa4f466b3018a6b4f45629ee2ff516dd8 + --gas-budget 10000000 +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0xb3a01d23dcc9c2631d949af2f7bfdc4aa4f466b3018a6b4f45629ee2ff516dd8::creatoryuan_coin::CREATORYUAN_COIN \ +--args "0x75eee2a5666cb3b969c872fe9c520898782e48a93816aa5d07b740c480e6ddc3" 100000000 0x0d84de6050a42cd695d1b71aaf58ade0db2514a3a11a153b1e1afec62210d24c +Transaction Digest: BHUHcbCu9xYVjCqQDBxWZec63FyUYbfFdLr5vqmMZW8X +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0xb3a01d23dcc9c2631d949af2f7bfdc4aa4f466b3018a6b4f45629ee2ff516dd8::creatoryuan_coin::CREATORYUAN_COIN --args "0x75eee2a5666cb3b969c872fe9c520898782e48a93816aa5d07b740c480e6ddc3" 10000000 0x0d84de6050a42cd695d1b71aaf58ade0db2514a3a11a153b1e1afec62210d24c +Transaction Digest: GBZAQTGkWkopkYqBTR1LtchUXxchCGiq9aVZVBNLV8Zk +0x75eee2a5666cb3b969c872fe9c520898782e48a93816aa5d07b740c480e6ddc3 + +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0xb3a01d23dcc9c2631d949af2f7bfdc4aa4f466b3018a6b4f45629ee2ff516dd8::creatoryuan_coin_faucet::CREATORYUAN_COIN_FAUCET \ +--args "0xec5a1dab9cbda797b6ec4d053bcc705eb6262a5e65b24059bc648936befcaed2" 100000000 0x0d84de6050a42cd695d1b71aaf58ade0db2514a3a11a153b1e1afec62210d24c +Transaction Digest: 2X1x3UAqY2Dt3wuV1CmQE7wNixhcvWvPgZXEy8i9zaHn + +sui client transfer --to 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 --object-id 0x98edec905780605c94181b85d0d8ae87193d8605e4cacd765fcef47233508e4f +Transaction Digest: 7sVu2yRdcCx723W6JbTRhnDBidKfhcWVsTeN7wLgPteG + + +######### mainnet +sui client publish --skip-fetch-latest-git-deps +# Transaction Digest: 3K3x5phePmPg4mgjDHBvgZpZ9TbwF984nCvn4sHNW2io +# PackageID: 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e + +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e::creatoryuan_coin::CREATORYUAN_COIN \ +--args "0xad930714cb148fb483187400d9e4f90b136c029dc10d14ec416bf1c8328a4547" 100000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 +# Transaction Digest: 7sau5AWKGJBQDKxWryrrNKPCXtMVUDyr5joufvAQ1tVZ + +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e::creatoryuan_coin::CREATORYUAN_COIN \ +--args "0xad930714cb148fb483187400d9e4f90b136c029dc10d14ec416bf1c8328a4547" 100000000 0xf6811db11e9e7840efab14e32de8594c4133cc5998eec2e8e98bcb4ad73c70da +# Transaction Digest: CcNe9LrQKqNTje8pfzhKZbVuMdVqPW95fpDWnmM7Up8D + +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e::creatoryuan_coin::CREATORYUAN_COIN \ +--args "0xad930714cb148fb483187400d9e4f90b136c029dc10d14ec416bf1c8328a4547" 100000000 0x0d84de6050a42cd695d1b71aaf58ade0db2514a3a11a153b1e1afec62210d24c +# Transaction Digest: 3YjJwd4aKnfSVXaQAWEKvaZXYkegVU65DSAuHSVMqZEt + +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e::creatoryuan_coin_faucet::CREATORYUAN_COIN_FAUCET \ +--args "0x73e179fb3059a19c6d86b6e1383ee2b7bec06c61f10f66311ed55b545eaad9d3" 100000000 0x0d84de6050a42cd695d1b71aaf58ade0db2514a3a11a153b1e1afec62210d24c +# Transaction Digest: HYBCdN21XNYe2TBokjTNRNPi3VUiD81HbVPgQ6C2niYk + + +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e::creatoryuan_coin_faucet::CREATORYUAN_COIN_FAUCET \ +--args "0x73e179fb3059a19c6d86b6e1383ee2b7bec06c61f10f66311ed55b545eaad9d3" 100000000 0xf6811db11e9e7840efab14e32de8594c4133cc5998eec2e8e98bcb4ad73c70da +# Transaction Digest: 4Ut8uMb6yYBLGKiEJ2n4gyaSUhvmGWrCUCFKVobRudwR + +``` + +## my nft +- mainnet publish AMHyMemSbqgdrEeLMGHyJKQd6HnLq7LkvpU8zUAHaJez +- mainnet mint + +```shell +sui.exe client call --package --module --function +sui.exe client transfer --to --object-id + + +# mainnnet +sui client publish --skip-fetch-latest-git-deps +sui client publish --skip-dependency-verification --skip-fetch-latest-git-deps +# AMHyMemSbqgdrEeLMGHyJKQd6HnLq7LkvpU8zUAHaJez + +sui client call --package 0x60cea112ab74106087f3d8ccd783af45cceca73a0c3d250ffe9451ac91c081e6 --module my_nft --function mint --args "CreatorYuan mint NFT" "https://vcg05.cfp.cn/creative/vcg/800/new/VCG211512884088.jpeg" +# CTgL4hQR7djY9VtWqaK72wj7PYv4eM4A8vkaonQysimC + +# 0x15f64b67efc7df69091550f2f6821d88b12acf5bbe821b4be83ec443bbc79a18 +sui client transfer --to 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 --object-id 0x15f64b67efc7df69091550f2f6821d88b12acf5bbe821b4be83ec443bbc79a18 +# ATrd4yFycgeYhED2yWRMyCCDfPRDbmXx9RErWEpJW4QS +``` + diff --git a/mover/CreatorYuan/images/my_nft.jpg b/mover/CreatorYuan/images/my_nft.jpg new file mode 100644 index 000000000..8fd23724b Binary files /dev/null and b/mover/CreatorYuan/images/my_nft.jpg differ diff --git a/mover/CreatorYuan/images/package_id.jpg b/mover/CreatorYuan/images/package_id.jpg new file mode 100644 index 000000000..4ceba62db Binary files /dev/null and b/mover/CreatorYuan/images/package_id.jpg differ diff --git a/mover/CreatorYuan/images/sui_wallet.jpg b/mover/CreatorYuan/images/sui_wallet.jpg new file mode 100644 index 000000000..520f3bb73 Binary files /dev/null and b/mover/CreatorYuan/images/sui_wallet.jpg differ diff --git "a/mover/CreatorYuan/notes/Git\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" "b/mover/CreatorYuan/notes/Git\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" new file mode 100644 index 000000000..924cfa9ef --- /dev/null +++ "b/mover/CreatorYuan/notes/Git\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" @@ -0,0 +1,190 @@ +# Git 工作机制 + + git add git commit + 工作区 --> 暂存区 --> 本地库 + +# Git 常用命令 + +| 命名名称 | 作用 | +|:-----------------------------------|:--------| +| git config --global user.email 用户名 | 设置用户签名 | +| git config --global user.name 邮箱 | 设置用户签名 | +| git init | 初始化本地库 | +| git status | 查看本地库状态 | +| git add 文件名 | 添加到暂存区 | +| git commit -m "日志信息" 文件名 | 提交到本地库 | +| git reflog | 查看历史记录 | +| git reset --hard | 切换版本 | + +## 添加用户信息 +```shell + +git config --global user.email "abcmeabc@163.com" + +git config --global user.name "CreatorYuan" + +``` + +## 初始化本地库 git init + +```shell + $ git init # 初始化本地库 + $ git status # 查看 + $ git config --global --add safe.directory E:/ + $ git status +On branch master + +No commits yet + +Untracked files: + +nothing added to commit but untracked files present (use "git add" to track) + +``` + + +## 添加到暂存区 git add + +```shell +git add hello.txt # 添加到暂存区 + +git rm --cached hello.txt # 从暂存区删除 + +git commit -m "first commit" hello.txt # 提交 + +git status + +git reflog # 查看历史版本 + +git log # 查看完整信息 +``` + + +## 版本回退 +```shell +git reflog # 查看历史版本 + +git rest --hard 6666666 # (版本号) 可以跳到任意版本 +``` + +## 分支管理 + +| 命名名称 | 作用 | +|:-----------------|:---------------| +| git branch 分支名 | 创建分支 | +| git branch -v | 查看分支 | +| git checkout 分支名 | 切换分支 | +| git merge 分支名 | 把指定的分支合并到当前分支上 | + +```shell + git branch hot-fix + git branch -v + + git checkout hot-fix + + (master) +git merge hot-fix 分支合并到当前分支 +``` + +## 合并异常 +```shell + +vi hello.txt # 删除异常行 + +# 从新 git add 文件名 +git status + +git add hello.txt + +git commit -m "merge test" # 不能带文件名 +``` + +## 代码托管中心 + +其他团队: 本地库 --> push --> 远程库(team1) + + +本团队: 远程库(team1) --> fork --> 远程库(team2) + + +本人 : 远程库(team2) --> clone --> 本地库 + +修改后 +本人 : 本地库 --> push --> 远程库(team2) + + +远程库(team2) --> pull request --> 远程库(team1) + +https://github.com/move-cn/letsmove.git +https://github.com/CreatorYuan/letsmove.git + +```shell + +# 查看当前所有远程地址别名 +git remote -v + +# 添加别名 +git remote add letsmove https://github.com/CreatorYuan/letsmove.git + +# 推送到远程库 +git push letsmove master + +# 拉取远程库 +git pull letsmove main + +# clone : 1.拉取代码 2.初始化本地仓库 3.创建别名 +git clone https://github.com/CreatorYuan/letsmove.git + +``` + + +## SSH +```shell +$ ssh-keygen -t rsa -C abcmeabc@163.com +# 生成后将公钥添加到github + +$ git add mover/CreatorYuan/notes/Git入门到精通.md +$ git commit -m "CreatorYuan is note." mover/CreatorYuan/notes/Git入门到精通.md + +$ git branch -v +* main 5a9ebda6 [ahead 1] CreatorYuan is note. + + +$ git push git@github.com:CreatorYuan/letsmove.git main + + +``` + +# IDEA集成Git + +## 忽略文件 +C:\Users\Administrator\ +git.ignore +```shell +# Compild class file +*.class + +# Log file +*.log + + +``` + +C:\Users\Administrator\ +.gitconfig # 添加文件到配置 +```shell +[core] + excludesfile = C:/Users/Administrator/git.ignore +``` + +## 拉起最新远端代码版本 +- 撤销本地、暂存区、版本库、 +- git fetch --all +- 回退到最新的远端代码 +- git pull origin master +```shell +git fetch --all +git reset --hard origin/master +git pull +``` + diff --git "a/mover/CreatorYuan/notes/move\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" "b/mover/CreatorYuan/notes/move\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" new file mode 100644 index 000000000..38464340c --- /dev/null +++ "b/mover/CreatorYuan/notes/move\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" @@ -0,0 +1,358 @@ +# MOVE 智能合约编程语言 +- 定义资产 +- 读,写,删除,转移资产 +- 权限检查,访问权限控制 + +## 变量的定义 +- let 变量名称:类型 = 变量值 let a: u32 = 10u32 强类型编程语言,没有隐试转换 +- move 只有6个无符号整数 没有负数和小数 + - u8 0-255 + - u16 0-65535 + - u32 0-4294967295 + - u64 0 - 2^64-1 + - u128 0 - 2^128-1 + - u256 0 - 2^256-1 +- 小数 a/b , 放大整数的倍数表示小数 U8 1-127 表示负数 128-225 表示正数 +- 运算符 + - * / % (加 减乘 除 取余) +- as 运算 整数类型转换运算符 只有相同类型才能做运算 +- 布尔 && || ! (true && true true|| false = false) +- 地址类型 address 钱包地址 (32字节) let address1: address = @0x1 + + +# 编写 Move 包 +```shell +$ sui move new hello_world # 新建 +$ touch my_first_package/sources/my_module.move +$ sui move build +$ sui move test +``` +# 官方文档 +https://docs.sui.io/ +https://docs.sui.io/concepts/sui-move-concepts +https://docs.sui.io/guides/developer/getting-started/get-coins + +## 发布包 +```shell +$ sui client publish --gas-budget 5000000 +$ sui client objects +$ sui client ptb \ +--assign forge @ \ +--assign to_address @ \ +--move-call ::my_module::new_sword forge 3 3 \ +--assign sword \ +--transfer-objects "[sword]" to_address \ +--gas-budget 20000000 + +https://sui-mainnet-endpoint.blockvision.org +``` + +## module 定义模块 fun 定义方法 + +```sui move + +module mod::a { // 模块 + use sui::tx_context::TxContext; + fun init(ctx: &mut TxContext){ + } + fun a(){ // fun foo(x:u64,y:T1,z:T2):(T2,T1,64){(z,y,x)} + } + public fun b(){} + public(package) fun c(){} + public entry fun d(){} + public fun f(a:u32, b:u32): bool{} +} + +``` + +## 访问方法权限控制 +| 方法签名 | 调用范围 | 返回值 | +|:---------------------------|:------------------|:----| +| fun call() | 只能模块内调用 | 可以有 | +| public fun call() | 全部合约能调用 | 可以有 | +| public entry fun call() | 全部合约和Dapp(RPC)能调用 | 无 | +| entry fun call() | 只能Dapp(RPC)能调用 | 无 | +| public(package) fun call() | 只能当前包使用 | 可以有 | + + +## init方法 +- 只能是私有的 +- 会在发布合约时是自动调用一次 +- 只有两种形式 + - fun init(ctx: &mut TxContext){} + - fun init(witness: Struct, ctx: &mut TxContext){} + +## mut 关键字 +- let mut a:u32 = 32; +- a = 64; +- 变量可以改变 +## 下划线开头的变量 +- let _a = 10u32; +- 变量不会用到 +## print() +- 本地调试代码输出 +```sui move +module std::debug{ + native public fun print(x: &T); + native public fun print_stack_track(); +} +``` + +## 注释 +- // 注释 +- /* */ 块注释 +- /// 文档注释 + +## if +```sui move + +if () true +if () true else () + +let maximum: u64 = if(x>y) x else y; +let z = if(maximum<10) 10u8 else 100u64 + +``` +## while +- 重复语句体,直到false +```sui move +fun sum(n: u64): u64{ + let mut sum = 0; + let mut i = 1; + while (in) break; + sum = sum + i; + }; + sum +} +``` + +## struct +- 结构体 : 自定义类型 +- 由字段组成 : key-value, 字段名称-存储内存 +- 只能在模块内定义, 只能 public struct 开头 +```sui move +public struct name{ + file1 : type1, + file2 : type2, + ... +} +# 什么时候使用 : u8 - u256 bool 不能完整表达时,把不同数据类型组合成复杂数据结构 +module sui::s{ + public struct Person{ + age:u64, + gender:u8, + height:u64 + } +} + +``` + +## UTXO +- 账户模本模型 +- 适合并行运算 + +## 对象 +- sui存储 : 全局的Map数据结构Map +- key是id (唯一的) , 值是Object + +## move Object +- sui上的资产都是对象, 万物都是对象 +- sui维护一个全局的map的结构,所有的对象都为 全局存储 +- 所有的对象都有一个全局唯一ID +- 对象可以 互相嵌套 + +## 对象的定义 +- 必须有 key 的能力 +- 必须第一个字段是id,而且类型为 sui::object::UID +```sui move + +module book::obj{ + use sui::object::UID; + public struct Obj has key{ + id: UID, + red:u8, + green:u8, + blue:u8 + } +} + +``` +## 资产的定义 +- 一切皆资产 +## 资产所有全 +- 独有资产 : 归属于个人 +- 共有资产 : 公共拥有 + +## 代码理解所有权 +- 对拥有所有权的对象实例,可以做增删改查 +- 如果函数传入一个当前操作人没有所有权的对象实例,会报错 + +## Object 所有权 +- 对象有字段标记所有权 +- 独享所有权 : 对象被某个地址拥有 +- 共享所有权 : 对象被全局共享 + +## 所有权在函数之间传递的访问权限 (重点理解) +- fn f(consume:T,write:&mu T,read:&T) +- T: transfer,delete,write,read (传类型的值:权限最大,转移 删除 写 读) +- &mut T:write,read (传可变引用:可读可写) +- &T:read (传不可变引用:只读) + +## 所有权的方法 +- crates/sui-framework/packages/sui-framework/sources/transfer.move +- E:\sui\crates\sui-framework\packages\sui-framework\sources\transfer.move + +| 方法 | 生成的方法 | 属性 | +|:---------------------|:--------|:------------| +| transfer | 独享对象 | key | +| public_transfer | 独享对象 | key + store | +| freeze_object | 共享对象-常量 | key | +| public_freeze_object | 共享对象-常量 | key + store | +| share_object | 共享对象 | key | +| public_share_object | 共享对象 | key + store | + +## 四种能力 +- copy 可以被复制 +- drop 作用域结束后可以被丢弃 +- key 可以作为键值对全局状态进行访问 +- store 可以被存储到其他结构体 + +## 只有key +- 对象,自定义转移规则 +- 对象有全局ID,可以被全局存储和转移 +## 只有store +- 可以被存储到其他结构体 +## 只有drop +- 在离开作用域的时候会被自带析构 +- 基本数据类型默认实现了drop +## key + store +- 对象, 可以被任意转移,被转移规则限定 +- 对象有全局ID,可以被全局存储和查找 +## 没有任何能力 +- 只能存活当前事务,也就是同一交易 +## key 和 drop 互斥 +- key 和 drop 不能同时存在 +## event +- copy + drop +- 标准的线上日志输出,用于记录日志 + +## 常量 +- const Name:Type = Value +- Type in u8 u16 u32 u64 u138 u256 bool address vector<_> +- const TenName:u32 = 10; +- const OneName:u32 = 0x1; +- const Str:vector = b'3123123''; +- const AddrMe:address = @0x22; + +## 错误处理 +- abort 10 终止 +- assert!(num>10,ErrMustGet10); 断言 + +## debug +- 命令行调试代码打印日志 +- print +- print_stack_trace + +## 泛型传参 +```shell +sui client call +--package $PACKAGE +--module $MODULE +--function "create_box" +--args $OBJECT_ID +--type-args "0x2::coin::Coin<0x2::sui::SUI>" +--gas-budget 100000000 + +``` +## phantom泛型 +- 泛型未被使用 +- 容器能力规则不满足 + +## Capablility设计模式 +- public struct XxCap has key {id: UID} +- 一种权限的设计模式, +- 需要做什么的时候,必须传入这个结构体的实例来验证你是不是有这个权限 +- 这个权限一般来说是一个object有key的能力,可以适当加store的能力 + +## witness见证者设计模式 +- public struct Witness has drop {} +- 这个结构体创建出来是为了创建另一个资源需要的一种权限, +- 创建的同一个实例只能使用一次, +- 这个结构体创建出来需要可以销毁, +- 可以简单理解成权限的特殊模式 +- 要点: 结构体没有字段,只有drop能力,实例只能使用一次 + +## one-time-witness 见证者模式 +- public struct OTW has drop{} +- types::is_one_time_witness(&witness) +- 是一个特殊的见证者, +- 作用就是同一个包下面的同一个结构体,只能创建处理一个实例来做证 +- 同一个结构体只能用一次,不然报错 +- 要点: + - 模块名大写的结构体, + - 结构体没有字段, + - 只有drop能力, + - 只能传教一个实例来做证 + +## Transferable Witness 可以转移见证者模式 +- public strust WITNESS has store, drop() +- public strust WitnessBox has key {id:UID,witness:WITNESS} +- 这个见证者结构体可以创建了放在一个容器里面, +- 随着容器转移所有权,需要用到的时候在取出来做见证 +- 要点: + - 结构体没有字段 + - 只有drop能力和store + - 需要一个object的容器来包装 + +## hot-potato设计模式 +- public struct Receipt{ price:u64} +- public fun create(xx:XX,...):(Receipt{},Coin) +- public fun burn(rece:Receipt,...) +- 简单理解就是烫手的山芋,你拿到手里肯定处理不了,你只能还回去 +- 关键点: + - 结构体没有任何能力 + - 提供对外方法创建结构体 + - 提供对外的方法销毁这个结构体 + + diff --git a/mover/CreatorYuan/notes/obj.move b/mover/CreatorYuan/notes/obj.move new file mode 100644 index 000000000..68e020d50 --- /dev/null +++ b/mover/CreatorYuan/notes/obj.move @@ -0,0 +1,53 @@ +module obj::struct_code { + + use sui::object; + use sui::object::UID; + use sui::transfer::{transfer,share_object}; + use sui::tx_context::TxContext; + + + public struct People has key { + id:UID, + gender:u8, + } + + public struct Dog has key{ + id:UID, + age:u8, + } + + fun init(ctx: &mut TxContext){ + let dog = Dog{ + id:object::new(ctx), + age:10, + }; + transfer(dog, sender(ctx)); + + let dog2 = Dog{ + id:object::new(ctx), + age:10, + }; + + shar_object(dog2); + + } + + public fun update(dog: &mut Dog, age:u8){ + dog.age = age + + } + + public fun dog_age(dog: &Dog):u8{ + dog.age + } + + public fun del(dog:Dog){ + let Dog {id,age} = dog; + object::delete(id); + + let _age = age; + + } + + +} diff --git a/mover/CreatorYuan/notes/struct_move.move b/mover/CreatorYuan/notes/struct_move.move new file mode 100644 index 000000000..985f78834 --- /dev/null +++ b/mover/CreatorYuan/notes/struct_move.move @@ -0,0 +1,44 @@ +module obj::struct_code { + + use sui::tx_context::TxContext; + public struct Person{ + age:u8, + gender:u8, + height:u16 + } + + public struct Dog{ + age:u8, + gender:u8, + } + + public struct Color{ + red:u8, + green:u8, + blue:u8 + } + + public fun delete_color(color:Color){ + let Color{red,green,blue} = color; + } + public fun delete_dog(dog:Dog){ + let Dog{age,gender} = dog; + } + + fun init(_ctx: &mut TxContext){ + let color = Color{ + red:1, + green:2, + blue:3 + }; + } + + let dog = Dog{ + age:1, + gender:0, + } + delete_dog() + + delet_color() + +} diff --git "a/mover/CreatorYuan/notes/sui\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" "b/mover/CreatorYuan/notes/sui\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" new file mode 100644 index 000000000..441ec3a5b --- /dev/null +++ "b/mover/CreatorYuan/notes/sui\345\205\245\351\227\250\345\210\260\347\262\276\351\200\232.md" @@ -0,0 +1,159 @@ +# SUI 文档 +https://docs.sui.io/guides + +## cli 安装客户端 +https://github.com/MystenLabs/sui +(下载最新版本) +https://github.com/MystenLabs/sui/releases/download/mainnet-v1.34.2/sui-mainnet-v1.34.2-windows-x86_64.tgz + +解压即可使用 /d/sui 查看版本号 + +```shell +$ sui --version # 查看版本号 +sui 1.34.2-c9ae0f9282a0 + +``` + +连接到sui网络 +https://fullnode..sui.io:443 + +localnet http://0.0.0.0:9000 +devnet https://fullnode.devnet.sui.io:443 +testnet https://fullnode.testnet.sui.io:443 +mainnet https://fullnode.mainnet.sui.io:443 + +配置连接到测试网络 Connect to Testnet +```shell + +$ sui client +Config file ["C:\\Users\\Administrator\\.sui\\sui_config\\client.yaml"] doesn't exist, do you want to connect to a Sui Full node server [y/N]?y +Sui Full node server URL (Defaults to Sui Testnet if not specified) : https://fullnode.testnet.sui.io:443 +Environment alias for [https://fullnode.testnet.sui.io:443] : testnet +Select key scheme to generate keypair (0 for ed25519, 1 for secp256k1, 2: for secp256r1): +0 + +# 根据提示输入内容 +``` +## 查看配置环境 +```shell +$ sui client envs +[warn] Client/Server api version mismatch, client api version : 1.34.2, server api version : 1.34.1 +╭─────────┬─────────────────────────────────────┬────────╮ +│ alias │ url │ active │ +├─────────┼─────────────────────────────────────┼────────┤ +│ testnet │ https://fullnode.testnet.sui.io:443 │ * │ +╰─────────┴─────────────────────────────────────┴────────╯ + +``` + +## 添加新的网络 +sui client new-env --alias --rpc + +* localnet => http://0.0.0.0:9000 (active) +* devnet => https://fullnode.devnet.sui.io:443 +* testnet => https://fullnode.testnet.sui.io:443 +* mainnet => https://fullnode.mainnet.sui.io:443 + +```shell + +sui client new-env --alias localnet --rpc http://0.0.0.0:9000 # 需要本地运行服务 + +sui client new-env --alias devnet --rpc https://fullnode.devnet.sui.io:443 + +sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443 + +sui client new-env --alias mainnet --rpc https://fullnode.mainnet.sui.io:443 + +$ sui client envs +[warn] Client/Server api version mismatch, client api version : 1.34.2, server api version : 1.34.1 +╭─────────┬─────────────────────────────────────┬────────╮ +│ alias │ url │ active │ +├─────────┼─────────────────────────────────────┼────────┤ +│ testnet │ https://fullnode.testnet.sui.io:443 │ * │ +│ devnet │ https://fullnode.devnet.sui.io:443 │ │ +│ mainnet │ https://fullnode.mainnet.sui.io:443 │ │ +╰─────────┴─────────────────────────────────────┴────────╯ + +``` + +## 切换使用的sui网络 +sui client switch --env + +```shell + +sui client switch --env devnet +sui client switch --env testnet +sui client switch --env mainnet + +``` + + +* 查看本地钱包中所有地址 +* sui keytool list + +## 危险 +与 Sui 地址关联的私钥存储在安装 CLI 的计算机上的本地文件中。确保您不要将此内容暴露给任何人,因为他们可以使用它来访问您的帐户。 +* ~/.sui/sui_config/sui.keystore + + +## 生成新的 Sui 地址 +sui client new-address ed25519 ed25519 + +## 获取 SUI 代币 +```shell +# devnet +curl --location --request POST 'https://faucet.devnet.sui.io/v1/gas' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "FixedAmountRequest": { + "recipient": "0x664dd507c7acf6fd40fe7670296d3a5bf93ac41ef8c7909b32b5bd034d3b2f7a" + } +}' + +# testnet +curl --location --request POST 'https://faucet.testnet.sui.io/v1/gas' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "FixedAmountRequest": { + "recipient": "0x664dd507c7acf6fd40fe7670296d3a5bf93ac41ef8c7909b32b5bd034d3b2f7a" + } +}' + + +``` + +使用 Sui TypeScript-SDK 访问水龙头 +``` + +import { getFaucetHost, requestSuiFromFaucetV0 } from '@mysten/sui/faucet'; + +// get tokens from the Devnet faucet server +await requestSuiFromFaucetV0({ + // connect to Devnet + host: getFaucetHost('devnet'), + recipient: '', +}); + + + + +``` + +## 使用 GraphQL 查询 Sui RPC +graphql-rpc +https://docs.sui.io/concepts/graphql-rpc +``` +curl -i -X POST https://sui-mainnet.mystenlabs.com/graphql \ + --header 'x-sui-rpc-show-usage: true' \ + --header 'Content-Type: application/json' \ + --data '{ + "query": "query { epoch { referenceGasPrice } }" + }' + +``` +sui client faucet +sui client gas +0xf6811db11e9e7840efab14e32de8594c4133cc5998eec2e8e98bcb4ad73c70da + sui client objects 0xf6811db11e9e7840efab14e32de8594c4133cc5998eec2e8e98bcb4ad73c70da + + diff --git a/mover/CreatorYuan/readme.md b/mover/CreatorYuan/readme.md index 6b0104729..8448d21be 100644 --- a/mover/CreatorYuan/readme.md +++ b/mover/CreatorYuan/readme.md @@ -4,33 +4,52 @@ - github: `CreatorYuan` ## 个人简介 -- 工作经验: 6年 运维工作 -- 技术栈: `python` `shell` -- 对Move特别感兴趣,想通过Move入门区块链 -- 联系方式: tg: `yuanchenl` +- 工作经验: 6年运维 +- 技术栈: `python` `shell` +> 重要提示 请认真写自己的简介 +- 多年Linux运维经验,对Move特别感兴趣,想通过Move入门区块链 +- 联系方式: tg: `yuanchenl` ## 任务 ## 01 hello move -- [x] package id: 0xaff271dd8b6fdd8702d4ba917783384257a4898a764c6648582070f2ea08ea90 +- [x] Sui cli version: 1.37.3-b8eb8920aeca +- [x] Sui钱包截图: ![Sui钱包截图](./images/sui_wallet.jpg) +- [x] package id: 0x29c6b525442ed4a7d469f8a0144d1c7f0fa2816f5c31cbfc10e0ea2b14f1305d +- [x] package id 在 scan上的查看截图:![Scan截图](./images/package_id.jpg) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: +- [x] My Coin package id : 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e +- [x] Faucet package id : 0x4700c160a3f4ea9fc84bc56fde8f7f02da283bee1c8b1758fd573f488f6c006e +- [x] 转账 `My Coin` hash: 7sau5AWKGJBQDKxWryrrNKPCXtMVUDyr5joufvAQ1tVZ +- [x] `Faucet Coin` address1 mint hash: HYBCdN21XNYe2TBokjTNRNPi3VUiD81HbVPgQ6C2niYk +- [x] `Faucet Coin` address2 mint hash: 4Ut8uMb6yYBLGKiEJ2n4gyaSUhvmGWrCUCFKVobRudwR ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: +- [x] nft package id : 0x60cea112ab74106087f3d8ccd783af45cceca73a0c3d250ffe9451ac91c081e6 +- [x] nft object id : 0x3797898f1f208af982f2a04300b4d23f224c2438f90dbad8155059a2996ef9cf +- [x] nft mint object id : 0x15f64b67efc7df69091550f2f6821d88b12acf5bbe821b4be83ec443bbc79a18 +- [x] 转账 nft hash: ATrd4yFycgeYhED2yWRMyCCDfPRDbmXx9RErWEpJW4QS +- [x] scan上的NFT截图:![Scan截图](./images/my_nft.jpg) ## 04 Move Game - [] game package id : -- [] call game hash: +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: ## 05 Move Swap - [] swap package id : -- [] call swap hash: +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : -## 06 SDK PTB +## 06 Dapp-kit SDK PTB - [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/EarthChen/code/readme.md b/mover/EarthChen/code/readme.md index e69de29bb..a882ab1ff 100644 --- a/mover/EarthChen/code/readme.md +++ b/mover/EarthChen/code/readme.md @@ -0,0 +1,45 @@ +# task4 猜数游戏信息 + +## testnet + +* packageId: 0x549616dbefd766ce256f00b4662eca840964dff08174f6206d141157e9b2bebd +* UpgradeCapID:0x3eea017ced2d484f0593b9b7a4bd7fd9da5504177cebccb7581ec18f39b99271 +* guess_number::PrizePoolCap: 0xc362a9db9ecfbe3fa4043dd00be11c1c0e52158554ff457c83d472ae6d49acd6 + + +### faucetcoin + +* pacakgeId: 0x5d56e4b9ef9e4d7eed8ea64b337eb9220d9ca55c34e795f2db49f1b26fe248bf +* 0x2::package::UpgradeCap: 0x1443e8d5e94f7080ae73e0c2b1c9907b3d16df740d98e361b5264f7325535b62 +* coin: 0x27b93ff04870aa99ce50ca35694fb66d5678629088cacefaa78c6d7d5f20763a + + +## mainnet + +* publish hash: BJT1Dga7cHKK6B5KKPq2JQe1RBzwcaUH3nsRZddMxPmQ +* packageId:0x472b8f0ff90d472069fb57f33a9899243debb7c3201f1dc3bb2b49d15ec537ee +* UpgradeCapID:0x05d90f14cd51264d703c84c837e7febb4f556e16cd0306f8646f265f0352a4ea +* guess_number::PrizePoolCap:0xf88111d290581033164f4222c2cc8f827594b8431406bf1e378f64b138bd72d3 +* inithash: HRaT2c1UsoXfAz5y9EhWLuhMuhqkWn3zzP8gZv5THatj +* poolId: 0x7dddecadd6f32cd78e5897991f12632ac02d9cbe9315835b5406e29c01b45b5f + + + +# task5 bank + +## testnet + +* packageId: 0xdd4c3f39b2446f596a0abb7c764266b43719adc4f4b8a9c488b81d096a8663c4 +* earthchen::Bank : 0x1965c930d133fc49dcdc1ac55b6b18a8ac5b782125796d94902ddbc52216f64a +* amdin: 0x15c02c340a6948e80fb74723a9c15af3192cbf4651dc603c879dbd7a9656d1dc +* deposit_mycoin hash: 8SPPuNUjoorqYQa4xo5P3jFYakjFFtky1EDyLFC8B33p +* deposit_faucetcoin hash: APpff8GhwNfd2Z494frcaLoDPuWNFkFfYFsPPgCqrtsD +* swap_mycoin hash: 3vLWRgDJMefi4449HS9KSjQS5PQwKjQmpLzdeZWHgBbX + + +## mainnet + +* packageId: 0x6d4dd7fffe36cce18887a19a935df4cd45633546c947756ce7d45d1fbca9766e +* bank: 0x0a307a8b9d0a97d911973ad395cdeb9e9e213b2370087e33dea48bee16b7e149 +* deposit_mycoin hash:C1MnhbfeTsnwdNRjf1jmaAcLRW71K6LDCb12LAk8GmMa +* swap_ diff --git a/mover/EarthChen/code/task2/faucetcoin/Move.lock b/mover/EarthChen/code/task2/faucetcoin/Move.lock index 82d2037ad..52de34a46 100644 --- a/mover/EarthChen/code/task2/faucetcoin/Move.lock +++ b/mover/EarthChen/code/task2/faucetcoin/Move.lock @@ -2,7 +2,7 @@ [move] version = 3 -manifest_digest = "040FB3E59D8A1F2E682DCABB7B08CE36CD1FC73BDE7213AB39F548FED3A290C9" +manifest_digest = "36AAF1CDEC036D88764BAC3DCDE58C0D7D361D80DBC1ED0F543FFC7DC8AA1BA6" deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" dependencies = [ { id = "Sui", name = "Sui" }, @@ -10,18 +10,18 @@ dependencies = [ [[move.package]] id = "MoveStdlib" -source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } [[move.package]] id = "Sui" -source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } dependencies = [ { id = "MoveStdlib", name = "MoveStdlib" }, ] [move.toolchain-version] -compiler-version = "1.37.1" +compiler-version = "1.37.3" edition = "2024.beta" flavor = "sui" @@ -29,8 +29,8 @@ flavor = "sui" [env.testnet] chain-id = "4c78adac" -original-published-id = "0x586cd3af1a22322f864d4f97aeb94287918e4e8cfe5f82906419ecef0e2df04a" -latest-published-id = "0x586cd3af1a22322f864d4f97aeb94287918e4e8cfe5f82906419ecef0e2df04a" +original-published-id = "0x5d56e4b9ef9e4d7eed8ea64b337eb9220d9ca55c34e795f2db49f1b26fe248bf" +latest-published-id = "0x5d56e4b9ef9e4d7eed8ea64b337eb9220d9ca55c34e795f2db49f1b26fe248bf" published-version = "1" [env.mainnet] diff --git a/mover/EarthChen/code/task4/earthchen_game/Move.lock b/mover/EarthChen/code/task4/earthchen_game/Move.lock new file mode 100644 index 000000000..7be1da240 --- /dev/null +++ b/mover/EarthChen/code/task4/earthchen_game/Move.lock @@ -0,0 +1,49 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "3E7C99C33A2E20F63FB3D0534558440BAC3F2A5097CA4C5801FAED92F94005EE" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucetcoin", name = "faucetcoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucetcoin" +source = { local = "../../task2/faucetcoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x549616dbefd766ce256f00b4662eca840964dff08174f6206d141157e9b2bebd" +latest-published-id = "0x549616dbefd766ce256f00b4662eca840964dff08174f6206d141157e9b2bebd" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x472b8f0ff90d472069fb57f33a9899243debb7c3201f1dc3bb2b49d15ec537ee" +latest-published-id = "0x472b8f0ff90d472069fb57f33a9899243debb7c3201f1dc3bb2b49d15ec537ee" +published-version = "1" diff --git a/mover/EarthChen/code/task4/earthchen_game/Move.toml b/mover/EarthChen/code/task4/earthchen_game/Move.toml new file mode 100644 index 000000000..d22f36f90 --- /dev/null +++ b/mover/EarthChen/code/task4/earthchen_game/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "guess_number" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +faucetcoin = { local = "../../task2/faucetcoin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +guess_number = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/EarthChen/code/task4/earthchen_game/sources/Move.toml b/mover/EarthChen/code/task4/earthchen_game/sources/Move.toml new file mode 100644 index 000000000..4ad983435 --- /dev/null +++ b/mover/EarthChen/code/task4/earthchen_game/sources/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "guess_number" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +faucetcoin = { local = "../faucetcoin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +guess_number = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/EarthChen/code/task4/earthchen_game/sources/earthchen_game.move b/mover/EarthChen/code/task4/earthchen_game/sources/earthchen_game.move new file mode 100644 index 000000000..7c539bc8e --- /dev/null +++ b/mover/EarthChen/code/task4/earthchen_game/sources/earthchen_game.move @@ -0,0 +1,113 @@ +/// Module: guess_number +module guess_number::guess_number { + use sui::object::{Self, UID}; + use sui::balance::{Self, Balance}; + use sui::coin::{Self, Coin}; + use sui::transfer::{transfer, share_object, public_transfer}; + use sui::tx_context::{Self, sender}; + use sui::bcs; + use faucetcoin::faucetcoin::FAUCETCOIN; + use std::debug::print; + use std::string::utf8; + + const ENotAllow: u64 = 0; + const EInvalidStake: u64 = 1; + const Rate: u64 = 2; + const MaxStake: u64 = 1000; + const MinStake: u64 = 10; + + // otw + public struct GUESS_NUMBER has drop {} + + // 奖金池,管理员为earthchen + public struct PrizePool has key { + id: UID, + prize: Balance, + earthchen: address // my github id + } + + // 用于创建、初始化奖金池,之后删除 + public struct PrizePoolCap has key { + id: UID + } + + // 创建Cap,并发送给earthchen + fun init(_otw: GUESS_NUMBER, ctx: &mut TxContext) { + let prize_pool_cap = PrizePoolCap { + id: object::new(ctx) + }; + transfer(prize_pool_cap, tx_context::sender(ctx)); + } + + // earthchen用于创建奖金池,并注入初始奖金 + public entry fun initialize_pool(cap: PrizePoolCap, coin: Coin, ctx: &mut TxContext) { + let prize_pool = PrizePool { + id: object::new(ctx), + prize: coin.into_balance(), + earthchen: sender(ctx) + }; + share_object(prize_pool); + let PrizePoolCap { id } = cap; + object::delete(id); + } + + + + // 给奖金池注入更多奖金,任何人都有权限 + public entry fun top_up(pool: &mut PrizePool, coin: Coin) { + coin::put(&mut pool.prize, coin) + } + + // 在奖金池取出指定数量金额 + public entry fun withdraw(pool: &mut PrizePool, amount: u64, ctx: &mut TxContext) { + assert!(pool.earthchen == sender(ctx), ENotAllow); + let balance = pool.prize.split(amount); + let coin = coin::from_balance(balance, ctx); + public_transfer(coin, sender(ctx)); + } + + // 在奖金池取出所有奖金 + public fun withdraw_all(pool: &mut PrizePool, ctx: &mut TxContext) { + assert!(pool.earthchen == sender(ctx), ENotAllow); + let balance = pool.prize.withdraw_all(); + let coin = coin::from_balance(balance, ctx); + public_transfer(coin, sender(ctx)); + } + + // 查询奖金池中剩余的金额 + public fun query_prize(pool: &mut PrizePool):u64 { + pool.prize.value() + } + + // 通过交易hash的方式获取随机数 + fun get_random_num(ctx: &mut TxContext): u8 { + let tx_digest = tx_context::digest(ctx); + let tx_digest_u64= bcs::peel_u8(&mut bcs::new(*tx_digest)); + let random_index: u8 = tx_digest_u64 % 3; + random_index + } + + // 开始游戏 + public entry fun start_game(pool: &mut PrizePool, geuss_number: u8, stake: Coin, ctx: &mut TxContext): bool { + let balance = stake.into_balance(); + let value = balance.value(); + let mut res = false; + assert!(value < MaxStake && value > MinStake, EInvalidStake); + pool.prize.join(balance); + let the_number = get_random_num(ctx); + print(&utf8(b"The right number is:")); + print(&the_number); + if (geuss_number == the_number) { + let prize_value = pool.prize.split(Rate * value); + let prize_coin = coin::from_balance(prize_value, ctx); + public_transfer(prize_coin, sender(ctx)); + res = true; + }; + res + } + + #[test_only] + public fun init_for_testing(ctx: &mut TxContext) { + init(GUESS_NUMBER {}, ctx); + } +} diff --git a/mover/EarthChen/code/task5/earthchen/Move.lock b/mover/EarthChen/code/task5/earthchen/Move.lock new file mode 100644 index 000000000..d872c60c0 --- /dev/null +++ b/mover/EarthChen/code/task5/earthchen/Move.lock @@ -0,0 +1,58 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "BD917155367008DF694FFC9BE7067220688091408D96879871417DE548347128" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucetcoin", name = "faucetcoin" }, + { id = "mycoin", name = "mycoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucetcoin" +source = { local = "../../task2/faucetcoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "mycoin" +source = { local = "../../task2/mycoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xdd4c3f39b2446f596a0abb7c764266b43719adc4f4b8a9c488b81d096a8663c4" +latest-published-id = "0xdd4c3f39b2446f596a0abb7c764266b43719adc4f4b8a9c488b81d096a8663c4" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x6d4dd7fffe36cce18887a19a935df4cd45633546c947756ce7d45d1fbca9766e" +latest-published-id = "0x6d4dd7fffe36cce18887a19a935df4cd45633546c947756ce7d45d1fbca9766e" +published-version = "1" diff --git a/mover/EarthChen/code/task5/earthchen/Move.toml b/mover/EarthChen/code/task5/earthchen/Move.toml new file mode 100644 index 000000000..ed80fe515 --- /dev/null +++ b/mover/EarthChen/code/task5/earthchen/Move.toml @@ -0,0 +1,39 @@ +[package] +name = "earhchen" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +faucetcoin = { local = "../../task2/faucetcoin" } +mycoin = { local = "../../task2/mycoin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +earthchen = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/EarthChen/code/task5/earthchen/sources/earthchen.move b/mover/EarthChen/code/task5/earthchen/sources/earthchen.move new file mode 100644 index 000000000..e69d0282a --- /dev/null +++ b/mover/EarthChen/code/task5/earthchen/sources/earthchen.move @@ -0,0 +1,80 @@ +/// Module: earthchen +module earthchen::earthchen { + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::transfer::{Self, transfer, share_object, public_transfer}; + use mycoin::mycoin::MYCOIN; + use faucetcoin::faucetcoin::FAUCETCOIN; + use sui::tx_context::sender; + + public struct Bank has key { + id: UID, + mycoin: Balance, + faucetcoin: Balance, + mc_prop: u64, + fc_prop: u64 + } + + public struct AdaminCap has key { + id: UID + } + + fun init(ctx: &mut TxContext) { + let bank = Bank { + id: object::new(ctx), + mycoin: balance::zero(), + faucetcoin: balance::zero(), + mc_prop: 1000, // mc : fc = mc_prop : fc_prop + fc_prop: 7300 + }; + share_object(bank); + let adamin_cap = AdaminCap { + id: object::new(ctx) + }; + transfer(adamin_cap, sender(ctx)); + } + + public entry fun deposit_mycoin(bank: &mut Bank, mycoin: Coin, _ctx: &mut TxContext) { + let balance = coin::into_balance(mycoin); + bank.mycoin.join(balance); + } + + public entry fun deposit_faucetcoin(bank: &mut Bank, faucetcoin: Coin, _ctx: &mut TxContext) { + let balance = coin::into_balance(faucetcoin); + bank.faucetcoin.join(balance); + } + + public entry fun withdraw_mycoin(_: &AdaminCap, bank: &mut Bank, amount: u64, ctx: &mut TxContext) { + let amount = bank.mycoin.split(amount); + let mycoin = coin::from_balance(amount, ctx); + public_transfer(mycoin, sender(ctx)); + } + + public entry fun withdraw_faucetcoin(_: &AdaminCap, bank: &mut Bank, amount: u64, ctx: &mut TxContext) { + let amount = bank.mycoin.split(amount); + let mycoin = coin::from_balance(amount, ctx); + public_transfer(mycoin, sender(ctx)); + } + + public entry fun swap_mycoin(bank: &mut Bank, faucetcoin: Coin, ctx: &mut TxContext) { + let fc_balance = faucetcoin.into_balance(); + let fc_amt = fc_balance.value(); + let mc_amt = bank.mycoin.split(fc_amt * bank.mc_prop / bank.fc_prop); + bank.faucetcoin.join(fc_balance); + public_transfer(coin::from_balance(mc_amt, ctx), sender(ctx)); + } + + public entry fun swap_faucetcoin(bank: &mut Bank, mycoin: Coin, ctx: &mut TxContext) { + let mc_balance = mycoin.into_balance(); + let mc_amt = mc_balance.value(); + let fc_amt = bank.faucetcoin.split(mc_amt * bank.fc_prop / bank.mc_prop); + bank.mycoin.join(mc_balance); + public_transfer(coin::from_balance(fc_amt, ctx), sender(ctx)); + } + + #[test_only] + public fun init_for_testing(ctx: &mut TxContext) { + init(ctx); + } +} + diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/README.md b/mover/EarthChen/code/task6/my-first-sui-dapp/README.md new file mode 100644 index 000000000..d0889dcae --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/README.md @@ -0,0 +1,35 @@ +# Sui dApp Starter Template + +This dApp was created using `@mysten/create-dapp` that sets up a basic React +Client dApp using the following tools: + +- [React](https://react.dev/) as the UI framework +- [TypeScript](https://www.typescriptlang.org/) for type checking +- [Vite](https://vitejs.dev/) for build tooling +- [Radix UI](https://www.radix-ui.com/) for pre-built UI components +- [ESLint](https://eslint.org/) +- [`@mysten/dapp-kit`](https://sdk.mystenlabs.com/dapp-kit) for connecting to + wallets and loading data +- [pnpm](https://pnpm.io/) for package management + +## Starting your dApp + +To install dependencies you can run + +```bash +pnpm install +``` + +To start your dApp in development mode run + +```bash +pnpm dev +``` + +## Building + +To build your app for deployment you can run + +```bash +pnpm build +``` diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/index.html b/mover/EarthChen/code/task6/my-first-sui-dapp/index.html new file mode 100644 index 000000000..bb7f75b16 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/index.html @@ -0,0 +1,59 @@ + + + + + + + Sui dApp Starter + + + + +
+ + + diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/package.json b/mover/EarthChen/code/task6/my-first-sui-dapp/package.json new file mode 100644 index 000000000..0cd582fe9 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/package.json @@ -0,0 +1,36 @@ +{ + "name": "my-first-sui-dapp", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "0.14.36", + "@mysten/sui": "1.14.4", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "navi-sdk": "^1.4.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^9.6.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.4.11" + } +} \ No newline at end of file diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/pnpm-lock.yaml b/mover/EarthChen/code/task6/my-first-sui-dapp/pnpm-lock.yaml new file mode 100644 index 000000000..e3eff5c45 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/pnpm-lock.yaml @@ -0,0 +1,4668 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@mysten/dapp-kit': + specifier: 0.14.36 + version: 0.14.36(@tanstack/react-query@5.60.5(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@mysten/sui': + specifier: 1.14.4 + version: 1.14.4(typescript@5.6.3) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.2(react@18.3.1) + '@radix-ui/themes': + specifier: ^3.1.1 + version: 3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.50.1 + version: 5.60.5(react@18.3.1) + navi-sdk: + specifier: ^1.4.1 + version: 1.4.1(@types/node@22.9.0)(typescript@5.6.3) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/react': + specifier: ^18.3.3 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.1 + '@typescript-eslint/eslint-plugin': + specifier: ^7.16.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^7.16.0 + version: 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.1(vite@5.4.11(@types/node@22.9.0)) + eslint: + specifier: ^9.6.0 + version: 9.15.0 + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@9.15.0) + eslint-plugin-react-refresh: + specifier: ^0.4.7 + version: 0.4.14(eslint@9.15.0) + prettier: + specifier: ^3.3.2 + version: 3.3.3 + typescript: + specifier: ^5.5.3 + version: 5.6.3 + vite: + specifier: ^5.4.11 + version: 5.4.11(@types/node@22.9.0) + +packages: + + '@0no-co/graphql.web@1.0.11': + resolution: {integrity: sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.16': + resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@digitak/grubber@3.1.4': + resolution: {integrity: sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.0': + resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.9.0': + resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.15.0': + resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.3': + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@gql.tada/cli-utils@1.6.3': + resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@mysten/bcs@0.11.1': + resolution: {integrity: sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==} + + '@mysten/bcs@1.1.0': + resolution: {integrity: sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==} + + '@mysten/dapp-kit@0.14.36': + resolution: {integrity: sha512-0eQsiSUSRJ9wk6E5Bm66QxRqX0GUZFPAhHQvG6eOdfv9/I4L60cXPu1x4Rrhv7vmyFis3g/5bFKbmRM4wJ9sow==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: '*' + + '@mysten/sui.js@0.54.1': + resolution: {integrity: sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==} + engines: {node: '>=16'} + deprecated: This package has been renamed to @mysten/sui, please update to use the renamed package. + + '@mysten/sui@1.14.4': + resolution: {integrity: sha512-9d79tu7PUfRXc8TNYIHqxfH+iJN29j0I8Fc913w6wywUSOaCnUDMtjKcPr1o/8yILjaB86vswsK3mqTXX0QFrA==} + engines: {node: '>=18'} + + '@mysten/wallet-standard@0.13.13': + resolution: {integrity: sha512-kzJBb4DL7HdU6img7F9iySu5giiNrxWzYFU1XuzL6aRlNkXYx/KUszMe3sUkwb3TCWDZTwQ16GWuRGJQpD84cA==} + + '@mysten/zksend@0.12.2': + resolution: {integrity: sha512-0U7olaq4iRE85NHUXM3yj3lCqZforofGcxT3Kw//24LVSRyyNRKlCL1bLl0w+WdACxvbznD3heDXj0ZXVfeKVg==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + + '@pythnetwork/price-service-sdk@1.7.1': + resolution: {integrity: sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==} + + '@pythnetwork/pyth-sui-js@2.1.0': + resolution: {integrity: sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-accessible-icon@1.1.0': + resolution: {integrity: sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.2': + resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.0': + resolution: {integrity: sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.1': + resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.2': + resolution: {integrity: sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.2': + resolution: {integrity: sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.1': + resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.2': + resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.2': + resolution: {integrity: sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.2': + resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.1': + resolution: {integrity: sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.2': + resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.0': + resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.2.1': + resolution: {integrity: sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.1': + resolution: {integrity: sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.2.1': + resolution: {integrity: sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.1': + resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.0': + resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.0': + resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.4': + resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/themes@3.1.6': + resolution: {integrity: sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@rollup/rollup-android-arm-eabi@4.27.3': + resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.27.3': + resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.27.3': + resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.27.3': + resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.27.3': + resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.3': + resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.27.3': + resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.27.3': + resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.27.3': + resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': + resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.27.3': + resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.27.3': + resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.27.3': + resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.27.3': + resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.27.3': + resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.27.3': + resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.27.3': + resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.5.0': + resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@suchipi/femver@1.0.0': + resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} + + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.15': + resolution: {integrity: sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==} + + '@tanstack/query-core@5.60.5': + resolution: {integrity: sha512-jiS1aC3XI3BJp83ZiTuDLerTmn9P3U95r6p+6/SNauLJaYxfIC4dMuWygwnBHIZxjn2zJqEpj3nysmPieoxfPQ==} + + '@tanstack/react-query@5.60.5': + resolution: {integrity: sha512-M77bOsPwj1wYE56gk7iJvxGAr4IC12NWdIDhT+Eo8ldkWRHMvIR8I/rufIvT1OXoV/bl7EECwuRuMlxxWtvW2Q==} + peerDependencies: + react: ^18 || ^19 + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@vanilla-extract/css@1.16.0': + resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.6': + resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + + '@vanilla-extract/recipes@0.5.5': + resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitejs/plugin-react-swc@3.7.1': + resolution: {integrity: sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==} + peerDependencies: + vite: ^4 || ^5 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@wallet-standard/app@1.1.0': + resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} + engines: {node: '>=16'} + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.0.3': + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.14: + resolution: {integrity: sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==} + peerDependencies: + eslint: '>=7' + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.15.0: + resolution: {integrity: sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + esrun@3.2.26: + resolution: {integrity: sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==} + engines: {node: '>=14.0'} + hasBin: true + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gql.tada@1.8.10: + resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.13: + resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.10.3: + resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + navi-sdk@1.4.1: + resolution: {integrity: sha512-2lSrdINsz/kgv0NDVKzvvgmKr2KRxrWEPOdxCk7+bQrSBP1QhmOan5rU+4TEceKC4KNjC3GLISQudaYTMqfq0A==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.27.3: + resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zustand@4.5.5: + resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@0no-co/graphql.web@1.0.11(graphql@16.9.0)': + optionalDependencies: + graphql: 16.9.0 + + '@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@digitak/grubber@3.1.4': {} + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0)': + dependencies: + eslint: 9.15.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.9.0': {} + + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.15.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.3': + dependencies: + levn: 0.4.1 + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.12': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.8': {} + + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@gql.tada/internal@1.0.8(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + graphql: 16.9.0 + typescript: 5.6.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': + dependencies: + graphql: 16.9.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@mysten/bcs@0.11.1': + dependencies: + bs58: 5.0.0 + + '@mysten/bcs@1.1.0': + dependencies: + bs58: 6.0.0 + + '@mysten/dapp-kit@0.14.36(@tanstack/react-query@5.60.5(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.4(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.13(typescript@5.6.3) + '@mysten/zksend': 0.12.2(typescript@5.6.3) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@tanstack/react-query': 5.60.5(react@18.3.1) + '@vanilla-extract/css': 1.16.0 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/recipes': 0.5.5(@vanilla-extract/css@1.16.0) + clsx: 2.1.1 + react: 18.3.1 + zustand: 4.5.5(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + + '@mysten/sui.js@0.54.1(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 0.11.1 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + superstruct: 1.0.4 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.14.4(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.13.13(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.4(typescript@5.6.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/zksend@0.12.2(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.4(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.13(typescript@5.6.3) + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pythnetwork/price-service-client@1.9.0': + dependencies: + '@pythnetwork/price-service-sdk': 1.7.1 + '@types/ws': 8.5.13 + axios: 1.7.7 + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0) + ts-log: 2.2.7 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.7.1': + dependencies: + bn.js: 5.2.1 + + '@pythnetwork/pyth-sui-js@2.1.0(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.4(typescript@5.6.3) + '@pythnetwork/price-service-client': 1.9.0 + buffer: 6.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - bufferutil + - debug + - typescript + - utf-8-validate + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-accessible-icon@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-aspect-ratio@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-avatar@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-checkbox@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-radio-group@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-scroll-area@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slider@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/themes@3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/colors': 3.0.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-accessible-icon': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-aspect-ratio': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context-menu': 2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-hover-card': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-switch': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@rollup/rollup-android-arm-eabi@4.27.3': + optional: true + + '@rollup/rollup-android-arm64@4.27.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.27.3': + optional: true + + '@rollup/rollup-darwin-x64@4.27.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.27.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.27.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.27.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.27.3': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.27.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.27.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.3': + optional: true + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.5.0': + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@sinclair/typebox@0.27.8': {} + + '@suchipi/femver@1.0.0': {} + + '@swc/core-darwin-arm64@1.9.2': + optional: true + + '@swc/core-darwin-x64@1.9.2': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.2': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.2': + optional: true + + '@swc/core-linux-arm64-musl@1.9.2': + optional: true + + '@swc/core-linux-x64-gnu@1.9.2': + optional: true + + '@swc/core-linux-x64-musl@1.9.2': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.2': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.2': + optional: true + + '@swc/core-win32-x64-msvc@1.9.2': + optional: true + + '@swc/core@1.9.2': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.15 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.15': + dependencies: + '@swc/counter': 0.1.3 + + '@tanstack/query-core@5.60.5': {} + + '@tanstack/react-query@5.60.5(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.60.5 + react: 18.3.1 + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@22.9.0': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.13': {} + + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.12 + + '@types/react@18.3.12': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/ws@8.5.13': + dependencies: + '@types/node': 22.9.0 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 9.15.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + eslint: 9.15.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + debug: 4.3.7 + eslint: 9.15.0 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + eslint: 9.15.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@vanilla-extract/css@1.16.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/private@1.0.6': {} + + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.16.0)': + dependencies: + '@vanilla-extract/css': 1.16.0 + + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.11(@types/node@22.9.0))': + dependencies: + '@swc/core': 1.9.2 + vite: 5.4.11(@types/node@22.9.0) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.13 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.0.3': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + array-union@2.1.0: {} + + assertion-error@1.1.0: {} + + asynckit@0.4.0: {} + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + bech32@2.0.0: {} + + binary-extensions@2.3.0: {} + + bn.js@5.2.1: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + callsites@3.1.0: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-node-es@1.1.0: {} + + diff-sequences@29.6.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.2(eslint@9.15.0): + dependencies: + eslint: 9.15.0 + + eslint-plugin-react-refresh@0.4.14(eslint@9.15.0): + dependencies: + eslint: 9.15.0 + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.15.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.0 + '@eslint/core': 0.9.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.15.0 + '@eslint/plugin-kit': 0.2.3 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + esrun@3.2.26: + dependencies: + '@digitak/grubber': 3.1.4 + chokidar: 3.6.0 + esbuild: 0.17.19 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fsevents@2.3.3: + optional: true + + get-func-name@2.0.2: {} + + get-nonce@1.0.1: {} + + get-stream@8.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gql.tada@1.8.10(graphql@16.9.0)(typescript@5.6.3): + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graphemer@1.4.0: {} + + graphql@16.9.0: {} + + has-flag@4.0.0: {} + + human-signals@5.0.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-retry-allowed@2.2.0: {} + + is-stream@3.0.0: {} + + isexe@2.0.0: {} + + isomorphic-ws@4.0.1(ws@8.18.0): + dependencies: + ws: 8.18.0 + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + magic-string@0.30.13: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.26.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mitt@3.0.1: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + modern-ahocorasick@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + nanostores@0.10.3: {} + + natural-compare@1.4.0: {} + + navi-sdk@1.4.1(@types/node@22.9.0)(typescript@5.6.3): + dependencies: + '@mysten/sui': 1.14.4(typescript@5.6.3) + '@mysten/sui.js': 0.54.1(typescript@5.6.3) + '@pythnetwork/pyth-sui-js': 2.1.0(typescript@5.6.3) + axios: 1.7.7 + esrun: 3.2.26 + tsconfig-paths: 4.2.0 + vitest: 1.6.0(@types/node@22.9.0) + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/node' + - '@vitest/browser' + - '@vitest/ui' + - bufferutil + - debug + - happy-dom + - jsdom + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - typescript + - utf-8-validate + + normalize-path@3.0.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.3.3: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + rollup@4.27.3: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.27.3 + '@rollup/rollup-android-arm64': 4.27.3 + '@rollup/rollup-darwin-arm64': 4.27.3 + '@rollup/rollup-darwin-x64': 4.27.3 + '@rollup/rollup-freebsd-arm64': 4.27.3 + '@rollup/rollup-freebsd-x64': 4.27.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 + '@rollup/rollup-linux-arm-musleabihf': 4.27.3 + '@rollup/rollup-linux-arm64-gnu': 4.27.3 + '@rollup/rollup-linux-arm64-musl': 4.27.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 + '@rollup/rollup-linux-riscv64-gnu': 4.27.3 + '@rollup/rollup-linux-s390x-gnu': 4.27.3 + '@rollup/rollup-linux-x64-gnu': 4.27.3 + '@rollup/rollup-linux-x64-musl': 4.27.3 + '@rollup/rollup-win32-arm64-msvc': 4.27.3 + '@rollup/rollup-win32-ia32-msvc': 4.27.3 + '@rollup/rollup-win32-x64-msvc': 4.27.3 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@3.8.0: {} + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + superstruct@1.0.4: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tinybench@2.9.0: {} + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@1.4.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-log@2.2.7: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.1.0: {} + + typescript@5.6.3: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + + valibot@0.36.0: {} + + vite-node@1.6.0(@types/node@22.9.0): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.11(@types/node@22.9.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.11(@types/node@22.9.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.27.3 + optionalDependencies: + '@types/node': 22.9.0 + fsevents: 2.3.3 + + vitest@1.6.0(@types/node@22.9.0): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.3.7 + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.13 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.0 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.11(@types/node@22.9.0) + vite-node: 1.6.0(@types/node@22.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.9.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + ws@8.18.0: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zustand@4.5.5(@types/react@18.3.12)(react@18.3.1): + dependencies: + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react: 18.3.1 diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/prettier.config.cjs b/mover/EarthChen/code/task6/my-first-sui-dapp/prettier.config.cjs new file mode 100644 index 000000000..c07541106 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/prettier.config.cjs @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-undef +module.exports = { + proseWrap: "always", +}; diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/App.tsx b/mover/EarthChen/code/task6/my-first-sui-dapp/src/App.tsx new file mode 100644 index 000000000..05a8c6acd --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/App.tsx @@ -0,0 +1,39 @@ +import { ConnectButton } from "@mysten/dapp-kit"; +import { Box, Container, Flex, Heading } from "@radix-ui/themes"; +import {PtbBlock} from "./ptb.tsx"; + +function App() { + return ( + <> + + + dApp Starter Template + + + + + + + + + + + + + ); +} + +export default App; diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/OwnedObjects.tsx b/mover/EarthChen/code/task6/my-first-sui-dapp/src/OwnedObjects.tsx new file mode 100644 index 000000000..fa759db0a --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/OwnedObjects.tsx @@ -0,0 +1,42 @@ +import { useCurrentAccount, useSuiClientQuery } from "@mysten/dapp-kit"; +import { Flex, Heading, Text } from "@radix-ui/themes"; + +export function OwnedObjects() { + const account = useCurrentAccount(); + const { data, isPending, error } = useSuiClientQuery( + "getOwnedObjects", + { + owner: account?.address as string, + }, + { + enabled: !!account, + }, + ); + + if (!account) { + return; + } + + if (error) { + return Error: {error.message}; + } + + if (isPending || !data) { + return Loading...; + } + + return ( + + {data.data.length === 0 ? ( + No objects owned by the connected wallet + ) : ( + Objects owned by the connected wallet + )} + {data.data.map((object) => ( + + Object ID: {object.data?.objectId} + + ))} + + ); +} diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/WalletStatus.tsx b/mover/EarthChen/code/task6/my-first-sui-dapp/src/WalletStatus.tsx new file mode 100644 index 000000000..21e734677 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/WalletStatus.tsx @@ -0,0 +1,23 @@ +import { useCurrentAccount } from "@mysten/dapp-kit"; +import { Container, Flex, Heading, Text } from "@radix-ui/themes"; +import { OwnedObjects } from "./OwnedObjects"; + +export function WalletStatus() { + const account = useCurrentAccount(); + + return ( + + Wallet Status + + {account ? ( + + Wallet connected + Address: {account.address} + + ) : ( + Wallet not connected + )} + + + ); +} diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/main.tsx b/mover/EarthChen/code/task6/my-first-sui-dapp/src/main.tsx new file mode 100644 index 000000000..db3a81acc --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/main.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "@mysten/dapp-kit/dist/index.css"; +import "@radix-ui/themes/styles.css"; + +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Theme } from "@radix-ui/themes"; +import App from "./App.tsx"; +import { networkConfig } from "./networkConfig.ts"; + +const queryClient = new QueryClient(); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + + + + + + , +); diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/networkConfig.ts b/mover/EarthChen/code/task6/my-first-sui-dapp/src/networkConfig.ts new file mode 100644 index 000000000..96de92158 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/networkConfig.ts @@ -0,0 +1,17 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + }, + testnet: { + url: getFullnodeUrl("testnet"), + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/ptb.tsx b/mover/EarthChen/code/task6/my-first-sui-dapp/src/ptb.tsx new file mode 100644 index 000000000..1a3ee6bd7 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/ptb.tsx @@ -0,0 +1,162 @@ +import { useCurrentAccount, useSignAndExecuteTransaction } from "@mysten/dapp-kit"; +import { Box, Button, Card, Container, DataList, Flex, Text } from "@radix-ui/themes"; +import { pool, Sui, nUSDC } from 'navi-sdk/dist/address' +import { getLatestProtocolPackageId } from 'navi-sdk/dist/libs/PoolInfo' +import { NAVISDKClient } from "navi-sdk/dist/naviSDK"; +import { useEffect, useState } from "react"; +import { Transaction } from "@mysten/sui/transactions"; +import { depositCoin, borrowCoin, repayDebt } from 'navi-sdk/dist/libs/PTB' +import { Pool, PoolConfig } from "navi-sdk/dist/types"; + + +export const addZero = (v: number) => { + if (v < 10) { + return '0' + v + } else { + return '' + v + } + } + + export const getCurrentTime = () => { + const myDate=new Date(); + const year = myDate.getFullYear(); + const month = myDate.getMonth()+1; + const date = myDate.getDate(); + const hour = myDate.getHours(); + const min = myDate.getMinutes(); + const second = myDate.getSeconds(); + return { + year, + month, + date, + hour, + min, + second + } + } + + +export function PtbBlock() { + const [realtimeData, setRealtimeData] = useState<{[key: string]: any}[]>() + const [digest, setDigest] = useState('') + + const naviClient = new NAVISDKClient({ networkType: 'mainnet' }); + const account = useCurrentAccount(); + + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + + const getNaviPackageId = async () => { + const id = await getLatestProtocolPackageId() + console.log(id) + } + + const getRealTimeData = async () => { + const res = await Promise.all([naviClient.getPoolInfo(nUSDC), naviClient.getPoolInfo(Sui)]) + setRealtimeData(res) + } + + // usdc精度为6 + const getCurrentDateAmount = () => { + const { + month, + date, + hour, + } = getCurrentTime() + // [月][天][小时] 5位 + return parseInt(`${addZero(month)}${addZero(date)}${addZero(hour)}`) + + } + const startPtb =async () => { + if (!account) { + return + } + const tx = new Transaction(); + + // 存入 1 Sui + // 获取sui池子配置 + const suiAmount = 1000000000 + const suiPoolConfig: PoolConfig = pool[Sui.symbol as keyof Pool]; + const suiCoin = tx.splitCoins(tx.gas, [suiAmount]) + await depositCoin(tx, suiPoolConfig, suiCoin, suiAmount) + console.log('存入Sui:', suiAmount) + + // 借出当前时间的nUSDC + const nUSDCPoolConfig: PoolConfig = pool[nUSDC.symbol as keyof Pool]; + // 借出nUSDC的数量 0.[月][天][小时] + const nUSDCAmount = getCurrentDateAmount() + const [borrowBalance] = await borrowCoin(tx, nUSDCPoolConfig, nUSDCAmount) + console.log('借出 nUSDC:', nUSDCAmount) + + // 归还nUSDC + await repayDebt(tx, nUSDCPoolConfig, borrowBalance, nUSDCAmount) + console.log('归还 nUSDC:', nUSDCAmount) + + // 执行ptb + signAndExecuteTransaction( + { + transaction: tx, + }, + { + onSuccess: (result) => { + console.log('executed transaction', result); + setDigest(result.digest); + }, + onError: (error) => { + console.error(error.message) + } + } + ) + } + + useEffect(() => { + getNaviPackageId() + + getRealTimeData() + // setInterval(() => { + // getRealTimeData() + // }, 10000) + }, []) + return ( + + {account ? ( + + 钱包已连接 + Address: {account.address} + + ) : ( + 钱包未连接 + )} +
+ +
{digest}
+
+ + { + realtimeData?.map((data, realtimeKey) => ( + + + + { + data && Object.keys(data).map(key => { + if (key !== 'rewardTokenAddress' && key !== 'coin_type') { + return ( + + { key } + + { data[key] } + + + ) + } + }) + } + + + + )) + } + + +
+ ); +} diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/src/vite-env.d.ts b/mover/EarthChen/code/task6/my-first-sui-dapp/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/tsconfig.json b/mover/EarthChen/code/task6/my-first-sui-dapp/tsconfig.json new file mode 100644 index 000000000..a7fc6fbf2 --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/tsconfig.node.json b/mover/EarthChen/code/task6/my-first-sui-dapp/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/mover/EarthChen/code/task6/my-first-sui-dapp/vite.config.ts b/mover/EarthChen/code/task6/my-first-sui-dapp/vite.config.ts new file mode 100644 index 000000000..d366e8c8d --- /dev/null +++ b/mover/EarthChen/code/task6/my-first-sui-dapp/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/mover/EarthChen/code/task7/check_in/Move.lock b/mover/EarthChen/code/task7/check_in/Move.lock new file mode 100644 index 000000000..67b15779d --- /dev/null +++ b/mover/EarthChen/code/task7/check_in/Move.lock @@ -0,0 +1,26 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0577871E9F47DF334E0DB1BD5DF1F3265B7FE5B4D0FFB5F16C3C5853B13CE8E5" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" diff --git a/mover/EarthChen/code/task7/check_in/Move.toml b/mover/EarthChen/code/task7/check_in/Move.toml new file mode 100644 index 000000000..3e11a52d3 --- /dev/null +++ b/mover/EarthChen/code/task7/check_in/Move.toml @@ -0,0 +1,36 @@ +[package] +name = "check_in" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +check_in = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" \ No newline at end of file diff --git a/mover/EarthChen/code/task7/check_in/sources/check_in.move b/mover/EarthChen/code/task7/check_in/sources/check_in.move new file mode 100644 index 000000000..398fbfcac --- /dev/null +++ b/mover/EarthChen/code/task7/check_in/sources/check_in.move @@ -0,0 +1,96 @@ +module check_in::check_in { + use std::debug::print; + use std::ascii::{String, string}; + use std::bcs; + use std::hash::sha3_256; + use std::vector; + use sui::event; + use sui::object; + use sui::random; + use sui::random::Random; + use sui::transfer::share_object; + use sui::tx_context::{Self, TxContext}; + + const ESTRING: u64 = 0; + + public struct Flag has copy, drop { + sender: address, + flag: bool, + ture_num: u64, + github_id: String + } + + public struct FlagString has key { + id: UID, + str: String, + ture_num: u64 + } + + fun init(ctx: &mut TxContext) { + let flag_str = FlagString { + id: object::new(ctx), + str: string(b"LetsMoveCTF"), + ture_num: 0 + }; + share_object(flag_str); + } + + + entry fun get_flag( + flag: vector, + github_id: String, + flag_str: &mut FlagString, + rand: &Random, + ctx: &mut TxContext + ) { + let mut bcs_flag = bcs::to_bytes(&flag_str.str); + vector::append(&mut bcs_flag, *github_id.as_bytes()); + + assert!(flag == sha3_256(bcs_flag), ESTRING); + + flag_str.str = getRandomString(rand, ctx); + + flag_str.ture_num = flag_str.ture_num + 1; + + event::emit(Flag { + sender: tx_context::sender(ctx), + flag: true, + ture_num: flag_str.ture_num, + github_id + }); + } + + + fun getRandomString(rand: &Random, ctx: &mut TxContext): String { + let mut gen = random::new_generator(rand, ctx); + + let mut str_len = random::generate_u8_in_range(&mut gen, 4, 30); + + let mut rand: vector = b""; + while (str_len != 0) { + let rand_num = random::generate_u8_in_range(&mut gen, 34, 126); + vector::push_back(&mut rand, rand_num); + str_len = str_len - 1; + }; + + string(rand) + } + + + entry fun get_flag_test():vector { + let mut bcs_flag: vector = bcs::to_bytes(&string(b"o|-WcKQ+Ac>[`Wd7EyW$xSh")); + vector:: append(&mut bcs_flag, *string(b"earthchen").as_bytes()); + let sha256= sha3_256(bcs_flag); + sha256 + } + + + #[test] + fun test1(){ + let ret= get_flag_test(); + print(&ret); + } + + +} + diff --git a/mover/EarthChen/code/task7/readme.md b/mover/EarthChen/code/task7/readme.md new file mode 100644 index 000000000..dd6f3a77e --- /dev/null +++ b/mover/EarthChen/code/task7/readme.md @@ -0,0 +1,3 @@ +```bash +sui client call --package 0x914099b4d1b4f5513acc8aaa4fdc1f67578522b81d818f61bae527d590c6d87d --module check_in --function get_flag --gas-budget 10000000 --args '0x274dfd20f8665701459951935aa88bab5b75d9f73de38c0458278ea60e978822' earthchen 0xc8dcd54baa7724177593a9f70598a09ae6a4286f996542e058f248209db08147 0x8 +``` \ No newline at end of file diff --git a/mover/EarthChen/images/task7.png b/mover/EarthChen/images/task7.png new file mode 100644 index 000000000..ef7c083ba Binary files /dev/null and b/mover/EarthChen/images/task7.png differ diff --git a/mover/EarthChen/readme.md b/mover/EarthChen/readme.md index dc3209d4f..243c1c02b 100644 --- a/mover/EarthChen/readme.md +++ b/mover/EarthChen/readme.md @@ -32,22 +32,22 @@ - [x] scan上的NFT截图:![Scan截图](./images/nft_scan.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id :0x472b8f0ff90d472069fb57f33a9899243debb7c3201f1dc3bb2b49d15ec537ee +- [x] deposit Coin hash: 8VXsjH2eVz1TWAc5DkAWrtPYVNoArEgVJZq8tCxnNscc +- [x] withdraw `Coin` hash: HizGTtY5FGAGuEQ3g9idAyFuP5BMh8dnH1hSKsTV9ZD8 +- [x] play game hash: AjYKT5oKewnDWv9fnDvYRvoeRDBzfGuYGmPSMXGpv2cY ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [x] swap package id :0x6d4dd7fffe36cce18887a19a935df4cd45633546c947756ce7d45d1fbca9766e +- [x] call swap CoinA-> CoinB hash :DXUJPhgKCNc8oMdq9gNQxRvzKPhWrZHbEwpa9bEc72S8 +- [x] call swap CoinB-> CoinA hash :8u7wjB5V3FnE4kBXF6Y1CcCpc7XPZ5o6zN9r3oQvwfs2 ## 06 Dapp-kit SDK PTB -- [] save hash : +- [x] save hash :JPUo2RssPWGqhXdeGaUtr1uuhTjhgdMT9R3oFSVG5hb ## 07 Move CTF Check In -- [] CLI call 截图 : ![截图](./images/你的图片地址) -- [] flag hash : +- [x] CLI call 截图 : ![截图](./images/task7.png) +- [x] flag hash : 6zyAcnJ5WMzzQpsBWdoXPcsTeVyNLbDWSV2bTtNvRWb9 ## 08 Move CTF Lets Move - [] proof : diff --git "a/mover/Funnyyanne/co-learn-2411/images/task6\347\254\224\350\256\260\346\210\252\345\233\276.png" "b/mover/Funnyyanne/co-learn-2411/images/task6\347\254\224\350\256\260\346\210\252\345\233\276.png" new file mode 100644 index 000000000..8623d1746 Binary files /dev/null and "b/mover/Funnyyanne/co-learn-2411/images/task6\347\254\224\350\256\260\346\210\252\345\233\276.png" differ diff --git "a/mover/Funnyyanne/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255.png" "b/mover/Funnyyanne/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255.png" new file mode 100644 index 000000000..c2133bb4d Binary files /dev/null and "b/mover/Funnyyanne/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255.png" differ diff --git "a/mover/Funnyyanne/co-learn-2411/images/\345\244\215\345\220\210\345\200\237\350\264\267.png" "b/mover/Funnyyanne/co-learn-2411/images/\345\244\215\345\220\210\345\200\237\350\264\267.png" new file mode 100644 index 000000000..8651700b2 Binary files /dev/null and "b/mover/Funnyyanne/co-learn-2411/images/\345\244\215\345\220\210\345\200\237\350\264\267.png" differ diff --git "a/mover/Funnyyanne/co-learn-2411/images/\346\224\266\347\233\212\350\200\225\344\275\234.png" "b/mover/Funnyyanne/co-learn-2411/images/\346\224\266\347\233\212\350\200\225\344\275\234.png" new file mode 100644 index 000000000..4ea082796 Binary files /dev/null and "b/mover/Funnyyanne/co-learn-2411/images/\346\224\266\347\233\212\350\200\225\344\275\234.png" differ diff --git "a/mover/Funnyyanne/co-learn-2411/images/\346\235\240\346\235\206\344\272\244\346\230\223.png" "b/mover/Funnyyanne/co-learn-2411/images/\346\235\240\346\235\206\344\272\244\346\230\223.png" new file mode 100644 index 000000000..8abc37485 Binary files /dev/null and "b/mover/Funnyyanne/co-learn-2411/images/\346\235\240\346\235\206\344\272\244\346\230\223.png" differ diff --git "a/mover/Funnyyanne/co-learn-2411/images/\347\254\224\350\256\260\347\276\244\345\206\205\345\210\206\344\272\253.png" "b/mover/Funnyyanne/co-learn-2411/images/\347\254\224\350\256\260\347\276\244\345\206\205\345\210\206\344\272\253.png" new file mode 100644 index 000000000..e43458510 Binary files /dev/null and "b/mover/Funnyyanne/co-learn-2411/images/\347\254\224\350\256\260\347\276\244\345\206\205\345\210\206\344\272\253.png" differ diff --git "a/mover/Funnyyanne/co-learn-2411/project/Sui Move \345\255\246\344\271\240 \357\274\232sui \345\221\275\344\273\244\346\200\273\347\273\223.md" "b/mover/Funnyyanne/co-learn-2411/project/Sui Move \345\255\246\344\271\240 \357\274\232sui \345\221\275\344\273\244\346\200\273\347\273\223.md" new file mode 100644 index 000000000..70818f3ce --- /dev/null +++ "b/mover/Funnyyanne/co-learn-2411/project/Sui Move \345\255\246\344\271\240 \357\274\232sui \345\221\275\344\273\244\346\200\273\347\273\223.md" @@ -0,0 +1,141 @@ +Sui Move 学习:Sui Client PTB CLI 常用命令 + 1 +常用Sui命令总结 + +常用Sui命令总结 + +创建钱包 +创建新钱包 + +sui client new-address ed25519 + +查看钱包地址 + +sui client addresses + +切换当前使用的地址 + +sui client switch --address + +keytool +查看别名 + +sui keytool list -s + +使用别名导出私钥 +sui keytool export --key-identity [别名] + +查看私钥 + +cat sui.keystore + +私钥转bech32格式 +sui keytool convert + +查看环境 +sui client envs + + + +image.png + +切换环境 +sui client switch --env testnet + +部署合约 +编译合约 + +sui move build + +运行测试 + +sui move test + +发包之前执行此操作,避免发布失败,消耗不必要的gas + +sui client verify-bytecode-meter 检查字节码是否超过规定值 + +添加gas 预算 可防止发布失败导致浪费 + +sui client publish --gas-budget 100000 + +部署合约后,记录 packageid + +查看交易事件 + +sui client event --package + +转sui +sui client transfer-sui --to <钱包地址> --sui-coin-object-id --gas-budget 100000000 + +合约更新 + +合约更新不允许修改现有字段,函数。只能新增。 不建议更新 + +sui client upgrade --gas-budget 500000000 --upgrade-capability + +--coin +查看代币信息 +sui client object + +--spilt coin +task4 可以用到,⚠️ 需要是同一个package id 下 铸造的coin + +1.指定coin 额度分割 + +使用sui client balance --with-coins 查看执行前 coin 的余额 +image.png + +#!/bin/bash + +# 给脚本添加执行权限 正确执行结果 +chmod +x splitcoin.sh + +# 分割代币的命令 指定大小 +sui client split-coin --gas-budget 50000000 \ + --coin-id 0x13cbc3915002f05d5a72fbd28e7080ec4c869dc8dff30f18f049d7a8c228b3b2 \ + --amounts 1000000 100000 900000 +执行命令后,分割成指定大小了。 +image.png + +2.指定数量分割coin + + + +image.png +分割前查询☝️ + +#分割 fauct_coin 分割五个 +sui client split-coin --gas-budget 50000000 \ + --coin-id 0xc03e9ad9e1ce8f5ccbf0b9b3522247881630b93ba604e378c2f7b3d8959fb1c0 \ + --count 5 +执行后faucet coin的大小👇 + + +image.png + +使用 sui client split-coin --help查看 最新的命令操作(此处查阅到的命令未来可能会变,建议自行查阅) + +image.png + +⚠️错误示范 警惕 + + +image.png + +报错: + +image.png + +多参数执行,拼写错误导致。 +image.png + +gas 不够,加上—gas-budget 750000 设置预算。 + +查阅了官网的- -spilt coin 命令操作,有如下的错误,这些我常未找到解决的办法,有知道的佬们可以留言,感激不尽🥹。 + +sui client ptb --split-coins 0x13cbc3915002f05d5a72fbd28e7080ec4c869dc8dff30f18f049d7a8c228b3b2 [1000000] + +该命令报错:error:zsh: no matches found: [1000000] +image.png + diff --git "a/mover/Funnyyanne/co-learn-2411/project/SuiMove\345\255\246\344\271\240_NaviProtocol\344\270\216PTB\347\232\204\344\275\277\347\224\250.md" "b/mover/Funnyyanne/co-learn-2411/project/SuiMove\345\255\246\344\271\240_NaviProtocol\344\270\216PTB\347\232\204\344\275\277\347\224\250.md" new file mode 100644 index 000000000..097ab4a33 --- /dev/null +++ "b/mover/Funnyyanne/co-learn-2411/project/SuiMove\345\255\246\344\271\240_NaviProtocol\344\270\216PTB\347\232\204\344\275\277\347\224\250.md" @@ -0,0 +1,56 @@ +# Sui Move 学习: Navi Protocol 与 PTB 的使用 +## 1.PTB (Programmable Transaction Block)概念 + PTB 是 Sui 中的交易容器,允许多个操作打包在一个原子交易(atomic transaction:原子交易是指一组操作,要么全部成功,要么全部失败。)中。在一个交易中,PTB 可以包含多个模块和函数调用,所有操作要么全部成功,要么全部失败。 +## 2.PTB主要用途 + 2.1 原子性操作:Navi Protocol 中的借贷操作 + 1.存入抵押品(e.g. SUI) + 2.借出资产(e.g. USDC) + 3.更新用户状态 + 4.更新借贷池状态 + 2.2 Gas 费用优化 + (Gas 费用是指在区块链网络上执行交易或智能合约时所需支付的费用,以换取网络的计算资源和存储空间。) + PTB 的使用可以优化Gas 费用。 + 原因:多个操作打包在一个交易中,只需支付一次Gas 费用。 + 2.3 复杂的交易流程 + 1.Dex交易 (Dex 是 Decentralized Exchange 的缩写,中文是去中心化交易所。允许我们直接在区块链上进行点对点的资产交易,不需要中心化的中介。) + 2.跨池操作 + 例如:用户想用 SUI 换取 USDC,需要先在 Sui 池存入 SUI 作为抵押, 再在 Navi Protocol 中将 USDC 换成 SUI,再更新两个池的状态。 + 3.多步骤金融操作 + 复合借贷操作 + ![image](../images/复合借贷.png) + Yield Farming (收益耕作) + ![image](../images/收益耕作.png) + 杠杆交易 + ![image](../images/杠杆交易.png) + 仅举例本人知道的交易类型,PTB 支持的交易类型还有很多。 +## 3.Navi Protocol +Navi Protocol 是一种用于 Sui 的去中心化交易协议,它允许用户在 Sui 网络上进行交易,而无需信任任何中心化机构。Navi Protocol 使用 PTB 来执行交易,并且支持多种交易类型,包括代币交易、NFT 交易等。 +import {pool, Sui, wUSDC} from "navi-sdk/dist/address"; +Pool & PoolConfig + + +wUSDC vs nUSDC +wUSDC (Wrapped USDC) 是原始 USDC 的包装版本 +主要用于在不同链或协议间实现 USDC 的互操作性。 +本质上是一个 ERC20 代币,代表了在原链上锁定的 USDC。 +nUSDC (Navi USDC) +是 Navi Protocol 特有的利息承载代币 +代表了用户在 Navi Protocol 中存入的 USDC,价值会逐渐增加,因为它包含了存款产生的利息 +总结:wUSDC 是为了跨链/跨协议使用而包装的 USDC,价值恒定 1:1,nUSDC 是 Navi Protocol 的收益代币,反映了存款本金加上累积的利息。 +| 特性 | wUSDC | nUSDC | +|------|-------|-------| +| 用途 | 交易媒介 | 存款凭证 | +| 价值锚定 | 1:1 锚定 USDC | 随时间增值 | +| 可转让性 | 可自由转让 | 协议内使用 | +| 利息 | 无 | 可赚取利息 | +| 主要场景 | 交易、支付 | 借贷、质押 | + +余下内容,联系本人,若需转载原文,请注明出处。 + +💧 HOH水分子公众号 + +🌊 HOH水分子X账号 + +📹 课程B站账号 + +💻 Github仓库 https://github.com/move-cn/letsmove \ No newline at end of file diff --git a/mover/Funnyyanne/co-learn-2411/readme.md b/mover/Funnyyanne/co-learn-2411/readme.md index c0a4e9ab8..61cd320f1 100644 --- a/mover/Funnyyanne/co-learn-2411/readme.md +++ b/mover/Funnyyanne/co-learn-2411/readme.md @@ -19,22 +19,22 @@ - [✅] 第一周:![学习记录截图](./images/参加第一周直播.png) - [✅] 第二周:![学习记录截图](./images/参加第二周周一直播.png) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [✅] 第三周:![学习记录截图](./images/参加第三周直播.png) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 - [✅] 第一篇笔记 :[Sui Move 学习 :task4 链游部署](https://learnblockchain.cn/article/9824) - [✅] 第二篇笔记:[Sui Move 学习:Task 5 Swap](https://learnblockchain.cn/article/9877) 截图在images -- [] 第三篇笔记 -- [] 第四篇笔记 +- [✅] 第三篇笔记:[学习记录截图](./images/task6笔记截图.png) +- [✅] 第四篇笔记:[笔记群内分享](./images/笔记群内分享.png) ## 对外输出学习笔记 - [✅] 第一篇笔记【学习笔记链接】:[Sui Move 学习 :task4 链游部署](https://learnblockchain.cn/article/9824) - [✅] 第二篇笔记【学习笔记链接】[Sui Move 学习:Task 5 Swap](https://learnblockchain.cn/article/9877) -- [] 第三篇笔记【学习笔记链接】 -- [] 第四篇笔记【学习笔记链接】 +- [✅] 第三篇笔记【学习笔记链接】[Sui Move 学习: Navi Protocol 与 PTB (Task6:PTB、Navi 交互)](https://learnblockchain.cn/article/9947) +- [✅] 第四篇笔记【学习笔记链接】[Sui Move 学习:sui 命令总结](https://learnblockchain.cn/article/9951) ## 在HOH社区公众号发布自己的技术文章 diff --git a/mover/Funnyyanne/code/task6/my-first-sui-dap/src/task.tsx b/mover/Funnyyanne/code/task6/my-first-sui-dap/src/task.tsx new file mode 100644 index 000000000..0aaaefb01 --- /dev/null +++ b/mover/Funnyyanne/code/task6/my-first-sui-dap/src/task.tsx @@ -0,0 +1,75 @@ +import { Button, Container, Flex, Text} from "@radix-ui/themes"; +import {useCurrentAccount,useSignAndExecuteTransaction} from "@mysten/dapp-kit"; +import { Transaction } from "@mysten/sui/transactions"; + +import {Pool, PoolConfig} from "navi-sdk/dist/types"; +import {pool, Sui, wUSDC} from "navi-sdk/dist/address"; +import {borrowCoin, depositCoin} from "navi-sdk/dist/libs/PTB"; +import {useState} from "react"; + + +// 1.[存入Navi Protocol 1 SUI] +// 2.[借出当前日期的USDC 0.[月][天][小时] 的 USDC ] +// 3.[然后在存入等额的USDC] +export function Task(){ + //当前连接钱包账户 + const account = useCurrentAccount(); + + const {mutate :signAndExecuteTransaction} = useSignAndExecuteTransaction(); + const [digest, setDigest] = useState(''); + const [message, setMessage] = useState(''); + + const deposit_borrow_Sui = async ()=>{ + + const date = new Date() + const month = date.getMonth() + 1; // getMonth() returns 0-11 + const day = date.getDate(); + const hour = date.getHours(); + + // 确保每个数字都是两位数 + const borrow_amount = parseFloat(`0.${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}${hour.toString().padStart(2, '0')}`) * (10 ** wUSDC.decimal); + + const tx = new Transaction(); + tx.setSender(account!.address); + + //存入1Sui + // 获取Sui池子配置 + // @ts-ignore + const suiPool: PoolConfig = pool[Sui.symbol as keyof Pool]; + const [suiCoin] = tx.splitCoins(tx.gas, [1_000_000_000]); // 1 SUI = 10^9 MIST + await depositCoin(tx, suiPool, suiCoin, 1_000_000_000); + console.log('deposit_amount count', suiCoin.NestedResult); + + + // 借出USDC + console.log('borrow count', borrow_amount); + const wusdcPool: PoolConfig = pool[wUSDC.symbol as keyof Pool]; + const [toBorrowCoin] = await borrowCoin(tx, wusdcPool, borrow_amount); + + + // 存入USDC + await depositCoin(tx, wusdcPool,toBorrowCoin, borrow_amount); + + // 提交交易 + console.log('signAndExecuteTransaction'); + + await signAndExecuteTransaction({transaction:tx,chain:'sui:mainnet'},{onSuccess:(result)=>{ + console.log('executed transaction success',result); + setDigest(result.digest); + },onError:(error)=>{ + console.log('executed transaction error',error); + setMessage(error.message); + } }); + + } + return( + + + + {digest ? `Transaction submitted: ${digest}` : message} + + + ) + + +} \ No newline at end of file diff --git a/mover/Funnyyanne/code/task8/get_challenge_bsc/Move.lock b/mover/Funnyyanne/code/task8/get_challenge_bsc/Move.lock new file mode 100644 index 000000000..659ba2826 --- /dev/null +++ b/mover/Funnyyanne/code/task8/get_challenge_bsc/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "C2243F49C326CD9A1C6AF4521CEE54DD8356D3AC90257183B95ECBC12818E4A7" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "lets_move", name = "lets_move" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "lets_move" +source = { local = "../lets_move" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x74d9dafd60ed5991463b21f930b5e70e1882ff1ae9acde7c01ad706f9327bc1f" +latest-published-id = "0x74d9dafd60ed5991463b21f930b5e70e1882ff1ae9acde7c01ad706f9327bc1f" +published-version = "1" diff --git a/mover/Funnyyanne/code/task8/get_challenge_bsc/Move.toml b/mover/Funnyyanne/code/task8/get_challenge_bsc/Move.toml new file mode 100644 index 000000000..bd6091d98 --- /dev/null +++ b/mover/Funnyyanne/code/task8/get_challenge_bsc/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "get_challenge_bsc" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +lets_move ={local = "../lets_move"} +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +get_challenge_bsc = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/Funnyyanne/code/task8/get_challenge_bsc/sources/get_challenge_bsc.move b/mover/Funnyyanne/code/task8/get_challenge_bsc/sources/get_challenge_bsc.move new file mode 100644 index 000000000..700c4fcdd --- /dev/null +++ b/mover/Funnyyanne/code/task8/get_challenge_bsc/sources/get_challenge_bsc.move @@ -0,0 +1,18 @@ + +module get_challenge_bsc::get_challenge_bsc{ + use lets_move::lets_move::Challenge; + use sui::bcs; + use sui::event; + + public struct ChallengeByte has copy, drop { + challenge_bytes: vector + + } + public entry fun get_challenge_bsc(challenge: &Challenge){ + let challenge_bytes = bcs::to_bytes(challenge); + event::emit(ChallengeByte { challenge_bytes }); + } +} + + + diff --git a/mover/Funnyyanne/images/task7.png b/mover/Funnyyanne/images/task7.png new file mode 100644 index 000000000..f53a3a2fe Binary files /dev/null and b/mover/Funnyyanne/images/task7.png differ diff --git a/mover/Funnyyanne/images/task8.png b/mover/Funnyyanne/images/task8.png new file mode 100644 index 000000000..4b5c42456 Binary files /dev/null and b/mover/Funnyyanne/images/task8.png differ diff --git a/mover/Funnyyanne/readme.md b/mover/Funnyyanne/readme.md index 7e98680c1..d402308e5 100644 --- a/mover/Funnyyanne/readme.md +++ b/mover/Funnyyanne/readme.md @@ -43,12 +43,12 @@ - [✅] call swap CoinB-> CoinA hash :EFMWXjTE8PBXfv2WncAGB43Taqibm8SWMiyD6JR8tQoW ## 06 Dapp-kit SDK PTB -- [] save hash : +- [✅] save hash :JAbfWwAHS1VkCNtsRHtmckFpfJMSnp36CCYxa3oj7VGw ## 07 Move CTF Check In -- [] CLI call 截图 : ![截图](./images) -- [] flag hash : +- [✅] CLI call 截图 : ![截图](./images/task7.png) +- [✅] flag hash :2C1VTmQ17J7wXQGRsz4sBDMQS1tuxWMGCb1L1cYD7FV2 ## 08 Move CTF Lets Move -- [] proof : -- [] flag hash : +- [✅] proof : [195, 57, 129, 1, 0, 0, 0, 0] +- [✅] flag hash :Ek1WgRUCpE5vfXdKZLDrZy9anyHQp9Hh2ACaSnzSqqre diff --git a/mover/Jmagicc/code/task2/sources/jmagicc_coin.move b/mover/Jmagicc/code/task2/sources/jmagicc_coin.move new file mode 100644 index 000000000..2e1b90f46 --- /dev/null +++ b/mover/Jmagicc/code/task2/sources/jmagicc_coin.move @@ -0,0 +1,37 @@ +module jmagicc_coin::jmagicc_coin { + use sui::coin::{Self}; + use sui::url::{Url,Self}; + + public struct JMAGICC_COIN has drop {} + + + fun init(witness: JMAGICC_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 9, // decimals + b"JMAGICC", // symbol + b"Jmagicc Coin", // name + b"Jmagicc Coin", // description + option::some(url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/58356228")), // icon url + ctx + ); + + // transfer the `TreasuryCap` to the sender, so they can mint and burn + transfer::public_transfer(treasury, tx_context::sender(ctx)); + + // metadata is typically frozen after creation + transfer::public_freeze_object(metadata); + } + + + public entry fun mint( + treasury_cap: &mut coin::TreasuryCap, amount: u64, recipient: address, ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + + public entry fun burn(treasury_cap: &mut coin::TreasuryCap, target: coin::Coin) { + coin::burn(treasury_cap, target); + } +} diff --git a/mover/Jmagicc/code/task2/sources/jmagicc_faucet_coin.move b/mover/Jmagicc/code/task2/sources/jmagicc_faucet_coin.move new file mode 100644 index 000000000..29281c712 --- /dev/null +++ b/mover/Jmagicc/code/task2/sources/jmagicc_faucet_coin.move @@ -0,0 +1,37 @@ +module jmagicc_faucet_coin::jmagicc_faucet_coin { + use sui::coin::{Self}; + use sui::url::{Url,Self}; + + public struct JMAGICC_FAUCET_COIN has drop {} + + + fun init(witness: JMAGICC_FAUCET_COIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, // decimals + b"JMAGICC FAUCET", // symbol + b"Jmagicc Faucet Coin", // name + b"Jmagicc Faucet Coin", // description + option::some(url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/58356228")), // icon url + ctx + ); + + transfer::public_freeze_object(metadata); + + transfer::public_share_object(treasury_cap) + } + + + public entry fun mint( + treasury_cap: &mut coin::TreasuryCap, amount: u64, recipient: address, ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + + public entry fun burn(treasury_cap: &mut coin::TreasuryCap, target: coin::Coin) { + coin::burn(treasury_cap, target); + } +} + + diff --git a/mover/Jmagicc/readme.md b/mover/Jmagicc/readme.md index 17e9dce9b..34a857b89 100644 --- a/mover/Jmagicc/readme.md +++ b/mover/Jmagicc/readme.md @@ -13,17 +13,17 @@ ## 任务 ## 01 hello move -- [] Sui cli version: sui 1.34.0-99ebd8f082f2 -- [] Sui钱包截图: ![Sui钱包截图](./images/sui-wallet.png) -- [] package id: 0xc441a563822caa87821d4aeb29948ba735fdc61b7647d313916b6550f89b5a0 -- [] package id 在 scan上的查看截图:![Scan截图](./images/package-id.png) - -## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] Sui cli version: sui 1.34.0-99ebd8f082f2 +- [x] Sui钱包截图: ![Sui钱包截图](./images/sui-wallet.png) +- [x] package id: 0xc441a563822caa87821d4aeb29948ba735fdc61b7647d313916b6550f89b5a0 +- [x] package id 在 scan上的查看截图:![Scan截图](./images/package-id.png) + +## 02 move coin +- [x] My Coin package id : 0x26c52507cbd06684da94a201bc6228acce8337bb768bd423f7a5d8db5fe28598 +- [x] Faucet package id : 0x456356b93dd173dfc641a21db0b53f504baeca59b9679c267692c5b5b3f28369 +- [x] 转账 `My Coin` hash: Bc9RUbLhzw31xaE87NmqzpwyXiqx12hanJGgyiPJ1o62 +- [x] `Faucet Coin` address1 mint hash: 9GdcMy9xUsVPFZ1TeK6vvQ3DpvUeLTxW1kpH8KoKgPfG +- [x] `Faucet Coin` address2 mint hash: 2pnVPpT3mMCrHVgCgpXoP9VSbDeV75VA2yB57Fe3X2ib ## 03 move NFT - [] nft package id : diff --git a/mover/LeonDev1024/co-learn-2411/images/x_guanzhu.jpg b/mover/LeonDev1024/co-learn-2411/images/x_guanzhu.jpg new file mode 100644 index 000000000..9ca23155b Binary files /dev/null and b/mover/LeonDev1024/co-learn-2411/images/x_guanzhu.jpg differ diff --git "a/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" "b/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" new file mode 100644 index 000000000..1294399af Binary files /dev/null and "b/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" differ diff --git "a/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255\345\255\246\344\271\240.png" "b/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255\345\255\246\344\271\240.png" new file mode 100644 index 000000000..a22dad604 Binary files /dev/null and "b/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255\345\255\246\344\271\240.png" differ diff --git "a/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\345\255\246\344\271\240\346\210\252\345\233\276.png" "b/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\345\255\246\344\271\240\346\210\252\345\233\276.png" new file mode 100644 index 000000000..4d0f6ce9e Binary files /dev/null and "b/mover/LeonDev1024/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\345\255\246\344\271\240\346\210\252\345\233\276.png" differ diff --git a/mover/LeonDev1024/co-learn-2411/readme.md b/mover/LeonDev1024/co-learn-2411/readme.md index 889a8819f..3ff2a0cfb 100644 --- a/mover/LeonDev1024/co-learn-2411/readme.md +++ b/mover/LeonDev1024/co-learn-2411/readme.md @@ -10,9 +10,9 @@ ## 每周课程学习 -- [] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](./images/第一周学习记录.png) +- [x] 第二周:![学习记录截图](./images/第二周学习截图.png) +- [x] 第三周:![学习记录截图](./images/第三周直播学习.png) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 @@ -25,14 +25,14 @@ ## 群里分享学习笔记 - [x] [第一篇笔记](../notes/task4/readme.md) -- [] 第二篇笔记 +- [x] [第二篇笔记](../notes/taskt/readme.md) - [] 第三篇笔记 - [] 第四篇笔记 ## 对外输出学习笔记 - [x] 第一篇笔记【https://learnblockchain.cn/article/9899】 -- [] 第二篇笔记【学习笔记链接】 +- [x] 第二篇笔记【https://learnblockchain.cn/article/9968】 - [] 第三篇笔记【学习笔记链接】 - [] 第四篇笔记【学习笔记链接】 diff --git a/mover/LeonDev1024/code/task5/LeonDev1024/Move.lock b/mover/LeonDev1024/code/task5/LeonDev1024/Move.lock new file mode 100644 index 000000000..3e61a4640 --- /dev/null +++ b/mover/LeonDev1024/code/task5/LeonDev1024/Move.lock @@ -0,0 +1,52 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1049038A46FD51A3B4DFB943C2E8C4D463DEFCDC8A02216DD081D0491C946185" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucet_coin", name = "faucet_coin" }, + { id = "my_coin", name = "my_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucet_coin" +source = { local = "..\\faucet_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "my_coin" +source = { local = "..\\my_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xea75b8e26aefbace54c8c434070c1c655c0341f5dbb1aed28b229761393bb958" +latest-published-id = "0xea75b8e26aefbace54c8c434070c1c655c0341f5dbb1aed28b229761393bb958" +published-version = "1" diff --git a/mover/LeonDev1024/code/task5/LeonDev1024/Move.toml b/mover/LeonDev1024/code/task5/LeonDev1024/Move.toml new file mode 100644 index 000000000..e84e939b3 --- /dev/null +++ b/mover/LeonDev1024/code/task5/LeonDev1024/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "LeonDev1024" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +faucet_coin = { local = "../faucet_coin" } +my_coin = { local = "../my_coin" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +leondev1024 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/LeonDev1024/code/task5/LeonDev1024/sources/leondev1024.move b/mover/LeonDev1024/code/task5/LeonDev1024/sources/leondev1024.move new file mode 100644 index 000000000..61d032291 --- /dev/null +++ b/mover/LeonDev1024/code/task5/LeonDev1024/sources/leondev1024.move @@ -0,0 +1,153 @@ +/* +/// Module: leondev1024 +module leondev1024::leondev1024; +swap 必须是 swap 自己发行的 task2 两个 Coin的互换,包名必须是自己的github id +task2铸造的my_coin和faucet_coin的swap, +*/ +module leondev1024::leondev1024 { + // 导入必要的模块 + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::event; + use std::string::{Self, String}; + + // 导入自定义的代币模块 + use my_coin::leon_dev_1024_coin::LEON_DEV_1024_COIN; + use faucet_coin::leon_dev_1024_faucet_coin::LEON_DEV_1024_FAUCET_COIN; + + // 定义错误码, 流动性不足,金额为零 + const E_INSUFFICIENT_LIQUIDITY: u64 = 0; + const E_ZERO_AMOUNT: u64 = 1; + + // 流动性池结构体 + public struct Pool has key { + id: UID, + // 代币A的余额 + coin_a: Balance, + // 代币B的余额 + coin_b: Balance, + } + + // 添加流动性事件结构体 + public struct LiquidityEvent has copy, drop { + provider: address, + coin_a_amount: u64, + coin_b_amount: u64, + coin_a_type: String, + coin_b_type: String, + timestamp: u64, + } + + // 交换事件结构体 + public struct SwapEvent has copy, drop { + sender: address, + coin_in_amount: u64, + coin_out_amount: u64, + coin_in_type: String, + coin_out_type: String, + timestamp: u64, + } + + // 初始化函数,创建一个新的流动性池 + fun init(ctx: &mut TxContext) { + let pool = Pool { + id: object::new(ctx), + coin_a: balance::zero(), + coin_b: balance::zero(), + }; + transfer::share_object(pool); + } + + // 添加流动性函数 + public entry fun add_liquidity( + pool: &mut Pool, + coin_a: Coin, + coin_b: Coin, + ctx: &mut TxContext + ) { + let a_amount = coin::value(&coin_a); + let b_amount = coin::value(&coin_b); + + // 确保提供的代币数量大于零 + assert!(a_amount > 0 && b_amount > 0, E_ZERO_AMOUNT); + + balance::join(&mut pool.coin_a, coin::into_balance(coin_a)); + balance::join(&mut pool.coin_b, coin::into_balance(coin_b)); + + // 记录添加流动性的事件 + event::emit(LiquidityEvent + { + provider: tx_context::sender(ctx), + coin_a_amount: a_amount, + coin_b_amount: b_amount, + coin_a_type: string::utf8(b"LEON_DEV_1024_COIN"), + coin_b_type: string::utf8(b"LEON_DEV_1024_FAUCET_COIN"), + timestamp: tx_context::epoch(ctx), + }) + } + + // 代币A换代币B的函数 + public entry fun swap_a_to_b(pool: &mut Pool, coin_a_in: Coin, ctx: &mut TxContext) { + let a_amount = coin::value(&coin_a_in); + assert!(a_amount > 0, E_ZERO_AMOUNT); + + let b_reserve = balance::value(&pool.coin_b); + assert!(b_reserve > 0, E_INSUFFICIENT_LIQUIDITY); + + let a_reserve = balance::value(&pool.coin_a); + let b_out = (a_amount * b_reserve) / (a_reserve + a_amount); + + assert!(b_out > 0 && b_out <= b_reserve, E_INSUFFICIENT_LIQUIDITY); + + // change + balance::join(&mut pool.coin_a, coin::into_balance(coin_a_in)); + let coin_b_out = coin::take(&mut pool.coin_b, b_out, ctx); + transfer::public_transfer(coin_b_out, tx_context::sender(ctx)); + + event::emit(SwapEvent { + sender: tx_context::sender(ctx), + coin_in_amount: a_amount, + coin_out_amount: b_out, + coin_in_type: string::utf8(b"LEON_DEV_1024_COIN"), + coin_out_type: string::utf8(b"LEON_DEV_1024_FAUCET_COIN"), + timestamp: tx_context::epoch(ctx), + }); + } + + // 代币B LEON_DEV_1024_FAUCET_COIN 换代币A LEON_DEV_1024_COIN的函数 + public entry fun swap_b_to_a(pool: &mut Pool, coin_b_in: Coin, + ctx: &mut TxContext) { + let b_amount = coin::value(&coin_b_in); + // 确保输入的代币数量大于零 + assert!(b_amount > 0, E_ZERO_AMOUNT); + + let a_reserve = balance::value(&pool.coin_a); + // 确保可以换取的代币A数量有效 + assert!(a_reserve > 0, E_INSUFFICIENT_LIQUIDITY); + + let b_reserve = balance::value(&pool.coin_b); + let a_out = (b_amount * a_reserve) / (b_reserve + b_amount); + + assert!(a_out > 0 && a_out <= a_reserve, E_INSUFFICIENT_LIQUIDITY); + + // 更新流动性池的余额 + balance::join(&mut pool.coin_b, coin::into_balance(coin_b_in)); + let coin_a_out = coin::take(&mut pool.coin_a, a_out, ctx); + transfer::public_transfer(coin_a_out, tx_context::sender(ctx)); + + event::emit(SwapEvent { + sender: tx_context::sender(ctx), + coin_in_amount: b_amount, + coin_out_amount: a_out, + coin_in_type: string::utf8(b"LEON_DEV_1024_FAUCET_COIN"), + coin_out_type: string::utf8(b"LEON_DEV_1024_COIN"), + timestamp: tx_context::epoch(ctx), + }); + } +} + + + diff --git a/mover/LeonDev1024/code/task5/LeonDev1024/tests/leondev1024_tests.move b/mover/LeonDev1024/code/task5/LeonDev1024/tests/leondev1024_tests.move new file mode 100644 index 000000000..e3195e98c --- /dev/null +++ b/mover/LeonDev1024/code/task5/LeonDev1024/tests/leondev1024_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module leondev1024::leondev1024_tests; +// uncomment this line to import the module +// use leondev1024::leondev1024; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_leondev1024() { + // pass +} + +#[test, expected_failure(abort_code = ::leondev1024::leondev1024_tests::ENotImplemented)] +fun test_leondev1024_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/LeonDev1024/notes/task5/asserts/add_liquidity.png b/mover/LeonDev1024/notes/task5/asserts/add_liquidity.png new file mode 100644 index 000000000..4a62ef74c Binary files /dev/null and b/mover/LeonDev1024/notes/task5/asserts/add_liquidity.png differ diff --git a/mover/LeonDev1024/notes/task5/asserts/balance.png b/mover/LeonDev1024/notes/task5/asserts/balance.png new file mode 100644 index 000000000..5d8c5cdb5 Binary files /dev/null and b/mover/LeonDev1024/notes/task5/asserts/balance.png differ diff --git a/mover/LeonDev1024/notes/task5/asserts/coin_a_object.png b/mover/LeonDev1024/notes/task5/asserts/coin_a_object.png new file mode 100644 index 000000000..12420b514 Binary files /dev/null and b/mover/LeonDev1024/notes/task5/asserts/coin_a_object.png differ diff --git a/mover/LeonDev1024/notes/task5/asserts/coin_b_object.png b/mover/LeonDev1024/notes/task5/asserts/coin_b_object.png new file mode 100644 index 000000000..ac6a3507d Binary files /dev/null and b/mover/LeonDev1024/notes/task5/asserts/coin_b_object.png differ diff --git a/mover/LeonDev1024/notes/task5/asserts/swap_a_to_b.png b/mover/LeonDev1024/notes/task5/asserts/swap_a_to_b.png new file mode 100644 index 000000000..279141709 Binary files /dev/null and b/mover/LeonDev1024/notes/task5/asserts/swap_a_to_b.png differ diff --git a/mover/LeonDev1024/notes/task5/asserts/swap_b_to_a.png b/mover/LeonDev1024/notes/task5/asserts/swap_b_to_a.png new file mode 100644 index 000000000..0679402cb Binary files /dev/null and b/mover/LeonDev1024/notes/task5/asserts/swap_b_to_a.png differ diff --git a/mover/LeonDev1024/notes/task5/readme.md b/mover/LeonDev1024/notes/task5/readme.md new file mode 100644 index 000000000..45ebe01ef --- /dev/null +++ b/mover/LeonDev1024/notes/task5/readme.md @@ -0,0 +1,264 @@ +# 05. move_swap + +# **实现一个最简单的swap** + +- 上链网络: 主网(mainnet) + +## **需求** + +- 完成 Swap相关知识的学习 +- 完成第一个Swap合约的上链部署 +- swap 必须是 swap 自己发行的 task2 两个 Coin的互换,包名必须是自己的`github id` + +## **一、Swap合约基本概念** + +Swap合约通常用于实现两种或多种代币之间的交换。以下是Swap合约的一些基本概念: + +### **1.1. 交易池(Liquidity Pools)** + +- 交易池是 Swap 操作的核心基础设施。它通常包含两种不同类型的资产(比如两种不同的加密货币或数字资产),这些资产由用户提供流动性而汇聚在池中。 +- 例如,一个常见的交易池可能包含资产 A 和资产 B,用户可以将自己持有的一定数量的资产 A 和资产 B 存入池中,增加池的流动性,以便后续其他用户进行交换操作。 + +### **1.2. 流动性提供者(Liquidity Providers)** + +- 流动性提供者是向交易池注入资产的用户或合约。他们通过存入两种相关资产到交易池,使得池中有足够的资产可供其他用户进行交换。 +- 作为回报,流动性提供者通常会获得交易手续费的一部分或者其他形式的激励,具体取决于 Swap 机制的设计。 + +### **1.3. 交换比率(Swap Ratio)** + +- 在 Swap 操作中,交换比率决定了一种资产可以换取另一种资产的数量。它不是固定不变的,而是根据交易池中两种资产的储备量动态变化。 +- 例如,如果交易池中资产 A 的储备量相对较多,资产 B 的储备量相对较少,那么用资产 A 换取资产 B 时,可能需要付出相对较多的资产 A 才能换取到一定量的资产 B,反之亦然。这个比率的计算通常基于数学公式,比如恒定乘积公式(Constant Product Formula)等,以确保交易池的总价值在每次交换后保持相对稳定。 + +## **二、Sui Move 中实现 Swap 的关键要素** + +### **2.1. 资产类型定义** + +在 Sui Move 代码中,首先需要明确定义参与 Swap 的资产类型。这通常涉及到创建自定义的资源类型来代表不同的数字资产。 + +```rust + // 导入自定义的代币模块 + use my_coin::leon_dev_1024_coin::LEON_DEV_1024_COIN; + use faucet_coin::leon_dev_1024_faucet_coin::LEON_DEV_1024_FAUCET_COIN; +``` + +### **2.2. 交易池结构体定义** + +```rust + // 流动性池结构体 + public struct Pool has key { + id: UID, + // 代币A的余额 + coin_a: Balance, + // 代币B的余额 + coin_b: Balance, + } +``` + +### **2.3. 交换函数实现** + +实现 Swap 操作的核心是编写交换函数。以从资产 A 交换到资产 B 为例 + +## **三、Swap 操作的流程** + +### 3.1 **定义模块和导入必要的库** + +```rust +module leondev1024::swap { + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::event; + use std::string::{Self, String}; + + // 导入自定义的代币模块 + use my_coin::leon_dev_1024_coin::LEON_DEV_1024_COIN; + use faucet_coin::leon_dev_1024_faucet_coin::LEON_DEV_1024_FAUCET_COIN; +} +``` + +### 3.1. **定义错误码** + +定义一些常量来表示可能的错误情况,例如流动性不足或金额为零。 + +```rust +const E_INSUFFICIENT_LIQUIDITY: u64 = 0; +const E_ZERO_AMOUNT: u64 = 1; +``` + +### **3.3. 定义结构体** + +定义一个结构体来表示流动性池,并定义事件结构体来记录添加流动性和交换代币的操作。 + +```rust +// 流动性池结构体 +public struct Pool has key { + id: UID, // 流动性池的唯一标识符 + coin_a: Balance, // 代币A的余额 + coin_b: Balance, // 代币B的余额 +} + +// 添加流动性事件结构体 +public struct LiquidityEvent has copy, drop { + provider: address, // 提供流动性的地址 + coin_a_amount: u64, // 代币A的数量 + coin_b_amount: u64, // 代币B的数量 + coin_a_type: String, // 代币A的类型 + coin_b_type: String, // 代币B的类型 + timestamp: u64, // 时间戳 +} + +// 交换事件结构体 +public struct SwapEvent has copy, drop { + sender: address, // 发起交换的地址 + coin_in_amount: u64, // 输入代币的数量 + coin_out_amount: u64, // 输出代币的数量 + coin_in_type: String, // 输入代币的类型 + coin_out_type: String, // 输出代币的类型 + timestamp: u64, // 时间戳 +} +``` + +### 3.4. **初始化函数** + +定义一个初始化函数来创建一个新的流动性池。 + +```rust +// 初始化函数,创建一个新的流动性池 +fun init(ctx: &mut TxContext) { + let pool = Pool { + id: object::new(ctx), // 生成新的唯一标识符 + coin_a: balance::zero(), // 初始代币A的余额为零 + coin_b: balance::zero(), // 初始代币B的余额为零 + }; + transfer::share_object(pool); // 将流动性池共享 +} +``` + +### 3.5  **添加流动性函数** + +定义一个函数来允许用户向流动性池中添加两种代币。 + +```rust +// 添加流动性函数 +public entry fun add_liquidity( + pool: &mut Pool, + coin_a: Coin, + coin_b: Coin, + ctx: &mut TxContext +) { + let a_amount = coin::value(&coin_a); // 获取代币A的数量 + let b_amount = coin::value(&coin_b); // 获取代币B的数量 + + assert!(a_amount > 0 && b_amount > 0, E_ZERO_AMOUNT); // 确保提供的代币数量大于零 + + balance::join(&mut pool.coin_a, coin::into_balance(coin_a)); // 将代币A加入流动性池 + balance::join(&mut pool.coin_b, coin::into_balance(coin_b)); // 将代币B加入流动性池 + + // 记录添加流动性的事件 + event::emit(LiquidityEvent { + provider: tx_context::sender(ctx), // 提供流动性的地址 + coin_a_amount: a_amount, // 代币A的数量 + coin_b_amount: b_amount, // 代币B的数量 + coin_a_type: string::utf8(b"LEON_DEV_1024_COIN"), // 代币A的类型 + coin_b_type: string::utf8(b"LEON_DEV_1024_FAUCET_COIN"), // 代币B的类型 + timestamp: tx_context::epoch(ctx), // 当前时间戳 + }); +} +``` + +### 3.6 **代币交换函数** + +定义两个函数来实现代币A换代币B和代币B换代币A的功能。 + +```rust +// 代币A换代币B的函数 +public entry fun swap_a_to_b( + pool: &mut Pool, + coin_a_in: Coin, + ctx: &mut TxContext +) { + let a_amount = coin::value(&coin_a_in); // 获取输入的代币A的数量 + assert!(a_amount > 0, E_ZERO_AMOUNT); // 确保输入的代币数量大于零 + + let b_reserve = balance::value(&pool.coin_b); // 获取代币B的储备量 + assert!(b_reserve > 0, E_INSUFFICIENT_LIQUIDITY); // 确保代币B的储备量大于零 + + let a_reserve = balance::value(&pool.coin_a); // 获取代币A的储备量 + let b_out = (a_amount * b_reserve) / (a_reserve + a_amount); // 计算可以换取的代币B的数量 + + assert!(b_out > 0 && b_out <= b_reserve, E_INSUFFICIENT_LIQUIDITY); // 确保可以换取的代币B数量有效 + + // 更新流动性池的余额 + balance::join(&mut pool.coin_a, coin::into_balance(coin_a_in)); // 将输入的代币A加入流动性池 + let coin_b_out = coin::take(&mut pool.coin_b, b_out, ctx); // 从流动性池中取出代币B + transfer::public_transfer(coin_b_out, tx_context::sender(ctx)); // 将代币B转给发起者 + + // 记录交换事件 + event::emit(SwapEvent { + sender: tx_context::sender(ctx), // 发起交换的地址 + coin_in_amount: a_amount, // 输入的代币A的数量 + coin_out_amount: b_out, // 输出的代币B的数量 + coin_in_type: string::utf8(b"LEON_DEV_1024_COIN"), // 输入的代币A的类型 + coin_out_type: string::utf8(b"LEON_DEV_1024_FAUCET_COIN"), // 输出的代币B的类型 + timestamp: tx_context::epoch(ctx), // 当前时间戳 + }); +} + +// 代币B换代币A的函数 +public entry fun swap_b_to_a( + pool: &mut Pool, + coin_b_in: Coin, + ctx: &mut TxContext +) { + // 流程同上省略 + …… +} +``` + +## **四、任务指南** + +1. build发布到主网 + +```rust +sui client envs +sui client switch --env mainnet +sui move build --skip-fetch-latest-git-deps +sui client publish --gas-budget 100000000 --skip-fetch-latest-git-deps --skip-dependency-verification +``` + +发布成功后交易摘要 + +Skipping dependency verification +Transaction Digest: 3mKvRG1T5mRyVeEmh7pV12dWnFKfwCvxSjMJimUBkejv + +packageId: 0xea75b8e26aefbace54c8c434070c1c655c0341f5dbb1aed28b229761393bb958 + +pool: 0x95bd6375a79ecc3968af02ce2d9a73a3d852fa29abb3b55b0ce417f761b0725b + +1. 查看余额详细信息 sui client balance --with-coins + + ![image.png](./asserts/balance.png) + +2. 查看coin A 和coin B的详细信息 + + ![image.png](./asserts/coin_b_object.png) + + ![image.png](./asserts/coin_a_object.png) + +3. 加入流通池 + + coin A: 0x63cb0ffd72f6c915f900b3eb65b4fcd01d889187f18a85bec1d9f37078f1b1d1 + + coin B: 0xe312bd896a849be4de39d6ce18dd9d0464b77e7590074b209d24b1edcfd35077 + + ```rust + sui client call --gas-budget 10000000 --package --module swap --function add_liquidity --args + ``` + ![image.png](./asserts/add_liquidity.png) + +4. swap A to B +![image.png](./asserts/swap_a_to_b.png) +5. swap B to A +![image.png](./asserts/swap_b_to_a.png) diff --git a/mover/LeonDev1024/readme.md b/mover/LeonDev1024/readme.md index 8e7285775..560c1b75f 100644 --- a/mover/LeonDev1024/readme.md +++ b/mover/LeonDev1024/readme.md @@ -36,9 +36,9 @@ - [x] play game hash: FD42jvTYqq59CUrMyDC4dLYBc8WvXdC5tjdjQ6XqFryE ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [x] swap package id : 0xea75b8e26aefbace54c8c434070c1c655c0341f5dbb1aed28b229761393bb958 +- [x] call swap CoinA-> CoinB hash : Af8PQqaHyWY2aJBkLoCoXq7cn3JdKm5FssvxVV2fJ2Fj +- [x] call swap CoinB-> CoinA hash : 69hyPuAkgFth66EGZ6AC7agkZEwdcr8XjZTaawo6Mbrm ## 06 Dapp-kit SDK PTB - [] save hash : diff --git a/mover/LiGuoV/code/task2/my_nft/Move.toml b/mover/LiGuoV/code/task2/my_nft/Move.toml new file mode 100644 index 000000000..577f2125b --- /dev/null +++ b/mover/LiGuoV/code/task2/my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/LiGuoV/code/task2/my_nft/sources/my_nft.move b/mover/LiGuoV/code/task2/my_nft/sources/my_nft.move new file mode 100644 index 000000000..41d90f180 --- /dev/null +++ b/mover/LiGuoV/code/task2/my_nft/sources/my_nft.move @@ -0,0 +1,71 @@ +module my_nft::my_nft; +use std::string; +use std::string::String; +use sui::transfer::transfer; +use sui::package; +use sui::display; + +public struct MyNFT has key { + id: UID, + name: String, + image_url: String +} + +public struct MY_NFT has drop {} + +fun init(otw:MY_NFT,ctx: &mut TxContext) { + let img_url = b"https://avatars.githubusercontent.com/u/35767550?v=4".to_string(); + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"img_url".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"A true Hero of the Sui ecosystem!".to_string(), + // Project URL is usually static + b"https://sui-heroes.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `Hero` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + let nft = MyNFT { + id: object::new(ctx), + name: string::utf8(b"LiGuoV NFT"), + image_url: img_url + }; + transfer(nft, ctx.sender()) +} + +entry fun mint(name:String,url:String,addr:address,ctx:&mut TxContext) { + let nft = MyNFT { + id: object::new(ctx), + name: name, + image_url: url + }; + transfer(nft, addr) +} \ No newline at end of file diff --git a/mover/LiGuoV/images/nft.png b/mover/LiGuoV/images/nft.png new file mode 100644 index 000000000..78ff88971 Binary files /dev/null and b/mover/LiGuoV/images/nft.png differ diff --git a/mover/LiGuoV/readme.md b/mover/LiGuoV/readme.md index 9cc6c87e7..7f7f4013e 100644 --- a/mover/LiGuoV/readme.md +++ b/mover/LiGuoV/readme.md @@ -24,10 +24,10 @@ - [] `Faucet Coin` address2 mint hash: ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id : `0xb93943a2d3ae7cf2c92bbe10bb11adc00052190701ef492c0e2c0eeaf70ea52d` +- [x] nft object id : `0xd60bb90c9fd477699ee54f4c9ab8e9c6bdce9a4d745c560e257e85bd921e9a39` +- [x] 转账 nft hash: `HD4PPBxYBXQrz9VFvgeBNoTKEWKJDvSai9URULdu2sFj` +- [x] scan上的NFT截图:![Scan截图](./images/nft.png) ## 04 Move Game - [] game package id : diff --git a/mover/Linyuqiz/notes/ task1-img/image.png b/mover/Linyuqiz/notes/task1-img/image (2).png similarity index 100% rename from mover/Linyuqiz/notes/ task1-img/image.png rename to mover/Linyuqiz/notes/task1-img/image (2).png diff --git a/mover/Linyuqiz/notes/ task1-img/image-1.png b/mover/Linyuqiz/notes/task1-img/image-1 (2).png similarity index 100% rename from mover/Linyuqiz/notes/ task1-img/image-1.png rename to mover/Linyuqiz/notes/task1-img/image-1 (2).png diff --git a/mover/Linyuqiz/notes/ task1-img/image-2.png b/mover/Linyuqiz/notes/task1-img/image-2 (2).png similarity index 100% rename from mover/Linyuqiz/notes/ task1-img/image-2.png rename to mover/Linyuqiz/notes/task1-img/image-2 (2).png diff --git a/mover/Linyuqiz/notes/ task1-img/image-3.png b/mover/Linyuqiz/notes/task1-img/image-3 (2).png similarity index 100% rename from mover/Linyuqiz/notes/ task1-img/image-3.png rename to mover/Linyuqiz/notes/task1-img/image-3 (2).png diff --git a/mover/Linyuqiz/notes/ task1-img/image-4.png b/mover/Linyuqiz/notes/task1-img/image-4 (2).png similarity index 100% rename from mover/Linyuqiz/notes/ task1-img/image-4.png rename to mover/Linyuqiz/notes/task1-img/image-4 (2).png diff --git a/mover/Linyuqiz/notes/ task1-img/image-5.png b/mover/Linyuqiz/notes/task1-img/image-5 (2).png similarity index 100% rename from mover/Linyuqiz/notes/ task1-img/image-5.png rename to mover/Linyuqiz/notes/task1-img/image-5 (2).png diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_coin/Move.lock b/mover/LunacyZeus/code/task2/lunacyzeus_coin/Move.lock new file mode 100644 index 000000000..8f5a3fe6e --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "6B426FB30B241B48D2C508F59FAC27450A38975ABCC3047534FD27D68BA5BCE7" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x0000000000000000000000000000000000000000000000000000000000000000" +latest-published-id = "0xc3131ae0b06a137567ca0a2f09237d96745272c92be965c428bf1dd36d6b8ea6" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x539947c43ccb7c46efd0c7a3af2260878291fc4df602eaebfd6a067563bf388c" +latest-published-id = "0x539947c43ccb7c46efd0c7a3af2260878291fc4df602eaebfd6a067563bf388c" +published-version = "1" diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_coin/Move.toml b/mover/LunacyZeus/code/task2/lunacyzeus_coin/Move.toml new file mode 100644 index 000000000..03288af32 --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "lunacyzeus_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +lunacyzeus_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_coin/sources/lunacyzeus_coin.move b/mover/LunacyZeus/code/task2/lunacyzeus_coin/sources/lunacyzeus_coin.move new file mode 100644 index 000000000..96d9cb802 --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_coin/sources/lunacyzeus_coin.move @@ -0,0 +1,55 @@ +//MODULE: lunacyzeus_coin + +module lunacyzeus_coin::lunacyzeus_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct LUNACYZEUS_COIN has drop {} //定义一个OTW(一次性见证对象) + + fun init( + witness: LUNACYZEUS_COIN, + ctx: &mut TxContext + ) { + //coin::create_currency 创建新的代币 + let (treasury_cap, metadata) = coin::create_currency( + witness,//见证者对象 + 9,//小数位数 + b"LUNACYZEUS",//代币符号 + b"LUNACYZEUS_COIN",//代币名称 + b"This is LunacyZeus Coin in move testnet",//代币描述 + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/20926865" //代币icon + ) + ), + ctx //事务上下文 + ); + transfer::public_freeze_object(metadata);//冻结元数据对象 保持代币数据后续不被更改 + transfer::public_transfer( + treasury_cap, + tx_context::sender(ctx) //管理代币者 + ) + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin);//销毁代币 销毁整个代币 + + } + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx);//铸造代币 需要有treasury_cap权限的用户才能调用 + } + + #[test_only] + /// Wrapper of module initializer for testing + public fun test_init(ctx: &mut TxContext) { + init(LUNACYZEUS_COIN {}, ctx) + } +} \ No newline at end of file diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_coin/tests/lunacyzeus_coin_tests.move b/mover/LunacyZeus/code/task2/lunacyzeus_coin/tests/lunacyzeus_coin_tests.move new file mode 100644 index 000000000..6d4fe477b --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_coin/tests/lunacyzeus_coin_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module lunacyzeus_coin::lunacyzeus_coin_tests { + // uncomment this line to import the module + // use lunacyzeus_coin::lunacyzeus_coin; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_lunacyzeus_coin() { + // pass + } + + #[test, expected_failure(abort_code = ::lunacyzeus_coin::lunacyzeus_coin_tests::ENotImplemented)] + fun test_lunacyzeus_coin_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/Move.lock b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/Move.lock new file mode 100644 index 000000000..4bbd41f1a --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "9CB2A9764C9AB2809173759BD1B9BCC23ADC5896B33F7FAE020C527AE7A23E8D" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xae480532e9cf6e6cf81fca197a2f56fd89942aa1ffa293456bafcf9d47d8052c" +latest-published-id = "0xae480532e9cf6e6cf81fca197a2f56fd89942aa1ffa293456bafcf9d47d8052c" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x1966e4a6c3934b69d96ef037602ffb55c7bc088a376760c9abaee7d482156ec9" +latest-published-id = "0x1966e4a6c3934b69d96ef037602ffb55c7bc088a376760c9abaee7d482156ec9" +published-version = "1" diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/Move.toml b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/Move.toml new file mode 100644 index 000000000..c6316209c --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "lunacyzeus_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +lunacyzeus_coin_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/sources/lunacyzeus_faucet_coin.move b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/sources/lunacyzeus_faucet_coin.move new file mode 100644 index 000000000..91a956c6d --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/sources/lunacyzeus_faucet_coin.move @@ -0,0 +1,52 @@ +// Module: lunacyzeus_coin_faucet_coin + +module 0x0::lunacyzeus_faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct LUNACYZEUS_FAUCET_COIN has drop {} //定义一个OTW(一次性见证对象) + + fun init( + witness: LUNACYZEUS_FAUCET_COIN, + ctx: &mut TxContext + ) { + //coin::create_currency 创建新的代币 + let (treasury_cap, metadata) = coin::create_currency( + witness,//见证者对象 + 9,//小数位数 + b"LUNA",//代币符号 + b"LUNACYZEUS_FAUCET_COIN",//代币名称 + b"LunacyZeus Faucet Coin",//代币描述 + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/20926865" //代币icon + ) + ), + ctx + ); + transfer::public_freeze_object(metadata);//冻结元数据对象 保持代币数据后续不被更改 + // 设置铸币权为公共对象 + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + + + diff --git a/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/tests/lunacyzeus_coin_faucet_coin_tests.move b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/tests/lunacyzeus_coin_faucet_coin_tests.move new file mode 100644 index 000000000..549f9f8ef --- /dev/null +++ b/mover/LunacyZeus/code/task2/lunacyzeus_faucet_coin/tests/lunacyzeus_coin_faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module lunacyzeus_coin_faucet_coin::lunacyzeus_coin_faucet_coin_tests; +// uncomment this line to import the module +// use lunacyzeus_coin_faucet_coin::lunacyzeus_coin_faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_lunacyzeus_coin_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::lunacyzeus_coin_faucet_coin::lunacyzeus_coin_faucet_coin_tests::ENotImplemented)] +fun test_lunacyzeus_coin_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git "a/mover/LunacyZeus/img/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" "b/mover/LunacyZeus/img/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" new file mode 100644 index 000000000..6fdd390d8 Binary files /dev/null and "b/mover/LunacyZeus/img/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" differ diff --git a/mover/LunacyZeus/img/git.keep b/mover/LunacyZeus/img/git.keep new file mode 100644 index 000000000..e69de29bb diff --git "a/mover/LunacyZeus/notes/task2\347\224\250\345\210\260\347\232\204\345\221\275\344\273\244" "b/mover/LunacyZeus/notes/task2\347\224\250\345\210\260\347\232\204\345\221\275\344\273\244" new file mode 100644 index 000000000..59e3f6da8 --- /dev/null +++ "b/mover/LunacyZeus/notes/task2\347\224\250\345\210\260\347\232\204\345\221\275\344\273\244" @@ -0,0 +1,14 @@ +添加主网 +sui client new-env --alias mainnet --rpc https://fullnode.mainnet.sui.io:443 +查看环境 +sui client envs +切换到主网 +sui client switch --env mainnet +查看当前激活地址 +sui client active-address +查看gas余额 +sui client gas +部署模块 +sui client publish +更新sui客户端 +cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui \ No newline at end of file diff --git a/mover/LunacyZeus/readme.md b/mover/LunacyZeus/readme.md index e12707729..ff635405d 100644 --- a/mover/LunacyZeus/readme.md +++ b/mover/LunacyZeus/readme.md @@ -12,25 +12,36 @@ ## 任务 ## 01 hello move -- [] package id: 0xbe840ecd105577a6dd906180b3ba310f2c16991a3974fa13c9cbf387e58d7c37 +- [x] package id: 0xbe840ecd105577a6dd906180b3ba310f2c16991a3974fa13c9cbf387e58d7c37 ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: +- [x] My Coin package id : 0x539947c43ccb7c46efd0c7a3af2260878291fc4df602eaebfd6a067563bf388c +- [x] Faucet package id : 0x1966e4a6c3934b69d96ef037602ffb55c7bc088a376760c9abaee7d482156ec9 +- [x] 转账 `My Coin` hash: EhxvBVcPr9wCTAPxHK5ABVwRBcPxBspkxEG2R2Lz4XU3 +- [x] `Faucet Coin` address1 mint hash: GzVdJcECH9araJJJYewssWd1YfZC1ySJNJJYCtp8bGBQ +- [x] `Faucet Coin` address2 mint hash: Bsht9PzaBhyAQ8ooQ8yNb3HaGdMaGyQD74bUs1Q1gNg6 ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图: ## 04 Move Game - [] game package id : -- [] call game hash: +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: ## 05 Move Swap - [] swap package id : -- [] call swap hash: +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : -## 06 SDK PTB +## 06 Dapp-kit SDK PTB - [] save hash : + +## 07 Move CTF Check In + +- [] CLI call 截图 : +- [] flag hash : diff --git a/mover/MartinYeung5/code/task6/package-lock.json b/mover/MartinYeung5/code/task6/package-lock.json new file mode 100644 index 000000000..51eee4426 --- /dev/null +++ b/mover/MartinYeung5/code/task6/package-lock.json @@ -0,0 +1,4415 @@ +{ + "name": "task6", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "task6", + "version": "0.1.0", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "axios": "^1.6.7", + "dotenv": "^16.4.5", + "esrun": "^3.2.26", + "navi-sdk": "^1.1.21", + "next": "14.2.3", + "react": "^18", + "react-dom": "^18", + "task6": "file:", + "tsconfig-paths": "^4.2.0", + "vitest": "^1.3.1" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "tslint": "^6.1.3", + "typescript": "^5" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.8.tgz", + "integrity": "sha512-8BG6woLtDMvXB9Ajb/uE+Zr/U7y4qJ3upXi0JQHZmsKUJa7HjF/gFvmL2f3/mSmfZoQGRr9VoY97LCX2uaFMzA==", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.14.tgz", + "integrity": "sha512-0FoG2EkXxTY+++dKggmBkwY/skAE5dW2yqt4abHF0zrbCId4WreoFfhoTQT82FeD6gbkYe5FGrcn1x9SjnO77g==", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@digitak/grubber": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", + "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.6.2.tgz", + "integrity": "sha512-P4bOOayf6zR/uRWHmVyRz8auiuOzNmq8C0YFQbhj5TGGgHr5kkVI2ZIrplWsJqCBTYzpZEYzaxa9iGP6vuKA9Q==", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@mysten/sui": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@mysten/sui/-/sui-1.9.0.tgz", + "integrity": "sha512-AcnwVK7ro8+GWAp/vz0V35naS1/PD1FkYlH6rglupKWvVIpnmEBgjr+XE7U4LvtAyoXPiE4uj/MhXLIx5rZuzw==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "1.0.4", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@scure/bip32": "^1.4.0", + "@scure/bip39": "^1.3.0", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.8.2", + "graphql": "^16.9.0", + "tweetnacl": "^1.0.3", + "valibot": "^0.36.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@mysten/sui/node_modules/@mysten/bcs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-1.0.4.tgz", + "integrity": "sha512-6JoQi59GN/dVEBCNq8Rj4uOR0niDrJqDx/2gNQWXANwJakHIGH0AMniHrXP41B2dF+mZ3HVmh9Hi3otiEVQTrQ==", + "dependencies": { + "bs58": "^6.0.0" + } + }, + "node_modules/@mysten/sui/node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==" + }, + "node_modules/@mysten/sui/node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/@next/env": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", + "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", + "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", + "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", + "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", + "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", + "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", + "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", + "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", + "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", + "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pythnetwork/price-service-client": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz", + "integrity": "sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==", + "deprecated": "This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead.", + "dependencies": { + "@pythnetwork/price-service-sdk": "*", + "@types/ws": "^8.5.3", + "axios": "^1.5.1", + "axios-retry": "^3.8.0", + "isomorphic-ws": "^4.0.1", + "ts-log": "^2.2.4", + "ws": "^8.6.0" + } + }, + "node_modules/@pythnetwork/price-service-sdk": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz", + "integrity": "sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==", + "dependencies": { + "bn.js": "^5.2.1" + } + }, + "node_modules/@pythnetwork/pyth-sui-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/pyth-sui-js/-/pyth-sui-js-2.1.0.tgz", + "integrity": "sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==", + "dependencies": { + "@mysten/sui": "^1.3.0", + "@pythnetwork/price-service-client": "1.9.0", + "buffer": "^6.0.3" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", + "integrity": "sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/node": { + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", + "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "dependencies": { + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dependencies": { + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-retry": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.9.1.tgz", + "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrun": { + "version": "3.2.26", + "resolved": "https://registry.npmjs.org/esrun/-/esrun-3.2.26.tgz", + "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "dependencies": { + "@digitak/grubber": "^3.1.4", + "chokidar": "^3.5.1", + "esbuild": "^0.17.4" + }, + "bin": { + "esrun": "bin.js" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gql.tada": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.7.tgz", + "integrity": "sha512-ixqMvH5jRs5wxe5liNoaG1TA9NfA+kAz8QzfT0xrzcKARJOVC7MednVhxyhY1RDgZH8mNfChK3ti8cIcd9cuuw==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.2", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/navi-sdk": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/navi-sdk/-/navi-sdk-1.3.2.tgz", + "integrity": "sha512-ODsJS6BOcgVT3vjDAnbMLPorcG4mljFRVOGB30ZjRPow/3shLpmiQ+jGfaEKu7b6xd4ojYRyykYLpAF7/QLzUg==", + "dependencies": { + "@mysten/sui": "^1.8.0", + "@mysten/sui.js": "^0.54.1", + "@pythnetwork/pyth-sui-js": "^2.1.0", + "axios": "^1.7.7", + "esrun": "^3.2.26", + "tsconfig-paths": "^4.2.0", + "vitest": "^1.6.0" + } + }, + "node_modules/navi-sdk/node_modules/@mysten/sui.js": { + "version": "0.54.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.54.1.tgz", + "integrity": "sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.7.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/next": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", + "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", + "dependencies": { + "@next/env": "14.2.3", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.3", + "@next/swc-darwin-x64": "14.2.3", + "@next/swc-linux-arm64-gnu": "14.2.3", + "@next/swc-linux-arm64-musl": "14.2.3", + "@next/swc-linux-x64-gnu": "14.2.3", + "@next/swc-linux-x64-musl": "14.2.3", + "@next/swc-win32-arm64-msvc": "14.2.3", + "@next/swc-win32-ia32-msvc": "14.2.3", + "@next/swc-win32-x64-msvc": "14.2.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dependencies": { + "js-tokens": "^9.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.11.tgz", + "integrity": "sha512-qhEuBcLemjSJk5ajccN9xJFtM/h0AVCPaA6C92jNP+M2J8kX+eMJHI7R2HFKUvvAsMpcfLILMCFYSeDwpMmlUg==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/task6": { + "resolved": "", + "link": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==" + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/tslint/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/tslint/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/valibot": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==" + }, + "node_modules/vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitest": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "dependencies": { + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/mover/MartinYeung5/code/task6/package.json b/mover/MartinYeung5/code/task6/package.json index c1b533894..0857c0886 100644 --- a/mover/MartinYeung5/code/task6/package.json +++ b/mover/MartinYeung5/code/task6/package.json @@ -17,6 +17,7 @@ "next": "14.2.3", "react": "^18", "react-dom": "^18", + "task6": "file:", "tsconfig-paths": "^4.2.0", "vitest": "^1.3.1" }, diff --git "a/mover/MartinYeung5/notes/20241111_\346\216\250\347\211\271\345\205\263\346\263\250.png" "b/mover/MartinYeung5/notes/20241111_\346\216\250\347\211\271\345\205\263\346\263\250.png" new file mode 100644 index 000000000..a89379c55 Binary files /dev/null and "b/mover/MartinYeung5/notes/20241111_\346\216\250\347\211\271\345\205\263\346\263\250.png" differ diff --git "a/mover/MartinYeung5/notes/20241118_\345\217\202\345\212\240\347\233\264\346\222\255\347\255\224\347\226\221.png" "b/mover/MartinYeung5/notes/20241118_\345\217\202\345\212\240\347\233\264\346\222\255\347\255\224\347\226\221.png" new file mode 100644 index 000000000..58b773dd0 Binary files /dev/null and "b/mover/MartinYeung5/notes/20241118_\345\217\202\345\212\240\347\233\264\346\222\255\347\255\224\347\226\221.png" differ diff --git a/mover/MartinYeung5/readme.md b/mover/MartinYeung5/readme.md index 8e12b6dca..0f6f1765c 100644 --- a/mover/MartinYeung5/readme.md +++ b/mover/MartinYeung5/readme.md @@ -34,3 +34,13 @@ ## 06 SDK PTB - [] save hash : 28EQHUfuwHdnyoxKwzSg7VYzdCyjjTGs8oWLahZveNoK + +## 07 Move CTF Check In +- [] CLI call 截图 : +sui client call --package 0x60695ee31f93add1f79909c884a55dff7e5f140bbd2e495819966bd2f7971d42 --module check_in --function get_flag --args "LetsMoveCT" "MartinYeung5" 0x011f9404e6f167e549b617a53eea058029167a2beac26c624cbc3550e04b5ad2 0x8 --gas-budget 100000000 +sui client call --package 0x60695ee31f93add1f79909c884a55dff7e5f140bbd2e495819966bd2f7971d42 --module check_in --function get_flag --args "LetsMoveCTF" "yjshi2015" 0x011f9404e6f167e549b617a53eea058029167a2beac26c624cbc3550e04b5ad2 0x8 --gas-budget 100000000 + + +sui client call --package 0x60695ee31f93add1f79909c884a55dff7e5f140bbd2e495819966bd2f7971d42 --module check_in --function get_flag --args "HappyMoving" "MartinYeung5" 0x011f9404e6f167e549b617a53eea058029167a2beac26c624cbc3550e04b5ad2 0x8 --gas-budget 100000000 + +- [] flag hash : \ No newline at end of file diff --git a/mover/Ming-XX/images/nft.jpg b/mover/Ming-XX/images/nft.jpg new file mode 100644 index 000000000..3faa7ea8c Binary files /dev/null and b/mover/Ming-XX/images/nft.jpg differ diff --git a/mover/Ming-XX/readme.md b/mover/Ming-XX/readme.md index 2276ff34c..55741a2c3 100644 --- a/mover/Ming-XX/readme.md +++ b/mover/Ming-XX/readme.md @@ -1,54 +1,55 @@ -## 基本信息 -- Sui钱包地址: `0x711104a1a3183f0f1a35d548ce26a363c2f8dbb7a80543cc823e08807b831a1c` -> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 -- github: `Ming-XX` - -## 个人简介 -- 工作经验: 3年 -- 技术栈: `C` `Rust` -> 重要提示 请认真写自己的简介 -- STM32嵌入式开发,自学了Rust,想要了解Move与Rust的区别,并通过Move入门区块链 -- 联系方式: tg: `https://t.me/Mina_xx` - -## 任务 - -## 01 hello move -- [✓] Sui cli version: sui 1.37.1-7839b9501066 -- [✓] Sui钱包截图: ![Sui钱包截图](./images/qb.png) -- [✓] package id: 0x59f7b41923269e125530d33beb7da7329049f1434c4cdf478a5fd1c691f565ee -- [✓] package id 在 scan上的查看截图:![Scan截图](./images/l.png) - -## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: - -## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) - -## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: - -## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : - -## 06 Dapp-kit SDK PTB -- [] save hash : - -## 07 Move CTF Check In -- [] CLI call 截图 : ![截图](./images/你的图片地址) -- [] flag hash : - -## 08 Move CTF Lets Move -- [] proof : -- [] flag hash : +## 基本信息 +- Sui钱包地址: `0x711104a1a3183f0f1a35d548ce26a363c2f8dbb7a80543cc823e08807b831a1c` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `Ming-XX` + +## 个人简介 +- 工作经验: 3年 +- 技术栈: `C` `Rust` +> 重要提示 请认真写自己的简介 +- STM32嵌入式开发,自学了Rust,想要了解Move与Rust的区别,并通过Move入门区块链 +- 联系方式: tg: `https://t.me/Mina_xx` + +## 任务 + +## 01 hello move +- [✓] Sui cli version: sui 1.37.1-7839b9501066 +- [✓] Sui钱包截图: ![Sui钱包截图](./images/qb.png) +- [✓] package id: 0x59f7b41923269e125530d33beb7da7329049f1434c4cdf478a5fd1c691f565ee +- [✓] package id 在 scan上的查看截图:![Scan截图](./images/l.png) + +## 02 move coin +- [✓] My Coin package id :0xfd1150b4d050beba03dcac1ac986189fc89e84f961a1b8ec2233e8d06423dca2 +- [✓] Faucet package id : 0xdb8e8fc891265b2274b4895f5242af9e94208857756de64150efc46603b2a135 +- [✓] 转账 `My Coin` hash:CwM8dfPT63SbDARuWsswUAgnrhTpbmr68Mbp79Pt5vTj +- [✓] `Faucet Coin` address1 mint hash:9VrgruonWKkmzY9ESDRFy93WVKoKPNPsmTeG7Yn8y1e4 +- [✓] `Faucet Coin` address2 mint hash:EHHLSJVVoLWjYiW8Vc99ebMNwYduzh8UnR5SizAsotCJ + + +## 03 move NFT +- [✓] nft package id :0xc37c8817793bafd05ef493491d315625375ef59a031dcfa9ee5eee0553c4b540 +- [✓] nft object id : 0xc3fe2601c815f6737226b240bf9e452679c13f28d34dcbed0d7ccc73a7a90072 +- [✓] 转账 nft hash:37YJXK6iSKTZSiaw1hw6mbWmfBSVjVZiDYrUJG24CCiY +- [✓] scan上的NFT截图:![Scan截图](./images/nft.jpg) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/Ming-XX/code/task1/hello_move/sources/hello_move.move b/mover/Ming-XX/task1/hello_move.move similarity index 95% rename from mover/Ming-XX/code/task1/hello_move/sources/hello_move.move rename to mover/Ming-XX/task1/hello_move.move index 25839d3f0..4e49fb964 100644 --- a/mover/Ming-XX/code/task1/hello_move/sources/hello_move.move +++ b/mover/Ming-XX/task1/hello_move.move @@ -1,19 +1,19 @@ -module hello_move::hello ; - -use std::ascii::{String, string}; -use sui::object::{Self, UID}; -use sui::transfer::transfer; -use sui::tx_context::{TxContext, sender}; - -public struct Hello has key { - id: UID, - say: String -} - -fun init(ctx: &mut TxContext) { - let hello_move = Hello { - id: object::new(ctx), - say: string(b"Ming-XX"), - }; - transfer(hello_move, sender(ctx)); +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext, sender}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"Ming-XX"), + }; + transfer(hello_move, sender(ctx)); } \ No newline at end of file diff --git a/mover/Ming-XX/task2/ming_xx_coin.move b/mover/Ming-XX/task2/ming_xx_coin.move new file mode 100644 index 000000000..efb84cf9b --- /dev/null +++ b/mover/Ming-XX/task2/ming_xx_coin.move @@ -0,0 +1,29 @@ +module my_coin::ming_xx_coin; +use sui::coin::{create_currency, TreasuryCap}; +use std::option::some; +use sui::coin; +use sui::transfer::{public_freeze_object, public_transfer}; +use sui::url::Url; +use sui::url; + +public struct MING_XX_COIN has drop{} + +fun init(my_coin:MING_XX_COIN,ctx:&mut TxContext){ + + let (treasury, coin_metadata)=create_currency( + my_coin, + 8, + b"MY_COIN", + b"MING_XX", + b"this is MYCOIN", + some(url::new_unsafe_from_bytes(b"https://img1.baidu.com/it/u=22878553,612949489&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=1067")), + ctx, + ); + + public_freeze_object(coin_metadata); + public_transfer(treasury,ctx.sender()); +} + +public entry fun mint(treasury:&mut TreasuryCap,amout:u64,recipient:address,ctx:&mut TxContext){ + coin::mint_and_transfer(treasury,amout,recipient,ctx); +} \ No newline at end of file diff --git a/mover/Ming-XX/task2/ming_xx_faucet_coin.move b/mover/Ming-XX/task2/ming_xx_faucet_coin.move new file mode 100644 index 000000000..cee884367 --- /dev/null +++ b/mover/Ming-XX/task2/ming_xx_faucet_coin.move @@ -0,0 +1,30 @@ +module my_coin::ming_xx_faucet_coin; +use sui::coin::{create_currency, TreasuryCap}; +use sui::coin; +use std::option::some; +use sui::transfer::{public_freeze_object, public_share_object}; +use sui::url::Url; +use sui::url; + +public struct MING_XX_FAUCET_COIN has drop{} + +fun init(my_faucet_coin:MING_XX_FAUCET_COIN,ctx:&mut TxContext){ + + let (treasury, coin_metadata)=create_currency( + my_faucet_coin, + 8, + b"MY_FAUCET_COIN", + b"MING_XX_FAUCET", + b"this is FAUCETCOIN", + some(url::new_unsafe_from_bytes(b"https://img2.baidu.com/it/u=3094430203,904462832&fm=253&fmt=auto&app=120&f=JPEG?w=600&h=556")), + ctx, + ); + + public_freeze_object(coin_metadata); + + public_share_object(treasury); +} + +public entry fun mint(treasury:&mut TreasuryCap,amout:u64,recipient:address,ctx:&mut TxContext){ + coin::mint_and_transfer(treasury,amout,recipient,ctx); +} \ No newline at end of file diff --git a/mover/Ming-XX/task3/MY_NFT.move b/mover/Ming-XX/task3/MY_NFT.move new file mode 100644 index 000000000..b88c46292 --- /dev/null +++ b/mover/Ming-XX/task3/MY_NFT.move @@ -0,0 +1,56 @@ +module my_nft::MY_NFT; +use std::string; +use std::string::{String, utf8}; +use sui::transfer::transfer; +use sui::package; +use sui::display; + + +public struct MyNFT has key{ + id:UID, + name:String, + image_url:String, +} + +public struct MY_NFT has drop{} + +fun init(otw:MY_NFT,ctx:&mut TxContext){ + let keys=vector[ + utf8(b"name"), + utf8(b"image_url"), + ]; + + let values=vector[ + utf8(b"{name}"), + utf8(b"{image_url}"), + ]; + + let publisher = package::claim(otw, ctx); + + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + display::update_version(&mut display); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); +} + +public entry fun mint(url:String, recipient:address, ctx:&mut TxContext){ + let my_nft=MyNFT{ + id:object::new(ctx), + name:string::utf8(b"Ming-XX NFT"), + image_url:url, + }; + + let send_nft=MyNFT{ + id:object::new(ctx), + name:string::utf8(b"send_nft"), + image_url:string::utf8(b"https://img1.baidu.com/it/u=2774048779,1307844049&fm=253&fmt=auto&app=138&f=JPEG?w=609&h=609"), + }; + + transfer(my_nft,ctx.sender()); + + transfer(send_nft,recipient); +} \ No newline at end of file diff --git a/mover/PebblerWon/code/task2/note.md b/mover/PebblerWon/code/task2/note.md new file mode 100644 index 000000000..4e9ed9e04 --- /dev/null +++ b/mover/PebblerWon/code/task2/note.md @@ -0,0 +1,2 @@ +## 脚手架 +npm create @mysten/dapp \ No newline at end of file diff --git a/mover/PebblerWon/code/task2/whn_coin/Move.lock b/mover/PebblerWon/code/task2/whn_coin/Move.lock new file mode 100644 index 000000000..bb608b43b --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "20BD6988FBF41DD6F8DF846300EE6D3580909E5583A0E9D7D8A6A63438ADF646" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x5bedaf1084a9f6a7c98a205ca56550c75bb13376cc34c07fc3c5bddc6b17d813" +latest-published-id = "0x5bedaf1084a9f6a7c98a205ca56550c75bb13376cc34c07fc3c5bddc6b17d813" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xd12d0dbe5c01f8ec8aff8b62d440b3b5c7ef9330e55878c3ee30381694ba57ef" +latest-published-id = "0xd12d0dbe5c01f8ec8aff8b62d440b3b5c7ef9330e55878c3ee30381694ba57ef" +published-version = "1" diff --git a/mover/PebblerWon/code/task2/whn_coin/Move.toml b/mover/PebblerWon/code/task2/whn_coin/Move.toml new file mode 100644 index 000000000..b0100b0ce --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "whn_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +whn_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/PebblerWon/code/task2/whn_coin/call.sh b/mover/PebblerWon/code/task2/whn_coin/call.sh new file mode 100644 index 000000000..ce1da15c6 --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin/call.sh @@ -0,0 +1,20 @@ +# 0x2 是coinpackage的地址 +# --type-args 是我们自己合约的package id +# --args 第一个参数是treasurycpa的object id + +## testnet + sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args '0x4c5e927d8dd0fe7bc37cfbca401376d6ccc300f6b79cf40f19a1cf329c521dd2::whn_coin::WHN_COIN' \ + --args 0x19e69a05953b0e065ebcd6a9705db902c21ac97f2bc14eb364ea79a889978d0c 10000 0x60364db3c6fa7128433ad62ce4e32649443a999ab6b54bdcbaf14194ec1a6203 + + +## mainnet +sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args '0xd12d0dbe5c01f8ec8aff8b62d440b3b5c7ef9330e55878c3ee30381694ba57ef::whn_coin::WHN_COIN' \ + --args 0x402453b966e86168290e1f01b8c0fdaa92f6ea009258282ccbc33e873ddaba0c 10000 0x60364db3c6fa7128433ad62ce4e32649443a999ab6b54bdcbaf14194ec1a6203 diff --git a/mover/PebblerWon/code/task2/whn_coin/sources/whn_coin.move b/mover/PebblerWon/code/task2/whn_coin/sources/whn_coin.move new file mode 100644 index 000000000..45a1c2e18 --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin/sources/whn_coin.move @@ -0,0 +1,24 @@ +module whn_coin::whn_coin{ + use sui::coin::create_currency; + use sui::tx_context::{ sender}; + + public struct WHN_COIN has drop {} + + fun init(whn_coin:WHN_COIN,ctx: &mut TxContext) { + + let (treasury_cap,coin_metadata ) = create_currency( + whn_coin, + 3, + b"WHN", + b"WHN", + b"just for whn", + option::none(), + ctx, + ); + transfer::public_freeze_object(coin_metadata); + + let my_address = sender(ctx); + transfer::public_transfer(treasury_cap, my_address); + } + +} diff --git a/mover/PebblerWon/code/task2/whn_coin/tests/whn_coin_tests.move b/mover/PebblerWon/code/task2/whn_coin/tests/whn_coin_tests.move new file mode 100644 index 000000000..f18427b30 --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin/tests/whn_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module whn_coin::whn_coin_tests; +// uncomment this line to import the module +// use whn_coin::whn_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_whn_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::whn_coin::whn_coin_tests::ENotImplemented)] +fun test_whn_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/PebblerWon/code/task2/whn_coin_facuet/Move.lock b/mover/PebblerWon/code/task2/whn_coin_facuet/Move.lock new file mode 100644 index 000000000..ac1d62632 --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin_facuet/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "9846B7D90990A53D9A504A9C2BF6D0A8794E5B6EF265170001AD51EF2C242C84" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x4c5e927d8dd0fe7bc37cfbca401376d6ccc300f6b79cf40f19a1cf329c521dd2" +latest-published-id = "0x4c5e927d8dd0fe7bc37cfbca401376d6ccc300f6b79cf40f19a1cf329c521dd2" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x498edfc9e864d78d244315e514569ae842cb26c14cea75acb55224f74e933bbd" +latest-published-id = "0x498edfc9e864d78d244315e514569ae842cb26c14cea75acb55224f74e933bbd" +published-version = "1" diff --git a/mover/PebblerWon/code/task2/whn_coin_facuet/Move.toml b/mover/PebblerWon/code/task2/whn_coin_facuet/Move.toml new file mode 100644 index 000000000..abe119064 --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin_facuet/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "whn_coin_facuet" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +whn_coin_facuet = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/PebblerWon/code/task2/whn_coin_facuet/call.sh b/mover/PebblerWon/code/task2/whn_coin_facuet/call.sh new file mode 100644 index 000000000..02600fb6d --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin_facuet/call.sh @@ -0,0 +1,20 @@ +# 0x2 是coinpackage的地址 +# --type-args 是我们自己合约的package id +# --args 第一个参数是treasurycpa的object id + +## mainnet facuet address 1 +sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args '0x498edfc9e864d78d244315e514569ae842cb26c14cea75acb55224f74e933bbd::whn_coin::WHN_COIN' \ + --args 0xcbd304d44a70d5a080b02b514122f9ca58d7e1481450377ac448d672dad0bbd9 10000 0x60364db3c6fa7128433ad62ce4e32649443a999ab6b54bdcbaf14194ec1a6203 + +## mainnet facuet address 2 + +sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args '0x498edfc9e864d78d244315e514569ae842cb26c14cea75acb55224f74e933bbd::whn_coin::WHN_COIN' \ + --args 0xcbd304d44a70d5a080b02b514122f9ca58d7e1481450377ac448d672dad0bbd9 10000 0x09be6b8995b7f56d8491a67f54519c56059d3fc24124470366b7ee5b51c27a91 diff --git a/mover/PebblerWon/code/task2/whn_coin_facuet/sources/whn_coin_facuet.move b/mover/PebblerWon/code/task2/whn_coin_facuet/sources/whn_coin_facuet.move new file mode 100644 index 000000000..f510ffa46 --- /dev/null +++ b/mover/PebblerWon/code/task2/whn_coin_facuet/sources/whn_coin_facuet.move @@ -0,0 +1,22 @@ +module whn_coin_facuet::whn_coin{ + use sui::coin::create_currency; + + public struct WHN_COIN has drop {} + + fun init(whn_coin:WHN_COIN,ctx: &mut TxContext) { + + let (treasury_cap,coin_metadata ) = create_currency( + whn_coin, + 3, + b"WHN_FACUET", + b"WHN", + b"whn facuet", + option::none(), + ctx, + ); + transfer::public_freeze_object(coin_metadata); + + transfer::public_share_object(treasury_cap); + } + +} diff --git a/mover/PebblerWon/readme.md b/mover/PebblerWon/readme.md index df355f956..41be78d9e 100644 --- a/mover/PebblerWon/readme.md +++ b/mover/PebblerWon/readme.md @@ -19,11 +19,11 @@ - [✓] package id 在 scan上的查看截图:![Scan截图](./images/a.jpg) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [✓] My Coin package id : 0xd12d0dbe5c01f8ec8aff8b62d440b3b5c7ef9330e55878c3ee30381694ba57ef +- [✓] Faucet package id : 0x498edfc9e864d78d244315e514569ae842cb26c14cea75acb55224f74e933bbd +- [✓] 转账 `My Coin` hash: FoEoSt4dtCYFYVfHR9ZSj8UFmEs4UTBceG18f7nLbbTt +- [✓] `Faucet Coin` address1 mint hash: CiXfwEXo7crRb8hAuww6TRuYEA2gLJA4GR3iiEuYSwMV +- [✓] `Faucet Coin` address2 mint hash: HmWYnxuuKozdtWgtdBDiSSLMCSxQo5yVvG1jfMFmcaUs ## 03 move NFT - [] nft package id : diff --git a/mover/Quantunmae/code/task2/quantumae_coin/Move.lock b/mover/Quantunmae/code/task2/quantumae_coin/Move.lock new file mode 100644 index 000000000..8d7fd82e5 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "8AD4892C786E53B19260F956F97A92362811E9F66B9E813235DECCA8EEE3E552" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xac1b53b51d6f9e6e16e93cce62a42b26894ab0a09fce69410ac5bea69c7b1d11" +latest-published-id = "0xac1b53b51d6f9e6e16e93cce62a42b26894ab0a09fce69410ac5bea69c7b1d11" +published-version = "1" diff --git a/mover/Quantunmae/code/task2/quantumae_coin/Move.toml b/mover/Quantunmae/code/task2/quantumae_coin/Move.toml new file mode 100644 index 000000000..bf7e8a4f3 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "quantumae_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +quantumae_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/Quantunmae/code/task2/quantumae_coin/sources/quantumae_coin.move b/mover/Quantunmae/code/task2/quantumae_coin/sources/quantumae_coin.move new file mode 100644 index 000000000..2e29005c3 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_coin/sources/quantumae_coin.move @@ -0,0 +1,51 @@ +/* +/// Module: quantumae_coin +module quantumae_coin::quantumae_coin; +*/ +module quantumae_coin::quantumae_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct QUANTUMAE_COIN has drop {} + + fun init( + witness: QUANTUMAE_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"QUANTUMAE", + b"QUANTUMAE_COIN", + b"Quantumae Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://github.com/Quantumae/all/blob/main/my_coin.png" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer( + treasury_cap, + tx_context::sender(ctx) + ) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} diff --git a/mover/Quantunmae/code/task2/quantumae_coin/tests/quantumae_coin_tests.move b/mover/Quantunmae/code/task2/quantumae_coin/tests/quantumae_coin_tests.move new file mode 100644 index 000000000..45bd95d69 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_coin/tests/quantumae_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module quantumae_coin::quantumae_coin_tests; +// uncomment this line to import the module +// use quantumae_coin::quantumae_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_quantumae_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::quantumae_coin::quantumae_coin_tests::ENotImplemented)] +fun test_quantumae_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/Quantunmae/code/task2/quantumae_faucet_coin/Move.lock b/mover/Quantunmae/code/task2/quantumae_faucet_coin/Move.lock new file mode 100644 index 000000000..df53a158f --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1511730B4A0A0BE0DAED3CCCC085B5D4383357603D3394DF12664DE4B4C7840E" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x4a6e9a687c87fb1ba707779471f166bfb8e00a5afacab80630ae78d0a8673b34" +latest-published-id = "0x4a6e9a687c87fb1ba707779471f166bfb8e00a5afacab80630ae78d0a8673b34" +published-version = "1" diff --git a/mover/Quantunmae/code/task2/quantumae_faucet_coin/Move.toml b/mover/Quantunmae/code/task2/quantumae_faucet_coin/Move.toml new file mode 100644 index 000000000..3bfd08d40 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "quantumae_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +quantumae_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/Quantunmae/code/task2/quantumae_faucet_coin/sources/quantumae_faucet_coin.move b/mover/Quantunmae/code/task2/quantumae_faucet_coin/sources/quantumae_faucet_coin.move new file mode 100644 index 000000000..11fdf6819 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_faucet_coin/sources/quantumae_faucet_coin.move @@ -0,0 +1,50 @@ +/* +/// Module: quantumae_faucet_coin +module quantumae_faucet_coin::quantumae_faucet_coin; +*/ +module quantumae_faucet_coin::quantumae_faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct QUANTUMAE_FAUCET_COIN has drop {} + + fun init( + witness: QUANTUMAE_FAUCET_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"CRF", + b"QUANTUMAE_FAUCET_COIN", + b"Quantumae Faucet Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://github.com/Quantumae/all/blob/main/my_coin.png" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + diff --git a/mover/Quantunmae/code/task2/quantumae_faucet_coin/tests/quantumae_faucet_coin_tests.move b/mover/Quantunmae/code/task2/quantumae_faucet_coin/tests/quantumae_faucet_coin_tests.move new file mode 100644 index 000000000..b860b8084 --- /dev/null +++ b/mover/Quantunmae/code/task2/quantumae_faucet_coin/tests/quantumae_faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module quantumae_faucet_coin::quantumae_faucet_coin_tests; +// uncomment this line to import the module +// use quantumae_faucet_coin::quantumae_faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_quantumae_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::quantumae_faucet_coin::quantumae_faucet_coin_tests::ENotImplemented)] +fun test_quantumae_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/Quantunmae/readme.md b/mover/Quantunmae/readme.md index 55d63efc9..fc7fbf4a3 100644 --- a/mover/Quantunmae/readme.md +++ b/mover/Quantunmae/readme.md @@ -19,11 +19,11 @@ - [✓] package id 在 scan上的查看截图:![Scan截图](./images/l.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [✓] My Coin package id : 0x2453f3aa1cd138f5a4d2fa3d8cb5ddc9ddf6a6355443e00de8ea4d6ebce518bb +- [✓] Faucet package id : 0xb45a1ed73ccd5813dc696b0ec555909f91f17058132b85b927bcc831887a1e27 +- [✓] 转账 `My Coin` hash:x8k79UFr1AC3QwLJ8eK5z3iXhCBtJi1YGHSEgYv2i2n +- [✓] `Faucet Coin` address1 mint hash:AnRdgcA7xGdX3Va5S4WUtrspZujjH2WF951yupXLhRMh +- [✓] `Faucet Coin` address2 mint hash:FiDtYoakpPCxDAPQC1HYKpf7LuygSYQXtVVYoWwgX4xX ## 03 move NFT - [] nft package id : diff --git a/mover/RaynorZhong/co-learn-2411/images/follow_bilibili.png b/mover/RaynorZhong/co-learn-2411/images/follow_bilibili.png new file mode 100644 index 000000000..9a0df527f Binary files /dev/null and b/mover/RaynorZhong/co-learn-2411/images/follow_bilibili.png differ diff --git a/mover/RaynorZhong/co-learn-2411/images/follow_x.png b/mover/RaynorZhong/co-learn-2411/images/follow_x.png new file mode 100644 index 000000000..2341ebcd2 Binary files /dev/null and b/mover/RaynorZhong/co-learn-2411/images/follow_x.png differ diff --git a/mover/RaynorZhong/co-learn-2411/images/week1.png b/mover/RaynorZhong/co-learn-2411/images/week1.png new file mode 100644 index 000000000..31599a630 Binary files /dev/null and b/mover/RaynorZhong/co-learn-2411/images/week1.png differ diff --git a/mover/RaynorZhong/co-learn-2411/images/week2.png b/mover/RaynorZhong/co-learn-2411/images/week2.png new file mode 100644 index 000000000..a5cc6c9fe Binary files /dev/null and b/mover/RaynorZhong/co-learn-2411/images/week2.png differ diff --git a/mover/RaynorZhong/co-learn-2411/readme.md b/mover/RaynorZhong/co-learn-2411/readme.md index 9b3eccb1d..210250238 100644 --- a/mover/RaynorZhong/co-learn-2411/readme.md +++ b/mover/RaynorZhong/co-learn-2411/readme.md @@ -2,7 +2,7 @@ ## b站,推特关注 -- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) +- [X] b站,推特关注截图: ![关注截图](./images/follow_bilibili.png)![关注截图](./images/follow_x.png) ## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) @@ -10,8 +10,8 @@ ## 每周课程学习 -- [] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [X] 第一周:![学习记录截图](./images/week1.png) +- [X] 第二周:![学习记录截图](./images/week2.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) diff --git a/mover/RaynorZhong/code/task1/hello_move/Move.lock b/mover/RaynorZhong/code/task1/hello_move/Move.lock index 5f36ec59c..ff444c2ad 100644 --- a/mover/RaynorZhong/code/task1/hello_move/Move.lock +++ b/mover/RaynorZhong/code/task1/hello_move/Move.lock @@ -21,7 +21,7 @@ dependencies = [ ] [move.toolchain-version] -compiler-version = "1.37.1" +compiler-version = "1.37.2" edition = "2024.beta" flavor = "sui" diff --git a/mover/RaynorZhong/code/task2/faucetcoin/Move.lock b/mover/RaynorZhong/code/task2/faucetcoin/Move.lock new file mode 100644 index 000000000..3e502b20b --- /dev/null +++ b/mover/RaynorZhong/code/task2/faucetcoin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "36AAF1CDEC036D88764BAC3DCDE58C0D7D361D80DBC1ED0F543FFC7DC8AA1BA6" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xb07129c3ae8286e21399d85fe6ada35f30ed320113e115b6765f19b3cc31b10b" +latest-published-id = "0xb07129c3ae8286e21399d85fe6ada35f30ed320113e115b6765f19b3cc31b10b" +published-version = "1" diff --git a/mover/RaynorZhong/code/task2/faucetcoin/Move.toml b/mover/RaynorZhong/code/task2/faucetcoin/Move.toml new file mode 100644 index 000000000..380370c8a --- /dev/null +++ b/mover/RaynorZhong/code/task2/faucetcoin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucetcoin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucetcoin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/RaynorZhong/code/task2/faucetcoin/sources/faucetcoin.move b/mover/RaynorZhong/code/task2/faucetcoin/sources/faucetcoin.move new file mode 100644 index 000000000..be7cc6695 --- /dev/null +++ b/mover/RaynorZhong/code/task2/faucetcoin/sources/faucetcoin.move @@ -0,0 +1,21 @@ +/* +/// Module: faucetcoin +module faucetcoin::faucetcoin; +*/ +module faucetcoin::raynor_faucet_coin{ + use sui::coin::{Self,TreasuryCap}; + + public struct RAYNOR_FAUCET_COIN has drop {} + + fun init(witness:RAYNOR_FAUCET_COIN, ctx:&mut TxContext){ + let (treasury, metadata) = coin::create_currency(witness, 6, b"RFC", b"raynor faucet coin", b"faucetcoin", option::none(), ctx); + + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury); + } + + public fun mint(treasury_cap:&mut TreasuryCap, amount:u64, recipient:address, ctx:&mut TxContext){ + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient); + } +} \ No newline at end of file diff --git a/mover/RaynorZhong/code/task2/faucetcoin/tests/faucetcoin_tests.move b/mover/RaynorZhong/code/task2/faucetcoin/tests/faucetcoin_tests.move new file mode 100644 index 000000000..6a93a27fa --- /dev/null +++ b/mover/RaynorZhong/code/task2/faucetcoin/tests/faucetcoin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucetcoin::faucetcoin_tests; +// uncomment this line to import the module +// use faucetcoin::faucetcoin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucetcoin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucetcoin::faucetcoin_tests::ENotImplemented)] +fun test_faucetcoin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/RaynorZhong/code/task2/mycoin/Move.lock b/mover/RaynorZhong/code/task2/mycoin/Move.lock new file mode 100644 index 000000000..07dcffc35 --- /dev/null +++ b/mover/RaynorZhong/code/task2/mycoin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1393B3A86BC22B7FE61E23DBB2EF7BE1A330BF07AB402600F7E7CFF6E9DC82F9" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x3af0e3f1dfce740a550144bc0a09446274e028fa83ae77a81423cd1ec0736937" +latest-published-id = "0x3af0e3f1dfce740a550144bc0a09446274e028fa83ae77a81423cd1ec0736937" +published-version = "1" diff --git a/mover/RaynorZhong/code/task2/mycoin/Move.toml b/mover/RaynorZhong/code/task2/mycoin/Move.toml new file mode 100644 index 000000000..e77f86f6a --- /dev/null +++ b/mover/RaynorZhong/code/task2/mycoin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "mycoin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +mycoin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/RaynorZhong/code/task2/mycoin/sources/mycoin.move b/mover/RaynorZhong/code/task2/mycoin/sources/mycoin.move new file mode 100644 index 000000000..e7675b67a --- /dev/null +++ b/mover/RaynorZhong/code/task2/mycoin/sources/mycoin.move @@ -0,0 +1,21 @@ +/* +/// Module: mycoin +module mycoin::mycoin; +*/ +module mycoin::raynor_coin{ + use sui::coin::{Self,TreasuryCap}; + + public struct RAYNOR_COIN has drop {} + + fun init(witness:RAYNOR_COIN, ctx:&mut TxContext){ + let (treasury, metadata) = coin::create_currency(witness, 6, b"RC", b"raynor coin", b"mycoin", option::none(), ctx); + + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, tx_context::sender(ctx)); + } + + public fun mint(treasury_cap:&mut TreasuryCap, amount:u64, recipient:address, ctx:&mut TxContext){ + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient); + } +} \ No newline at end of file diff --git a/mover/RaynorZhong/code/task2/mycoin/tests/mycoin_tests.move b/mover/RaynorZhong/code/task2/mycoin/tests/mycoin_tests.move new file mode 100644 index 000000000..d12b2353d --- /dev/null +++ b/mover/RaynorZhong/code/task2/mycoin/tests/mycoin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module mycoin::mycoin_tests; +// uncomment this line to import the module +// use mycoin::mycoin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_mycoin() { + // pass +} + +#[test, expected_failure(abort_code = ::mycoin::mycoin_tests::ENotImplemented)] +fun test_mycoin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/RaynorZhong/readme.md b/mover/RaynorZhong/readme.md index a0935b358..5a2f7aa65 100644 --- a/mover/RaynorZhong/readme.md +++ b/mover/RaynorZhong/readme.md @@ -13,17 +13,17 @@ ## 任务 ## 01 hello move -- [] Sui cli version: sui 1.37.1-homebrew -- [] Sui钱包截图: ![Sui钱包截图](./images/wallet.png) -- [] package id: 0x22b201c33f9272292876888fb49f5c95a938079ce1ed4ac7a9199018769453f2 -- [] package id 在 scan上的查看截图:![Scan截图](./images/packageid.png) +- [X] Sui cli version: sui 1.37.2-homebrew +- [X] Sui钱包截图: ![Sui钱包截图](./images/wallet.png) +- [X] package id: 0x22b201c33f9272292876888fb49f5c95a938079ce1ed4ac7a9199018769453f2 +- [X] package id 在 scan上的查看截图:![Scan截图](./images/packageid.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [X] My Coin package id : 0x3af0e3f1dfce740a550144bc0a09446274e028fa83ae77a81423cd1ec0736937 +- [X] Faucet package id : 0xb07129c3ae8286e21399d85fe6ada35f30ed320113e115b6765f19b3cc31b10b +- [X] 转账 `My Coin` hash: 65jLT3cemJtUKPHYuMktUqA54gbBAX4FqpvBdgqLvaBS +- [X] `Faucet Coin` address1 mint hash: GZzhkwyh3GWeGhQJeCerFRgQD3EuMZCB6rHQhHkmhkex +- [X] `Faucet Coin` address2 mint hash: CeWZzGvkxLiNewpowSRuozvJcRHRaAnw89gx9Q8oBZLL ## 03 move NFT - [] nft package id : diff --git a/mover/Veincealan/co-learn-2411/images/Learn_NO2.jpg b/mover/Veincealan/co-learn-2411/images/Learn_NO2.jpg new file mode 100644 index 000000000..987db2fc5 Binary files /dev/null and b/mover/Veincealan/co-learn-2411/images/Learn_NO2.jpg differ diff --git a/mover/Veincealan/co-learn-2411/images/QA_Meeting_No1.jpg b/mover/Veincealan/co-learn-2411/images/QA_Meeting_No1.jpg new file mode 100644 index 000000000..2f85a1448 Binary files /dev/null and b/mover/Veincealan/co-learn-2411/images/QA_Meeting_No1.jpg differ diff --git a/mover/Veincealan/co-learn-2411/images/QA_Meeting_No2.jpg b/mover/Veincealan/co-learn-2411/images/QA_Meeting_No2.jpg new file mode 100644 index 000000000..5a9892e59 Binary files /dev/null and b/mover/Veincealan/co-learn-2411/images/QA_Meeting_No2.jpg differ diff --git a/mover/Veincealan/co-learn-2411/readme.md b/mover/Veincealan/co-learn-2411/readme.md index 75fe87b94..779a62ede 100644 --- a/mover/Veincealan/co-learn-2411/readme.md +++ b/mover/Veincealan/co-learn-2411/readme.md @@ -13,14 +13,14 @@ ## 每周课程学习 - [✓] 第一周:![学习记录截图](./images/Learn_NO1.jpg) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [✓] 第二周:![学习记录截图](./images/Learn_NO2.jpg) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 -- [] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [✓] 第一周:![学习记录截图](./images/QA_Meeting_No1.jpg) +- [✓] 第二周:![学习记录截图](./images/QA_Meeting_No2.jpg) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) diff --git a/mover/Veincealan/code/task3/Move.lock b/mover/Veincealan/code/task3/Move.lock new file mode 100644 index 000000000..71be582a7 --- /dev/null +++ b/mover/Veincealan/code/task3/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "DAE1CD0266E7A5F059DB90223B5A3071F55069BDC6D3E8733CF84FBDFD4BC5B2" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x84f9f40f9b4da0c8f44fc069a4bc6372965a6bbcb65491af9034f82023f345fa" +latest-published-id = "0x84f9f40f9b4da0c8f44fc069a4bc6372965a6bbcb65491af9034f82023f345fa" +published-version = "1" diff --git a/mover/Veincealan/code/task3/Move.toml b/mover/Veincealan/code/task3/Move.toml new file mode 100644 index 000000000..03b2a718f --- /dev/null +++ b/mover/Veincealan/code/task3/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "Tasks" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task3 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/Veincealan/code/task3/sources/nft.move b/mover/Veincealan/code/task3/sources/nft.move new file mode 100644 index 000000000..9c6ae70ec --- /dev/null +++ b/mover/Veincealan/code/task3/sources/nft.move @@ -0,0 +1,58 @@ +module task3::nft { + + use std::string::String; + use std::string::utf8; + use sui::display; + use sui::object; + use sui::object::UID; + use sui::package; + use sui::transfer; + use sui::transfer::transfer; + use sui::tx_context; + use sui::tx_context::TxContext; + + public struct NFT has drop {} + + public struct MyNFT has key,store { + id: UID, + github_id: String, + image_url: String, + } + + fun init(witness: NFT, ctx: &mut TxContext) { + let key = vector[ + utf8(b"github_id"), + utf8(b"image_url"), + ]; + let valus = vector[ + utf8(b"{github_id}"), + utf8(b"{image_url}"), + ]; + + let publisher = package::claim(witness, ctx); + let mut display = display::new_with_fields( + &publisher, key, valus, ctx + ); + display::update_version(&mut display); + transfer::public_transfer(publisher, tx_context::sender(ctx)); + transfer::public_transfer(display, tx_context::sender(ctx)); + } + + public entry fun Mint(recipient: address, ctx: &mut TxContext) { + let github_id = utf8(b"Veincealan"); + let image_url = utf8(b"https://avatars.githubusercontent.com/u/95604105?v=4&size=64"); + let nft = MyNFT { + id: object::new(ctx), + github_id, + image_url, + }; + transfer::public_transfer(nft, recipient); + } + public entry fun Burn(nft: MyNFT) { + let MyNFT { id, github_id: _, image_url: _ } = nft; + object::delete(id); + } + + +} + diff --git a/mover/Veincealan/code/task3/tests/my_nft_tests.move b/mover/Veincealan/code/task3/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/Veincealan/code/task3/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/Veincealan/images/NFT_scan.png b/mover/Veincealan/images/NFT_scan.png new file mode 100644 index 000000000..4a61b2f3b Binary files /dev/null and b/mover/Veincealan/images/NFT_scan.png differ diff --git a/mover/Veincealan/readme.md b/mover/Veincealan/readme.md index f8918097f..9b926f5ca 100644 --- a/mover/Veincealan/readme.md +++ b/mover/Veincealan/readme.md @@ -26,10 +26,10 @@ - [] `Faucet Coin` address2 mint hash: ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [✓] nft package id :0x84f9f40f9b4da0c8f44fc069a4bc6372965a6bbcb65491af9034f82023f345fa +- [✓] nft object id :0x5534ebe76e3f0db96b857bb4685557d5acbf2df7bfc17812151529b76e649415 +- [✓] 转账 nft hash:6Xf9tFQSkPyZhD86dXKqjU6EMVTNpXMsyFVubZe8LS3c +- [✓] scan上的NFT截图:![Scan截图](./images/NFT_scan.png) ## 04 Move Game - [] game package id : diff --git a/mover/YXZ252426/code/task2/YXZ252426/sources/yxz252426.move b/mover/YXZ252426/code/task2/YXZ252426/sources/yxz252426.move new file mode 100644 index 000000000..f20974463 --- /dev/null +++ b/mover/YXZ252426/code/task2/YXZ252426/sources/yxz252426.move @@ -0,0 +1,51 @@ +/* +/// Module: yxz252426 +module yxz252426::yxz252426; +*/ +module yxz252426::yxz252426 { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct YXZ252426 has drop {} + + fun init( + witness: YXZ252426, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"YXZ", + b"YXZ252426", + b"YXZ Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/76983474" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer( + treasury_cap, + tx_context::sender(ctx) + ) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} diff --git a/mover/YXZ252426/code/task2/YXZ252426/tests/yxz252426_tests.move b/mover/YXZ252426/code/task2/YXZ252426/tests/yxz252426_tests.move new file mode 100644 index 000000000..faef0e308 --- /dev/null +++ b/mover/YXZ252426/code/task2/YXZ252426/tests/yxz252426_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module yxz252426::yxz252426_tests; +// uncomment this line to import the module +// use yxz252426::yxz252426; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_yxz252426() { + // pass +} + +#[test, expected_failure(abort_code = ::yxz252426::yxz252426_tests::ENotImplemented)] +fun test_yxz252426_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/YXZ252426/code/task2/YXZ252426_faucet/sources/yxz252426_faucet.move b/mover/YXZ252426/code/task2/YXZ252426_faucet/sources/yxz252426_faucet.move new file mode 100644 index 000000000..15fad3caa --- /dev/null +++ b/mover/YXZ252426/code/task2/YXZ252426_faucet/sources/yxz252426_faucet.move @@ -0,0 +1,50 @@ +/* +/// Module: yxz252426_faucet +module yxz252426_faucet::yxz252426_faucet; +*/ +module yxz252426_faucet::yxz252426_faucet { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct YXZ252426_FAUCET has drop {} + + fun init( + witness: YXZ252426_FAUCET, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"YXZ", + b"YXZ252426_FAUCET", + b"YXZ252426 Faucet Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/76983474" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + diff --git a/mover/YXZ252426/code/task2/YXZ252426_faucet/tests/yxz252426_faucet_tests.move b/mover/YXZ252426/code/task2/YXZ252426_faucet/tests/yxz252426_faucet_tests.move new file mode 100644 index 000000000..6e22cad5d --- /dev/null +++ b/mover/YXZ252426/code/task2/YXZ252426_faucet/tests/yxz252426_faucet_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module yxz252426_faucet::yxz252426_faucet_tests; +// uncomment this line to import the module +// use yxz252426_faucet::yxz252426_faucet; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_yxz252426_faucet() { + // pass +} + +#[test, expected_failure(abort_code = ::yxz252426_faucet::yxz252426_faucet_tests::ENotImplemented)] +fun test_yxz252426_faucet_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/YXZ252426/readme.md b/mover/YXZ252426/readme.md index 02f8e106b..88aa07970 100644 --- a/mover/YXZ252426/readme.md +++ b/mover/YXZ252426/readme.md @@ -20,11 +20,11 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./image/img_1.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0x4a84cee52be28b15ccaf679692aa8324dbc057e626843f18ea5533fa9efad9a6 +- [x] Faucet package id : 0xca91323681336a5b81bd8405ae740ebf25109d664ffdd1b5a25368e4ce53ce17 +- [x] 转账 `My Coin` hash:3jZ43YJi2HJ4SZdeVjoJXp2UAuCXhpS43Kh8tnkszj7R +- [x] `Faucet Coin` address1 mint hash:4Rgjn5nZoj4Ra3x48GMQnZnJxf5HhcFhWk8u96FsUGg4 +- [x] `Faucet Coin` address2 mint hash:3tMK1VuaUdT2X5KUxLnpVqsFLio419qQkyk9LkT4Q1T6 ## 03 move NFT - [] nft package id : diff --git "a/mover/aimotee/notes/\357\274\210\344\270\211\357\274\211Let's Move\345\205\261\345\255\246\357\274\214sui move \345\217\221\345\270\201.md" "b/mover/aimotee/notes/\357\274\210\344\270\211\357\274\211Let's Move\345\205\261\345\255\246\357\274\214sui move \345\217\221\345\270\201.md" new file mode 100644 index 000000000..55bf46c26 --- /dev/null +++ "b/mover/aimotee/notes/\357\274\210\344\270\211\357\274\211Let's Move\345\205\261\345\255\246\357\274\214sui move \345\217\221\345\270\201.md" @@ -0,0 +1 @@ +登链社区 iD:aimotee 文章链接:https://learnblockchain.cn/article/9970 diff --git "a/mover/aimotee/notes/\357\274\210\344\272\214\357\274\211Let's Move\345\205\261\345\255\246\357\274\214\345\210\235\345\247\213\350\257\255\346\263\225.md" "b/mover/aimotee/notes/\357\274\210\344\272\214\357\274\211Let's Move\345\205\261\345\255\246\357\274\214\345\210\235\345\247\213\350\257\255\346\263\225.md" new file mode 100644 index 000000000..c6b4a2819 --- /dev/null +++ "b/mover/aimotee/notes/\357\274\210\344\272\214\357\274\211Let's Move\345\205\261\345\255\246\357\274\214\345\210\235\345\247\213\350\257\255\346\263\225.md" @@ -0,0 +1 @@ +登链社区 iD:aimotee 文章链接:https://learnblockchain.cn/article/9962 diff --git a/mover/andanxingkong/code/task2/andanxingkong_coin/Move.lock b/mover/andanxingkong/code/task2/andanxingkong_coin/Move.lock new file mode 100644 index 000000000..299a86d42 --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1402037AE6D6F6388A4E9E3496E9BAF1193923BABE84544D78161FB56A48D209" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x85e54e8e7842ddd71710109c5dec3c10142418475ea078927219a4700477f0a6" +latest-published-id = "0x85e54e8e7842ddd71710109c5dec3c10142418475ea078927219a4700477f0a6" +published-version = "1" diff --git a/mover/andanxingkong/code/task2/andanxingkong_coin/Move.toml b/mover/andanxingkong/code/task2/andanxingkong_coin/Move.toml new file mode 100644 index 000000000..bdf0f8af9 --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "andanxingkong_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +andanxingkong_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/andanxingkong/code/task2/andanxingkong_coin/sources/andanxingkong_coin.move b/mover/andanxingkong/code/task2/andanxingkong_coin/sources/andanxingkong_coin.move new file mode 100644 index 000000000..191d12c44 --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_coin/sources/andanxingkong_coin.move @@ -0,0 +1,47 @@ +module andanxingkong_coin::andanxingkong_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct ANDANXINGKONG_COIN has drop {} + + fun init( + witness: ANDANXINGKONG_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"ANDANXINGKONG", + b"ANDANXINGKONG_COIN", + b"andanxingkong Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/149133275" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer( + treasury_cap, + tx_context::sender(ctx) + ) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} diff --git a/mover/andanxingkong/code/task2/andanxingkong_coin/tests/andanxingkong_coin_tests.move b/mover/andanxingkong/code/task2/andanxingkong_coin/tests/andanxingkong_coin_tests.move new file mode 100644 index 000000000..99ea1fd28 --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_coin/tests/andanxingkong_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module andanxingkong_coin::andanxingkong_coin_tests; +// uncomment this line to import the module +// use andanxingkong_coin::andanxingkong_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_andanxingkong_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::andanxingkong_coin::andanxingkong_coin_tests::ENotImplemented)] +fun test_andanxingkong_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/Move.lock b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/Move.lock new file mode 100644 index 000000000..44928c9f1 --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "55B760255A5DEABD3F6C78F797C999BFBD8F1771B88C2D31ACD61A32EB0EC0FA" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xb0f1c73daca44429d16d41de77dc3c8a9c2b66d932100d3a025e97e530c06b12" +latest-published-id = "0xb0f1c73daca44429d16d41de77dc3c8a9c2b66d932100d3a025e97e530c06b12" +published-version = "1" diff --git a/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/Move.toml b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/Move.toml new file mode 100644 index 000000000..808601d8d --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "andanxingkong_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +andanxingkong_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/sources/andanxingkong_faucet_coin.move b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/sources/andanxingkong_faucet_coin.move new file mode 100644 index 000000000..125ccef04 --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/sources/andanxingkong_faucet_coin.move @@ -0,0 +1,46 @@ +module andanxingkong_faucet_coin::andanxingkong_faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct ANDANXINGKONG_FAUCET_COIN has drop {} + + fun init( + witness: ANDANXINGKONG_FAUCET_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"ADX", + b"ANDANXINGKONG_FAUCET_COIN", + b"andanxingkong Faucet Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/149133275" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + diff --git a/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/tests/andanxingkong_faucet_coin_tests.move b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/tests/andanxingkong_faucet_coin_tests.move new file mode 100644 index 000000000..bfcd53dbf --- /dev/null +++ b/mover/andanxingkong/code/task2/andanxingkong_faucet_coin/tests/andanxingkong_faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module andanxingkong_faucet_coin::andanxingkong_faucet_coin_tests; +// uncomment this line to import the module +// use andanxingkong_faucet_coin::andanxingkong_faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_andanxingkong_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::andanxingkong_faucet_coin::andanxingkong_faucet_coin_tests::ENotImplemented)] +fun test_andanxingkong_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/andanxingkong/code/task3/nfts/Move.lock b/mover/andanxingkong/code/task3/nfts/Move.lock new file mode 100644 index 000000000..862f0afdb --- /dev/null +++ b/mover/andanxingkong/code/task3/nfts/Move.lock @@ -0,0 +1,122 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "3AAEF9A344CC0C3586435982BB4B955FB917D8389857EA039D2B24A737436840" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "NftProtocol", name = "NftProtocol" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Allowlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\allowlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Authlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\authlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Kiosk" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\kiosk" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "NftProtocol" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/nft_protocol" } + +dependencies = [ + { id = "Allowlist", name = "Allowlist" }, + { id = "Authlist", name = "Authlist" }, + { id = "Kiosk", name = "Kiosk" }, + { id = "Originmate", name = "Originmate" }, + { id = "Permissions", name = "Permissions" }, + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Originmate" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\originmate" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Permissions" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\permissions" } + +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Pseudorandom" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\pseudorandom" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Request" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\request" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "Utils" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\utils" } + +dependencies = [ + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.36.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xb99e11a669867ab763fdc9d0526e942deb0a91752663a7273583df32e302d9b0" +latest-published-id = "0xb99e11a669867ab763fdc9d0526e942deb0a91752663a7273583df32e302d9b0" +published-version = "1" diff --git a/mover/andanxingkong/code/task3/nfts/Move.toml b/mover/andanxingkong/code/task3/nfts/Move.toml new file mode 100644 index 000000000..bdc5a67ca --- /dev/null +++ b/mover/andanxingkong/code/task3/nfts/Move.toml @@ -0,0 +1,36 @@ +[package] +name = "nfts" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.19.1" } +NftProtocol = { git = "https://github.com/Origin-Byte/nft-protocol.git", subdir = "contracts/nft_protocol", rev = "main" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +nfts = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/andanxingkong/code/task3/nfts/sources/nfts.move b/mover/andanxingkong/code/task3/nfts/sources/nfts.move new file mode 100644 index 000000000..7c011037d --- /dev/null +++ b/mover/andanxingkong/code/task3/nfts/sources/nfts.move @@ -0,0 +1,69 @@ +module nfts::nfts { + use nft_protocol::attributes::{Self, Attributes}; + use nft_protocol::collection; + use std::ascii::String; + use std::string; + use sui::url::{Self, Url}; + use nft_protocol::display_info; + use nft_protocol::mint_cap::{Self, MintCap}; + use nft_protocol::mint_event; + use ob_permissions::witness; + + public struct NFTS has drop {} + + /// 可用于创建后授权其他操作。至关重要的是,这个结构体不能随意提供给任何合约,因为它充当了授权令牌。 + public struct Witness has drop {} + + public struct NFT has key, store { + id: UID, + name: String, + description: String, + url: Url, + attributes: Attributes, + } + + fun init(otw: NFTS, ctx: &mut TxContext) { + let (mut collection, mint_cap) = collection::create_with_mint_cap( + &otw, option::none(), ctx + ); + let delegated_witness = witness::from_witness(Witness {}); + + collection::add_domain( + delegated_witness, + &mut collection, + display_info::new( + string::utf8(b"NFTs"), + string::utf8(b"A NFT collection of NFTs on Sui"), + ), + ); + transfer::public_share_object(collection); + transfer::public_share_object(mint_cap); + } + + public entry fun mint_nft( + mint_cap: &MintCap, + name: String, + description: String, + url: String, + ctx: &mut TxContext, + ) { + let nft = NFT { + id: object::new(ctx), + name, + description, + url: url::new_unsafe(url), + attributes: attributes::from_vec(vector[], vector[]) + }; + + mint_event::emit_mint( + witness::from_witness(Witness {}), + mint_cap::collection_id(mint_cap), + &nft, + ); + transfer::public_transfer(nft, tx_context::sender(ctx)); + } + + public entry fun transfer_nft(nft: NFT, to: address) { + transfer::public_transfer(nft, to); + } +} diff --git a/mover/andanxingkong/code/task3/nfts/tests/nfts_tests.move b/mover/andanxingkong/code/task3/nfts/tests/nfts_tests.move new file mode 100644 index 000000000..8a6d7c4f2 --- /dev/null +++ b/mover/andanxingkong/code/task3/nfts/tests/nfts_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module nfts::nfts_tests; +// uncomment this line to import the module +// use nfts::nfts; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_nfts() { + // pass +} + +#[test, expected_failure(abort_code = ::nfts::nfts_tests::ENotImplemented)] +fun test_nfts_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/andanxingkong/code/task4/game/Move.lock b/mover/andanxingkong/code/task4/game/Move.lock new file mode 100644 index 000000000..0cbf23cc4 --- /dev/null +++ b/mover/andanxingkong/code/task4/game/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "86AB734BFA7384B113A12BCD99BE37DB154DAADA31451D1DE2C6B4E3ED09C3C3" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "andanxingkong_faucet_coin", name = "andanxingkong_faucet_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "andanxingkong_faucet_coin" +source = { local = "..\\task2\\andanxingkong_faucet_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.36.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x53eb007cea767dbe82b42b1cf54c788182427c6410d527435fd15edda94994b7" +latest-published-id = "0x53eb007cea767dbe82b42b1cf54c788182427c6410d527435fd15edda94994b7" +published-version = "1" diff --git a/mover/andanxingkong/code/task4/game/Move.toml b/mover/andanxingkong/code/task4/game/Move.toml new file mode 100644 index 000000000..4566d4a76 --- /dev/null +++ b/mover/andanxingkong/code/task4/game/Move.toml @@ -0,0 +1,39 @@ +[package] +name = "game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } +andanxingkong_faucet_coin = { local = "../task2/andanxingkong_faucet_coin" } + + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/andanxingkong/code/task4/game/sources/game.move b/mover/andanxingkong/code/task4/game/sources/game.move new file mode 100644 index 000000000..9ec1deb38 --- /dev/null +++ b/mover/andanxingkong/code/task4/game/sources/game.move @@ -0,0 +1,94 @@ +module game::game { + use sui::coin::{Self, Coin}; + use andanxingkong_faucet_coin::andanxingkong_faucet_coin::ANDANXINGKONG_FAUCET_COIN; + use sui::balance::{Self, Balance}; + use sui::random::{Self, Random}; + + const EUserInsufficientBalance: u64 = 1000; + const EGameInsufficientBalance: u64 = 1001; + + public struct Game has key { + id: UID, + balance: Balance, + } + + public struct Admin has key { + id: UID, + } + + fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + balance: balance::zero(), + }; + transfer::share_object(game); + + let admin = Admin {id: object::new(ctx)}; + transfer::transfer(admin, ctx.sender()); + } + + public entry fun Deposit( + game: &mut Game, + coin: &mut Coin, + amount: u64, + ) { + assert!( + coin::value(coin) >= amount, + EUserInsufficientBalance + ); + let split_balance = balance::split(coin::balance_mut(coin), amount); + balance::join(&mut game.balance, split_balance); + } + + // 只有管理员能够提现 + public entry fun Withdraw( + game: &mut Game, + _: &Admin, + amount: u64, + ctx: &mut TxContext + ) { + assert!( + game.balance.value() >= amount, + EGameInsufficientBalance + ); + let cash = coin::take(&mut game.balance, amount, ctx); + transfer::public_transfer(cash, ctx.sender()); + } + + // 如果用户猜对了,获得双倍奖励。如果用户猜错了,损失投入的代币 + + public entry fun Play( + game: &mut Game, + rnd: &Random, + guess: bool, + coin: &mut Coin, + amount: u64, + ctx: &mut TxContext + ) { + // 检查合约余额是否充足,确保用户获胜时有足够金额奖励 + assert!( + game.balance.value() >= amount, + EGameInsufficientBalance + ); + // 检查用户的余额是否充足 + assert!( + coin::value(coin) >= amount, + EUserInsufficientBalance + ); + + // 生成随机数 + let mut gen = random::new_generator(rnd, ctx); + let flag = random::generate_bool(&mut gen); + + // 如果获胜 + if (flag == guess) { + // 投入的代币不变,另外奖励等额的代币 + let reward = coin::take(&mut game.balance, amount, ctx); + coin::join(coin, reward); + } + // 猜错了就损失投入的代币 + else { + Self::Deposit(game, coin, amount) + } + } +} diff --git a/mover/andanxingkong/code/task4/game/tests/game_tests.move b/mover/andanxingkong/code/task4/game/tests/game_tests.move new file mode 100644 index 000000000..9470e9c04 --- /dev/null +++ b/mover/andanxingkong/code/task4/game/tests/game_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module game::game_tests; +// uncomment this line to import the module +// use game::game; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_game() { + // pass +} + +#[test, expected_failure(abort_code = ::game::game_tests::ENotImplemented)] +fun test_game_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/andanxingkong/images/nft.png b/mover/andanxingkong/images/nft.png new file mode 100644 index 000000000..45c438081 Binary files /dev/null and b/mover/andanxingkong/images/nft.png differ diff --git a/mover/andanxingkong/readme.md b/mover/andanxingkong/readme.md index 5efec4d9e..6762cdcb5 100644 --- a/mover/andanxingkong/readme.md +++ b/mover/andanxingkong/readme.md @@ -19,23 +19,23 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/id.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0x85e54e8e7842ddd71710109c5dec3c10142418475ea078927219a4700477f0a6 +- [x] Faucet package id : 0xb0f1c73daca44429d16d41de77dc3c8a9c2b66d932100d3a025e97e530c06b12 +- [x] 转账 `My Coin` hash: 55zhMkyYjSJDjpSpm5LYVDpc5Xw9G5YCWRoUTisG61iz +- [x] `Faucet Coin` address1 mint hash: Bjw4sTQ5bYJvKkVeFp4dT8eRkgMLsNN6EhAj9PSQ1D5L +- [x] `Faucet Coin` address2 mint hash: DX3WrcL914ZUZJxaVa2qKw74DREWteSaPZksQo1EsinX ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id : 0xb99e11a669867ab763fdc9d0526e942deb0a91752663a7273583df32e302d9b0 +- [x] nft object id : 0x176a953efaab4c2f7c75e03a0c1381bad81c28ac8ab7c9ea6b79ecd6cacbf4d8 +- [x] 转账 nft hash: 4cmMmMdNfbeYz7a64uj1bRsvu5TG3bECaZ8Xo2o32dgH +- [x] scan上的NFT截图:![Scan截图](./images/nft.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id : 0x53eb007cea767dbe82b42b1cf54c788182427c6410d527435fd15edda94994b7 +- [x] deposit Coin hash: nkSsGVUuVNMSZ26amgFZmw2W78wbnKEkvTNnoTjHDXN +- [x] withdraw `Coin` hash: H1phUWCPFpPKAuLfMEJeV3nv58u4pRGZykF34192rkFP +- [x] play game hash: GgnWjAspZnR7MTVrRXnVT4obHrynKz2miwxjJW5HLZt7 ## 05 Move Swap - [] swap package id : diff --git a/mover/brainsk/co-learn-2411/images/readme.md b/mover/brainsk/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/brainsk/co-learn-2411/project/readme.md b/mover/brainsk/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/brainsk/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/brainsk/co-learn-2411/readme.md b/mover/brainsk/co-learn-2411/readme.md new file mode 100644 index 000000000..9b3eccb1d --- /dev/null +++ b/mover/brainsk/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/brainsk/code/readme.md b/mover/brainsk/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/brainsk/code/task1/Move.lock b/mover/brainsk/code/task1/Move.lock new file mode 100644 index 000000000..d1a68be66 --- /dev/null +++ b/mover/brainsk/code/task1/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "2E267C18D553336099CDD31F7063857679825E46CD06EC67CC7F7FB0C20317C1" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x649f4acee5d47ea606010f23b0f094512c829124104abd9f0fe751cf3c57ddb4" +latest-published-id = "0x649f4acee5d47ea606010f23b0f094512c829124104abd9f0fe751cf3c57ddb4" +published-version = "1" diff --git a/mover/brainsk/code/task1/Move.toml b/mover/brainsk/code/task1/Move.toml new file mode 100644 index 000000000..e75e497eb --- /dev/null +++ b/mover/brainsk/code/task1/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task1" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task1 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/brainsk/code/task1/sources/task1.move b/mover/brainsk/code/task1/sources/task1.move new file mode 100644 index 000000000..89a4439b7 --- /dev/null +++ b/mover/brainsk/code/task1/sources/task1.move @@ -0,0 +1,24 @@ +/// Module: task1 +#[allow(duplicate_alias)] +module task1::task1 { + use std::ascii::{String, string}; + use sui::object::{Self,UID}; + use sui::transfer::transfer; + use sui::tx_context::{TxContext, sender}; + + public struct Hello has key{ + id:UID, + say: String + } + + fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id:object::new(ctx), + say: string(b"brainsk"), + }; + transfer(hello_move, sender(ctx)); + } +} + + + diff --git a/mover/smithclkpayphone123456789010/code/task01/hello/tests/hello_tests.move b/mover/brainsk/code/task1/tests/task1_tests.move similarity index 53% rename from mover/smithclkpayphone123456789010/code/task01/hello/tests/hello_tests.move rename to mover/brainsk/code/task1/tests/task1_tests.move index 34dfcfb57..31fb8c1ac 100644 --- a/mover/smithclkpayphone123456789010/code/task01/hello/tests/hello_tests.move +++ b/mover/brainsk/code/task1/tests/task1_tests.move @@ -1,18 +1,18 @@ /* #[test_only] -module hello::hello_tests { +module task1::task1_tests { // uncomment this line to import the module - // use hello::hello; + // use task1::task1; const ENotImplemented: u64 = 0; #[test] - fun test_hello() { + fun test_task1() { // pass } - #[test, expected_failure(abort_code = ::hello::hello_tests::ENotImplemented)] - fun test_hello_fail() { + #[test, expected_failure(abort_code = ::task1::task1_tests::ENotImplemented)] + fun test_task1_fail() { abort ENotImplemented } } diff --git a/mover/brainsk/code/task2/faucetcoin/Move.lock b/mover/brainsk/code/task2/faucetcoin/Move.lock new file mode 100644 index 000000000..bd4d87a57 --- /dev/null +++ b/mover/brainsk/code/task2/faucetcoin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "36AAF1CDEC036D88764BAC3DCDE58C0D7D361D80DBC1ED0F543FFC7DC8AA1BA6" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x9cb7346a837dbbe61f1fbb7d96e768ac904b2b969a11a9a10d2b2d8bce07e34d" +latest-published-id = "0x9cb7346a837dbbe61f1fbb7d96e768ac904b2b969a11a9a10d2b2d8bce07e34d" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd" +latest-published-id = "0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd" +published-version = "1" diff --git a/mover/brainsk/code/task2/faucetcoin/Move.toml b/mover/brainsk/code/task2/faucetcoin/Move.toml new file mode 100644 index 000000000..380370c8a --- /dev/null +++ b/mover/brainsk/code/task2/faucetcoin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucetcoin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucetcoin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/brainsk/code/task2/faucetcoin/sources/faucetcoin.move b/mover/brainsk/code/task2/faucetcoin/sources/faucetcoin.move new file mode 100644 index 000000000..61b4af6c5 --- /dev/null +++ b/mover/brainsk/code/task2/faucetcoin/sources/faucetcoin.move @@ -0,0 +1,20 @@ +module faucetcoin::faucetcoin{ + use sui::coin::{Self, Coin, TreasuryCap}; + + public struct FAUCETCOIN has drop {} + + fun init(otw: FAUCETCOIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency(otw, 2, b"FAUCETCOIN", b"FaucetCoin", b"", option::none(), ctx); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap); + } + + public entry fun mint(treasury_cap: &mut TreasuryCap, amount: u64, recipient: address, ctx: &mut TxContext) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + // burn coins + public entry fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } +} diff --git a/mover/brainsk/code/task2/faucetcoin/tests/faucetcoin_tests.move b/mover/brainsk/code/task2/faucetcoin/tests/faucetcoin_tests.move new file mode 100644 index 000000000..6a93a27fa --- /dev/null +++ b/mover/brainsk/code/task2/faucetcoin/tests/faucetcoin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucetcoin::faucetcoin_tests; +// uncomment this line to import the module +// use faucetcoin::faucetcoin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucetcoin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucetcoin::faucetcoin_tests::ENotImplemented)] +fun test_faucetcoin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/brainsk/code/task2/mycoin/Move.lock b/mover/brainsk/code/task2/mycoin/Move.lock new file mode 100644 index 000000000..b8e17a5ce --- /dev/null +++ b/mover/brainsk/code/task2/mycoin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1393B3A86BC22B7FE61E23DBB2EF7BE1A330BF07AB402600F7E7CFF6E9DC82F9" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x6c0e1b207808f4f2b225b262f30acf2c218be6ffb75d92f9cd7da91ef868db23" +latest-published-id = "0x6c0e1b207808f4f2b225b262f30acf2c218be6ffb75d92f9cd7da91ef868db23" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb" +latest-published-id = "0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb" +published-version = "1" diff --git a/mover/brainsk/code/task2/mycoin/Move.toml b/mover/brainsk/code/task2/mycoin/Move.toml new file mode 100644 index 000000000..e77f86f6a --- /dev/null +++ b/mover/brainsk/code/task2/mycoin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "mycoin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +mycoin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/brainsk/code/task2/mycoin/sources/mycoin.move b/mover/brainsk/code/task2/mycoin/sources/mycoin.move new file mode 100644 index 000000000..637f5d14c --- /dev/null +++ b/mover/brainsk/code/task2/mycoin/sources/mycoin.move @@ -0,0 +1,20 @@ +/// Module: mycoin +module mycoin::mycoin { + use sui::coin::{Self, Coin, TreasuryCap}; + + public struct MYCOIN has drop {} + + fun init(otw: MYCOIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency(otw, 2, b"MYCOIN", b"MyCoin", b"", option::none(), ctx); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury_cap, tx_context::sender(ctx)) + } + + public entry fun mint(treasury_cap: &mut TreasuryCap, amount: u64, recipient: address, ctx: &mut TxContext) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public entry fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } +} diff --git a/mover/brainsk/code/task2/mycoin/tests/mycoin_tests.move b/mover/brainsk/code/task2/mycoin/tests/mycoin_tests.move new file mode 100644 index 000000000..d12b2353d --- /dev/null +++ b/mover/brainsk/code/task2/mycoin/tests/mycoin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module mycoin::mycoin_tests; +// uncomment this line to import the module +// use mycoin::mycoin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_mycoin() { + // pass +} + +#[test, expected_failure(abort_code = ::mycoin::mycoin_tests::ENotImplemented)] +fun test_mycoin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/brainsk/code/task3/Makefile b/mover/brainsk/code/task3/Makefile new file mode 100644 index 000000000..9859cb607 --- /dev/null +++ b/mover/brainsk/code/task3/Makefile @@ -0,0 +1,7 @@ + + +mint: + sui client call --package 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d --module task3 --function mint --args "BrainNFT" "BrainNFT sui mainnet" "https://avatars.githubusercontent.com/u/155890963?s=400&u=cae07c1efe9f327be4b959f35adea823c2354bc9&v=4" + +transfer: + sui client call --package 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d --module task3 --function transfer --args 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 diff --git a/mover/brainsk/code/task3/Move.lock b/mover/brainsk/code/task3/Move.lock new file mode 100644 index 000000000..da51551ed --- /dev/null +++ b/mover/brainsk/code/task3/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "DEDE53BD567ECEDC2009BE853A86F47F6BDC3F1F03A6B00FAED274F07E74A18B" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d" +latest-published-id = "0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d" +published-version = "1" diff --git a/mover/brainsk/code/task3/Move.toml b/mover/brainsk/code/task3/Move.toml new file mode 100644 index 000000000..480be1592 --- /dev/null +++ b/mover/brainsk/code/task3/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task3" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task3 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/brainsk/code/task3/sources/task3.move b/mover/brainsk/code/task3/sources/task3.move new file mode 100644 index 000000000..35111288a --- /dev/null +++ b/mover/brainsk/code/task3/sources/task3.move @@ -0,0 +1,61 @@ +/// Module: task3 +module task3::task3 { + use sui::url::{Self, Url}; + use std::string::{Self, String}; + use sui::event; + + //event + public struct Miai has key, store { id: UID, name: String, description: String, url: Url} + public struct Burned has copy, drop { object_id: ID, destroyer: address, name: String} + public struct Minted has copy, drop { object_id: ID, creator: address, name: String} + + public fun get_name(nft: &Miai): &String { + &nft.name + } + + public fun get_description(nft: &Miai): &String { + &nft.description + } + + public fun get_url(nft: &Miai): &Url { + &nft.url + } + + //mint + public fun mint(name: vector, descriptrion: vector, url: vector,ctx: &mut TxContext) { + let sender = tx_context::sender(ctx); + let nft = Miai { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(descriptrion), + url: url::new_unsafe_from_bytes(url) + }; + event::emit(Minted { + object_id: object::id(&nft), + creator: sender, + name: nft.name + }); + transfer::public_transfer(nft, sender); + } + + //burn + public fun burn(nft: Miai, ctx: &mut TxContext) { + let Miai {id, name, description: _, url: _} = nft;event::emit( + Burned { + object_id: object::uid_to_inner(&id), + destroyer: tx_context::sender(ctx), + name:name, + } + ); + object::delete(id); + } + + //transfer + public fun transfer(nft: Miai, recipient: address) { + transfer::public_transfer(nft, recipient); + } + + public fun update_description(nft: &mut Miai, new_description: vector) { + nft.description = string::utf8(new_description); + } +} diff --git a/mover/brainsk/code/task3/tests/task3_tests.move b/mover/brainsk/code/task3/tests/task3_tests.move new file mode 100644 index 000000000..d128fbb0f --- /dev/null +++ b/mover/brainsk/code/task3/tests/task3_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task3::task3_tests; +// uncomment this line to import the module +// use task3::task3; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task3() { + // pass +} + +#[test, expected_failure(abort_code = ::task3::task3_tests::ENotImplemented)] +fun test_task3_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/brainsk/code/task4/Makefile b/mover/brainsk/code/task4/Makefile new file mode 100644 index 000000000..8b492ed9b --- /dev/null +++ b/mover/brainsk/code/task4/Makefile @@ -0,0 +1,5 @@ + +query: + sui client call --package 0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6 --module task4 --function query_prize --args 0x1439204a54be461586c088ced490ecdb74874d20efdcc808130b5d1bea304ecd +start_game: + sui client call --package 0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6 --module task4 --function start_game --args 0x1439204a54be461586c088ced490ecdb74874d20efdcc808130b5d1bea304ecd 8 0x9a5671fd2a300c700e410d2b37823b943efee8a470fadf40c14cc1bdd484369c diff --git a/mover/brainsk/code/task4/Move.lock b/mover/brainsk/code/task4/Move.lock new file mode 100644 index 000000000..2a91d7d82 --- /dev/null +++ b/mover/brainsk/code/task4/Move.lock @@ -0,0 +1,49 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "AE9016CD7391A4C668A0331A1F53A001C32DD709924ABFBB6F22843DAE89A682" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucetcoin", name = "faucetcoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucetcoin" +source = { local = "../task2/faucetcoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x08b514dd9efa92018cc695cd22d9f26f47e0e1137254e7e1ae27a54e852e1397" +latest-published-id = "0x08b514dd9efa92018cc695cd22d9f26f47e0e1137254e7e1ae27a54e852e1397" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6" +latest-published-id = "0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6" +published-version = "1" diff --git a/mover/brainsk/code/task4/Move.toml b/mover/brainsk/code/task4/Move.toml new file mode 100644 index 000000000..87f037215 --- /dev/null +++ b/mover/brainsk/code/task4/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task4" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +faucetcoin = { local = "../task2/faucetcoin" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task4 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/brainsk/code/task4/sources/task4.move b/mover/brainsk/code/task4/sources/task4.move new file mode 100644 index 000000000..c98697ebb --- /dev/null +++ b/mover/brainsk/code/task4/sources/task4.move @@ -0,0 +1,108 @@ +/// Module: task4 +module task4::task4 { + use sui::object::{Self, UID}; + use sui::balance::Balance; + use sui::coin::{Self, Coin}; + use sui::transfer::{transfer, share_object, public_transfer}; + use sui::tx_context::{Self, sender}; + use sui::bcs; + use faucetcoin::faucetcoin::FAUCETCOIN; + use std::debug::print; + use std::string::utf8; + + const ENotAllow: u64 = 0; + const EInvalidStake: u64 = 1; + const Rate: u64 = 2; + const MaxStake: u64 = 100000000000000000; + const MinStake: u64 = 10; + + // otw + public struct TASK4 has drop {} + + // 奖金池,管理员为brainsk + public struct PrizePool has key { + id: UID, + prize: Balance, + brainsk: address // github id + } + + // 用于创建、初始化奖金池,之后删除 + public struct PrizePoolCap has key { + id: UID + } + + // 创建Cap,并发送给brainsk + fun init(_otw: TASK4, ctx: &mut TxContext) { + let prize_pool_cap = PrizePoolCap { + id: object::new(ctx) + }; + transfer(prize_pool_cap, tx_context::sender(ctx)); + } + + // 用于创建奖金池,并注入初始奖金 + public entry fun initialize_pool(cap: PrizePoolCap, coin: Coin, ctx: &mut TxContext) { + let prize_pool = PrizePool { + id: object::new(ctx), + prize: coin.into_balance(), + brainsk: sender(ctx) + }; + share_object(prize_pool); + let PrizePoolCap { id } = cap; + object::delete(id); + } + + // 给奖金池注入更多奖金,任何人都有权限 + public entry fun deposit(pool: &mut PrizePool, coin: Coin) { + coin::put(&mut pool.prize, coin) + } + + // 在奖金池取出指定数量金额 + public entry fun withdraw(pool: &mut PrizePool, amount: u64, ctx: &mut TxContext) { + assert!(pool.brainsk == sender(ctx), ENotAllow); + let balance = pool.prize.split(amount); + let coin = coin::from_balance(balance, ctx); + public_transfer(coin, sender(ctx)); + } + + // 在奖金池取出所有奖金 + public fun withdraw_all(pool: &mut PrizePool, ctx: &mut TxContext) { + // 确保调用者是奖金池的拥有者 + assert!(pool.brainsk == sender(ctx), ENotAllow); + let balance = pool.prize.withdraw_all(); + let coin = coin::from_balance(balance, ctx); + // 由于已经确认了调用者是奖金池的拥有者,这里不需要再次检查 + public_transfer(coin, sender(ctx)); + } + + // 查询奖金池中剩余的金额 + public fun query_prize(pool: &mut PrizePool):u64 { + pool.prize.value() + } + + // 通过交易hash的方式获取随机数 + fun random_num(ctx: &mut TxContext): u8 { + let tx_digest = tx_context::digest(ctx); + let tx_digest_u64= bcs::peel_u8(&mut bcs::new(*tx_digest)); + let random_index: u8 = tx_digest_u64 % 3; + random_index + } + + // 开始游戏 + public entry fun start_game(pool: &mut PrizePool, geuss_number: u8, stake: Coin, ctx: &mut TxContext): bool { + let balance = stake.into_balance(); + let value = balance.value(); + let mut res = false; + assert!(value < MaxStake && value > MinStake, EInvalidStake); + pool.prize.join(balance); + let the_number = random_num(ctx); + print(&utf8(b"The number is:")); + print(&the_number); + if (geuss_number == the_number) { + let prize_value = pool.prize.split(Rate * value); + let prize_coin = coin::from_balance(prize_value, ctx); + public_transfer(prize_coin, sender(ctx)); + res = true; + }; + res + } +} \ No newline at end of file diff --git a/mover/brainsk/code/task4/tests/task4_tests.move b/mover/brainsk/code/task4/tests/task4_tests.move new file mode 100644 index 000000000..178d33b9e --- /dev/null +++ b/mover/brainsk/code/task4/tests/task4_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task4::task4_tests; +// uncomment this line to import the module +// use task4::task4; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task4() { + // pass +} + +#[test, expected_failure(abort_code = ::task4::task4_tests::ENotImplemented)] +fun test_task4_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/brainsk/code/task5/brainsk/Makefile b/mover/brainsk/code/task5/brainsk/Makefile new file mode 100644 index 000000000..e7cc798e5 --- /dev/null +++ b/mover/brainsk/code/task5/brainsk/Makefile @@ -0,0 +1,9 @@ + +deposit_mycoin: + sui client call --package 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 --module brainsk --function deposit_mycoin --args 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 0x05f29334ed951b1748ddd65e502056175a83582b077949ad4299670449f3a430 +deposit_faucetcoin: + sui client call --package 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 --module brainsk --function deposit_faucetcoin --args 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 0xa404c780507a31981dc02c3ed95cf63965f78a66c3963c6065d432ca7b71971f +faucte_swap_my: + sui client call --package 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 --module brainsk --function faucte_swap_my --args 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 0xc0b59caa882ecc24c77bb0848c893b0fbfdf419bc52b592329fdb634564a30cb +my_swap_faucet: + sui client call --package 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 --module brainsk --function my_swap_faucet --args 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 0xc77d969fdc7b17f7e4fcb609277772c58191ddb53208ce8ded44fab3626d28c5 diff --git a/mover/brainsk/code/task5/brainsk/Move.lock b/mover/brainsk/code/task5/brainsk/Move.lock new file mode 100644 index 000000000..8977d283f --- /dev/null +++ b/mover/brainsk/code/task5/brainsk/Move.lock @@ -0,0 +1,52 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "7E391F177F35AAA09364D249E82FC27924488069285497FF7FBD9FA8534BC6A6" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucetcoin", name = "faucetcoin" }, + { id = "mycoin", name = "mycoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucetcoin" +source = { local = "../../task2/faucetcoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "mycoin" +source = { local = "../../task2/mycoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264" +latest-published-id = "0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264" +published-version = "1" diff --git a/mover/brainsk/code/task5/brainsk/Move.toml b/mover/brainsk/code/task5/brainsk/Move.toml new file mode 100644 index 000000000..07a574803 --- /dev/null +++ b/mover/brainsk/code/task5/brainsk/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "brainsk" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +faucetcoin = { local = "../../task2/faucetcoin" } +mycoin = { local = "../../task2/mycoin" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +brainsk = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/brainsk/code/task5/brainsk/sources/brainsk.move b/mover/brainsk/code/task5/brainsk/sources/brainsk.move new file mode 100644 index 000000000..c70365505 --- /dev/null +++ b/mover/brainsk/code/task5/brainsk/sources/brainsk.move @@ -0,0 +1,76 @@ + +/// Module: brainsk +module brainsk::brainsk{ + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::transfer::{Self, transfer, share_object, public_transfer}; + use mycoin::mycoin::MYCOIN; + use faucetcoin::faucetcoin::FAUCETCOIN; + use sui::tx_context::sender; + + public struct BrainskSwapBank has key { + id: UID, + faucetcoin: Balance, + mycoin: Balance, + mc_prop: u64, + fc_prop: u64 + } + + public struct AdaminCap has key { + id: UID + } + + fun init(ctx: &mut TxContext) { + let bank = BrainskSwapBank { + id: object::new(ctx), + faucetcoin: balance::zero(), + mycoin: balance::zero(), + mc_prop: 1000, + fc_prop: 7300 + }; + share_object(bank); + let adamin_cap = AdaminCap { + id: object::new(ctx) + }; + transfer(adamin_cap, sender(ctx)); + } + + public entry fun deposit_mycoin(bank: &mut BrainskSwapBank, mycoin: Coin, _ctx: &mut TxContext) { + let balance = coin::into_balance(mycoin); + bank.mycoin.join(balance); + } + + public entry fun deposit_faucetcoin(bank: &mut BrainskSwapBank, faucetcoin: Coin, _ctx: &mut TxContext) { + let balance = coin::into_balance(faucetcoin); + bank.faucetcoin.join(balance); + } + + public entry fun withdraw_mycoin(_: &AdaminCap, bank: &mut BrainskSwapBank, amount: u64, ctx: &mut TxContext) { + let amount = bank.mycoin.split(amount); + let mycoin = coin::from_balance(amount, ctx); + public_transfer(mycoin, sender(ctx)); + } + + public entry fun withdraw_faucetcoin(_: &AdaminCap, bank: &mut BrainskSwapBank, amount: u64, ctx: &mut TxContext) { + let amount = bank.mycoin.split(amount); + let mycoin = coin::from_balance(amount, ctx); + public_transfer(mycoin, sender(ctx)); + } + + public entry fun faucte_swap_my(bank: &mut BrainskSwapBank, faucetcoin: Coin, ctx: &mut TxContext) { + let fc_balance = faucetcoin.into_balance(); + let fc_amt = fc_balance.value(); + let mc_amt = bank.mycoin.split(fc_amt * bank.mc_prop / bank.fc_prop); + bank.faucetcoin.join(fc_balance); + public_transfer(coin::from_balance(mc_amt, ctx), sender(ctx)); + } + + public entry fun my_swap_faucet(bank: &mut BrainskSwapBank, mycoin: Coin, ctx: &mut TxContext) { + let mc_balance = mycoin.into_balance(); + let mc_amt = mc_balance.value(); + let fc_amt = bank.faucetcoin.split(mc_amt * bank.fc_prop / bank.mc_prop); + bank.mycoin.join(mc_balance); + public_transfer(coin::from_balance(fc_amt, ctx), sender(ctx)); + } +} + diff --git a/mover/brainsk/code/task5/brainsk/tests/brainsk_tests.move b/mover/brainsk/code/task5/brainsk/tests/brainsk_tests.move new file mode 100644 index 000000000..3d5b48bd3 --- /dev/null +++ b/mover/brainsk/code/task5/brainsk/tests/brainsk_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module brainsk::brainsk_tests; +// uncomment this line to import the module +// use brainsk::brainsk; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_brainsk() { + // pass +} + +#[test, expected_failure(abort_code = ::brainsk::brainsk_tests::ENotImplemented)] +fun test_brainsk_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/brainsk/images/nft.png b/mover/brainsk/images/nft.png new file mode 100644 index 000000000..cc0e1adc7 Binary files /dev/null and b/mover/brainsk/images/nft.png differ diff --git a/mover/brainsk/images/scan.png b/mover/brainsk/images/scan.png new file mode 100644 index 000000000..c2faf3c5c Binary files /dev/null and b/mover/brainsk/images/scan.png differ diff --git a/mover/brainsk/images/sui-version-and-wallet-address.png b/mover/brainsk/images/sui-version-and-wallet-address.png new file mode 100644 index 000000000..c8caada15 Binary files /dev/null and b/mover/brainsk/images/sui-version-and-wallet-address.png differ diff --git a/mover/brainsk/notes/readme.md b/mover/brainsk/notes/readme.md new file mode 100644 index 000000000..c8c641efa --- /dev/null +++ b/mover/brainsk/notes/readme.md @@ -0,0 +1 @@ +- [] task1: ![task1](./task1.md) \ No newline at end of file diff --git a/mover/brainsk/notes/task1.md b/mover/brainsk/notes/task1.md new file mode 100644 index 000000000..55dea481c --- /dev/null +++ b/mover/brainsk/notes/task1.md @@ -0,0 +1,150 @@ +sui client publish --gas-budget 1000000000 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING task1 +Successfully verified dependencies on-chain against source. +Transaction Digest: E3WK5LzrmwiCmzByuJeuVcN8mXxVogi9h58tVM8yXQTx +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 1000000000 MIST │ +│ Gas Price: 1000 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x0288d67ab9003f18e1d3c2dda157624c6deeabb0d5f985e2f1f4143f3de9b74d │ +│ │ Version: 206232427 │ +│ │ Digest: 2UKqTxGnJFxdRhgUtMQmkocgCx7qy5VVwRyygrnBxcuN │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ vT9gbu4egUCRFx1+c8m/8DICi+MLzH+Gsw0mVQCeCk/BWjl6o82Erk3XWAClyn3cANb9TnoHY940ybC+PYcmBg== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: E3WK5LzrmwiCmzByuJeuVcN8mXxVogi9h58tVM8yXQTx │ +│ Status: Success │ +│ Executed Epoch: 545 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x542a0667adeade3a3e5304eba10c3d0ce19762107debd8c6f8a6a781d1a9c666 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: DD1B8ixn1Nn9mzhQnSSqzm6arwGrVdy5Sd4dRj149Mjx │ +│ └── │ +│ ┌── │ +│ │ ID: 0x589d1edc3897d5650ebe0fed42f96142c99093c4f68d6b06f8ce5ae95be5e72b │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: Cwt6koDNp3j4hWzq1J6q4VVnHkLzWPzVgFKAJVmVDE2R │ +│ └── │ +│ ┌── │ +│ │ ID: 0x649f4acee5d47ea606010f23b0f094512c829124104abd9f0fe751cf3c57ddb4 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: Ggyvnt1UA8ff6ThyQ65RL8anzhmDsKeZo6hwSSbKAKtU │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x0288d67ab9003f18e1d3c2dda157624c6deeabb0d5f985e2f1f4143f3de9b74d │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: Ekf6th5YsfdgW2voiSASLDFr897he51nKK2WubBqt8Cw │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x0288d67ab9003f18e1d3c2dda157624c6deeabb0d5f985e2f1f4143f3de9b74d │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: Ekf6th5YsfdgW2voiSASLDFr897he51nKK2WubBqt8Cw │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 8816000 MIST │ +│ Computation Cost: 1000000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 2VBiXoKJAfDeVgi8ntkra1wDszKN2diDdp8u1UiqM3i2 │ +│ 3RoxMpKxiw1uP5Xa9cKhkbDfdJ1ULK1PR73FcjVR2bcc │ +│ EFBpqYLusT6HSt1SmtemgaNjdtgFwB2RhaduRGQiiB5D │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x542a0667adeade3a3e5304eba10c3d0ce19762107debd8c6f8a6a781d1a9c666 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x649f4acee5d47ea606010f23b0f094512c829124104abd9f0fe751cf3c57ddb4::task1::Hello │ +│ │ Version: 206232428 │ +│ │ Digest: DD1B8ixn1Nn9mzhQnSSqzm6arwGrVdy5Sd4dRj149Mjx │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x589d1edc3897d5650ebe0fed42f96142c99093c4f68d6b06f8ce5ae95be5e72b │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 206232428 │ +│ │ Digest: Cwt6koDNp3j4hWzq1J6q4VVnHkLzWPzVgFKAJVmVDE2R │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x0288d67ab9003f18e1d3c2dda157624c6deeabb0d5f985e2f1f4143f3de9b74d │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 206232428 │ +│ │ Digest: Ekf6th5YsfdgW2voiSASLDFr897he51nKK2WubBqt8Cw │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x649f4acee5d47ea606010f23b0f094512c829124104abd9f0fe751cf3c57ddb4 │ +│ │ Version: 1 │ +│ │ Digest: Ggyvnt1UA8ff6ThyQ65RL8anzhmDsKeZo6hwSSbKAKtU │ +│ │ Modules: task1 │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -8837880 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/mover/brainsk/notes/task2.md b/mover/brainsk/notes/task2.md new file mode 100644 index 000000000..66a5dc837 --- /dev/null +++ b/mover/brainsk/notes/task2.md @@ -0,0 +1,675 @@ +mycoin +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING mycoin +Successfully verified dependencies on-chain against source. +Transaction Digest: 34D1qoKpwnerxfNLR8UqfnRpBnGiiV7B6kRxYv4fo7Z6 +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 1000000000 MIST │ +│ Gas Price: 1000 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xdb813b24b124e6daf1459fc5c10f978319f14329a99f0e7f82c43c0ae561f85e │ +│ │ Version: 206232427 │ +│ │ Digest: 51wgiv2Qe2YiQwPHd3BXHgwgsCdLdsAbYPc9H5X9MeMc │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ DYuazk+PvaJLAb8kYVDlv3eNbtZT8V1sfB2rDDUjXEpTUnDor6zzOrvybBMOaZ92XYyeku1WW82TcL4fn9w0CQ== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: 34D1qoKpwnerxfNLR8UqfnRpBnGiiV7B6kRxYv4fo7Z6 │ +│ Status: Success │ +│ Executed Epoch: 559 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x6c0e1b207808f4f2b225b262f30acf2c218be6ffb75d92f9cd7da91ef868db23 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: GBv9fhH9KHfiQHPgbew1XUpHGo3yAR8gL4itm1rYbCp8 │ +│ └── │ +│ ┌── │ +│ │ ID: 0xd41b2aec6a4c8ff42779d29dcdc21c664732274951bbf7e71a06d6c40dba20af │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: DgiodYCfRmY8FBaTwNtDPF3ZbC5UZPo1sauFVyjvCoKp │ +│ └── │ +│ ┌── │ +│ │ ID: 0xeaa96f29bf3e9a5474b1e5f3acf4cd154d29968c21dc45fde59e17fb7ad096dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: 64CRBmvv3q1ciLg5hBWo5bvudmSsQdACnpUYnJnKR5Pm │ +│ └── │ +│ ┌── │ +│ │ ID: 0xf60bd97027245f99b34859a6ad02ca89fe504f36de5f1e916b4de747965f17a1 │ +│ │ Owner: Immutable │ +│ │ Version: 206232428 │ +│ │ Digest: AL9qBr5CCX5qGZq5wyJc3hpVYqE6xwvSJ2Bkq8Q6bsLg │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xdb813b24b124e6daf1459fc5c10f978319f14329a99f0e7f82c43c0ae561f85e │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: Cd6W68drkLSkBaNsiFW9N15KNa1y6nVyhdFZqc6XpDSw │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xdb813b24b124e6daf1459fc5c10f978319f14329a99f0e7f82c43c0ae561f85e │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 206232428 │ +│ │ Digest: Cd6W68drkLSkBaNsiFW9N15KNa1y6nVyhdFZqc6XpDSw │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 13657200 MIST │ +│ Computation Cost: 1000000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ EFBpqYLusT6HSt1SmtemgaNjdtgFwB2RhaduRGQiiB5D │ +│ GMBJA2gEEvtwv1wGGT7ZEDkQdrmUTKaE4TeinNGQ2feC │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0xd41b2aec6a4c8ff42779d29dcdc21c664732274951bbf7e71a06d6c40dba20af │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 206232428 │ +│ │ Digest: DgiodYCfRmY8FBaTwNtDPF3ZbC5UZPo1sauFVyjvCoKp │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xeaa96f29bf3e9a5474b1e5f3acf4cd154d29968c21dc45fde59e17fb7ad096dc │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0x6c0e1b207808f4f2b225b262f30acf2c218be6ffb75d92f9cd7da91ef868db23::mycoin::MYCOIN> │ +│ │ Version: 206232428 │ +│ │ Digest: 64CRBmvv3q1ciLg5hBWo5bvudmSsQdACnpUYnJnKR5Pm │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xf60bd97027245f99b34859a6ad02ca89fe504f36de5f1e916b4de747965f17a1 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0x6c0e1b207808f4f2b225b262f30acf2c218be6ffb75d92f9cd7da91ef868db23::mycoin::MYCOIN> │ +│ │ Version: 206232428 │ +│ │ Digest: AL9qBr5CCX5qGZq5wyJc3hpVYqE6xwvSJ2Bkq8Q6bsLg │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xdb813b24b124e6daf1459fc5c10f978319f14329a99f0e7f82c43c0ae561f85e │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 206232428 │ +│ │ Digest: Cd6W68drkLSkBaNsiFW9N15KNa1y6nVyhdFZqc6XpDSw │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x6c0e1b207808f4f2b225b262f30acf2c218be6ffb75d92f9cd7da91ef868db23 │ +│ │ Version: 1 │ +│ │ Digest: GBv9fhH9KHfiQHPgbew1XUpHGo3yAR8gL4itm1rYbCp8 │ +│ │ Modules: mycoin │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -13679080 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + + + +---- +faucetcoin + +sui client publish --gas-budget 1000000000 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING faucetcoin +Successfully verified dependencies on-chain against source. +Transaction Digest: 9M6i3GCMspAou1UdhpKoZvL7xv4Zns95bTNAjsC3makP +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 1000000000 MIST │ +│ Gas Price: 1000 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xfbc1159ebe2b470a5e8bd42a02d8a668bf035c70b6196a28e2fbb1b07ca0dc2d │ +│ │ Version: 236170363 │ +│ │ Digest: 6WJcVhvvUPuoqF5vY3jVT7UnP1DxBT9yoqK7JAVbAJSc │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ +7pF1NcX1i0YHG5Mqyb+XUCvXwI+dZMWV4Vga+8VFuAbxG7l+D4IYfc+sgV0nwm6iIxcoR8+uARR5vU75YBDCg== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: 9M6i3GCMspAou1UdhpKoZvL7xv4Zns95bTNAjsC3makP │ +│ Status: Success │ +│ Executed Epoch: 559 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x168d6ca257ae1f954f15f72b1cea96e7d5a8c72468f35d0b5c639d2cb0d4de5a │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: 6NEDRqad8G3nUVYnNEXNQgiT8shWt1pyirax9g6RxxM7 │ +│ └── │ +│ ┌── │ +│ │ ID: 0x260b681d08243477026042fc59f651da1f0a5f0c4dc9d352c95ccaa5943668bd │ +│ │ Owner: Shared( 236170364 ) │ +│ │ Version: 236170364 │ +│ │ Digest: AD1dvcWK755i86cq9dufhUjqcpxqLkzNkjHeD14wNKmL │ +│ └── │ +│ ┌── │ +│ │ ID: 0x69a370c22d8c56102f9442d5478948f827ca16e894296b7c5594448f591bf589 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 236170364 │ +│ │ Digest: Wk69meYorQi3mfcm7wWKPF1YRp7ZgkuSQTNjYEnmDFf │ +│ └── │ +│ ┌── │ +│ │ ID: 0xdc61625fa18d5af664abd6af3b3bfbfdc4b4f400eab5b2306e1916bd767514f1 │ +│ │ Owner: Immutable │ +│ │ Version: 236170364 │ +│ │ Digest: HNSc6deV5o6zT3NvMuDEjgvxQW6tLFGXL9fF2kQotnUg │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xfbc1159ebe2b470a5e8bd42a02d8a668bf035c70b6196a28e2fbb1b07ca0dc2d │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 236170364 │ +│ │ Digest: H64QYfquUnciqQmujgEb6Ewh3uDYJoNeWzL5qffhQ1TL │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xfbc1159ebe2b470a5e8bd42a02d8a668bf035c70b6196a28e2fbb1b07ca0dc2d │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 236170364 │ +│ │ Digest: H64QYfquUnciqQmujgEb6Ewh3uDYJoNeWzL5qffhQ1TL │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 13870000 MIST │ +│ Computation Cost: 1000000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ GMBJA2gEEvtwv1wGGT7ZEDkQdrmUTKaE4TeinNGQ2feC │ +│ JBFNV6ETUvkyuVZax4NTRCudsNjgMsEJ9YQc6ZK7QutG │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x260b681d08243477026042fc59f651da1f0a5f0c4dc9d352c95ccaa5943668bd │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Shared( 236170364 ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0x168d6ca257ae1f954f15f72b1cea96e7d5a8c72468f35d0b5c639d2cb0d4de5a::faucetcoin::FAUCETCOIN> │ +│ │ Version: 236170364 │ +│ │ Digest: AD1dvcWK755i86cq9dufhUjqcpxqLkzNkjHeD14wNKmL │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x69a370c22d8c56102f9442d5478948f827ca16e894296b7c5594448f591bf589 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 236170364 │ +│ │ Digest: Wk69meYorQi3mfcm7wWKPF1YRp7ZgkuSQTNjYEnmDFf │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xdc61625fa18d5af664abd6af3b3bfbfdc4b4f400eab5b2306e1916bd767514f1 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0x168d6ca257ae1f954f15f72b1cea96e7d5a8c72468f35d0b5c639d2cb0d4de5a::faucetcoin::FAUCETCOIN> │ +│ │ Version: 236170364 │ +│ │ Digest: HNSc6deV5o6zT3NvMuDEjgvxQW6tLFGXL9fF2kQotnUg │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xfbc1159ebe2b470a5e8bd42a02d8a668bf035c70b6196a28e2fbb1b07ca0dc2d │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 236170364 │ +│ │ Digest: H64QYfquUnciqQmujgEb6Ewh3uDYJoNeWzL5qffhQ1TL │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x168d6ca257ae1f954f15f72b1cea96e7d5a8c72468f35d0b5c639d2cb0d4de5a │ +│ │ Version: 1 │ +│ │ Digest: 6NEDRqad8G3nUVYnNEXNQgiT8shWt1pyirax9g6RxxM7 │ +│ │ Modules: faucetcoin │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -13891880 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + + + +mainnet +sui client publish +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING mycoin +Successfully verified dependencies on-chain against source. +Transaction Digest: 2eAquiKg3vGPAmS6khNTttxiYgpLSnKGSMLqWQorRqui +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 15157200 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Version: 416792393 │ +│ │ Digest: 4sSnSSAzyFjt5D26tZWnXVsarip8PnLLypv53CpCvTWc │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ gVH77czyn1E/U7lwan1vlepbeo6Nb+N9ECPowsUhH6f3UejNWgCMWwpA9sQeYoxo5hE1CdQiM/QQQfvwEf2LBQ== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: 2eAquiKg3vGPAmS6khNTttxiYgpLSnKGSMLqWQorRqui │ +│ Status: Success │ +│ Executed Epoch: 587 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x464978dd1f5920b4b90c84eead5248099c0f7e63340e417065eb0ed722d56203 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792394 │ +│ │ Digest: Hcb648i3nvJqtPSGBMkE1vNdvncASFFatHEm3k93LiyB │ +│ └── │ +│ ┌── │ +│ │ ID: 0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: A7ofjWqtQtU4AscDtb1XNEh6RKoZpno54sZXzpcELxJz │ +│ └── │ +│ ┌── │ +│ │ ID: 0x81df8fd9707dcba58ab9b72c70b2b753b9a20afda188c8fa391858c6247257b7 │ +│ │ Owner: Immutable │ +│ │ Version: 416792394 │ +│ │ Digest: CRaUDn549nwQbpxxaT3LoXVs7PSiaBu1KJSjEr9SfqEk │ +│ └── │ +│ ┌── │ +│ │ ID: 0xc512399cc766e0a483397e9797650021ceac44271f3e8a944cf26dc47f784f8f │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792394 │ +│ │ Digest: GLurcQ5fdJqGJ7tgFDNHZuJnyb4rKuj49379qDVTEvNr │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792394 │ +│ │ Digest: GVfVXRKZw1akdGFqWQyBoyjdJ1DcJrzjuzEpYTPNE9Sr │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792394 │ +│ │ Digest: GVfVXRKZw1akdGFqWQyBoyjdJ1DcJrzjuzEpYTPNE9Sr │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 13657200 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 7igmhbq435qaVsRubRDycZ63qY84JFqYs1m3hZvMSyox │ +│ FPQJirZF6XaBX9wcmQbPUPPX9CzbpymnF3c8vtnpHqWt │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x464978dd1f5920b4b90c84eead5248099c0f7e63340e417065eb0ed722d56203 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb::mycoin::MYCOIN> │ +│ │ Version: 416792394 │ +│ │ Digest: Hcb648i3nvJqtPSGBMkE1vNdvncASFFatHEm3k93LiyB │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x81df8fd9707dcba58ab9b72c70b2b753b9a20afda188c8fa391858c6247257b7 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb::mycoin::MYCOIN> │ +│ │ Version: 416792394 │ +│ │ Digest: CRaUDn549nwQbpxxaT3LoXVs7PSiaBu1KJSjEr9SfqEk │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xc512399cc766e0a483397e9797650021ceac44271f3e8a944cf26dc47f784f8f │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 416792394 │ +│ │ Digest: GLurcQ5fdJqGJ7tgFDNHZuJnyb4rKuj49379qDVTEvNr │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 416792394 │ +│ │ Digest: GVfVXRKZw1akdGFqWQyBoyjdJ1DcJrzjuzEpYTPNE9Sr │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb │ +│ │ Version: 1 │ +│ │ Digest: A7ofjWqtQtU4AscDtb1XNEh6RKoZpno54sZXzpcELxJz │ +│ │ Modules: mycoin │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -13429080 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + +faucetcoin + +sui client publish +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +remote: Enumerating objects: 835, done. +remote: Counting objects: 100% (831/831), done. +remote: Compressing objects: 100% (233/233), done. +remote: Total 835 (delta 600), reused 817 (delta 593), pack-reused 4 (from 1) +接收对象中: 100% (835/835), 1.73 MiB | 4.76 MiB/s, 完成. +处理 delta 中: 100% (600/600), 完成 127 个本地对象. +来自 ssh://github.com/MystenLabs/sui ++ b72e20de01...f38fcfa827 gh-pages -> origin/gh-pages (强制更新) + INCLUDING DEPENDENCY Sui + INCLUDING DEPENDENCY MoveStdlib + BUILDING faucetcoin + Successfully verified dependencies on-chain against source. + Transaction Digest: AwbRrs46HSRGTA4cveqF8JceQFJodqijT4QhjFtntVj3 + ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ + │ Transaction Data │ + ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ + │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ + │ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ + │ Gas Budget: 15370000 MIST │ + │ Gas Price: 750 MIST │ + │ Gas Payment: │ + │ ┌── │ + │ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ + │ │ Version: 416792395 │ + │ │ Digest: ByP74h6T323ZFz9e3MfvFyJ1V2jptLpyWbujoPDkoFVo │ + │ └── │ + │ │ + │ Transaction Kind: Programmable │ + │ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ + │ │ Input Objects │ │ + │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ + │ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ + │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ + │ ╭─────────────────────────────────────────────────────────────────────────╮ │ + │ │ Commands │ │ + │ ├─────────────────────────────────────────────────────────────────────────┤ │ + │ │ 0 Publish: │ │ + │ │ ┌ │ │ + │ │ │ Dependencies: │ │ + │ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ + │ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ + │ │ └ │ │ + │ │ │ │ + │ │ 1 TransferObjects: │ │ + │ │ ┌ │ │ + │ │ │ Arguments: │ │ + │ │ │ Result 0 │ │ + │ │ │ Address: Input 0 │ │ + │ │ └ │ │ + │ ╰─────────────────────────────────────────────────────────────────────────╯ │ + │ │ + │ Signatures: │ + │ Sc2yUM2YTD0lPi1S1LQGcu7OvIjXiRGWEZZwnyk1BxsCOKyFO4kMjWlCtziofzYKx/Vr5uCd5UrITi2jcOf0CA== │ + │ │ + ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ + ╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ + │ Transaction Effects │ + ├───────────────────────────────────────────────────────────────────────────────────────────────────┤ + │ Digest: AwbRrs46HSRGTA4cveqF8JceQFJodqijT4QhjFtntVj3 │ + │ Status: Success │ + │ Executed Epoch: 587 │ + │ │ + │ Created Objects: │ + │ ┌── │ + │ │ ID: 0x0f687ed3c51662e2465ca4e9566ce1757fba74cb24c2f8e430707cdcb2cb2447 │ + │ │ Owner: Shared( 416792396 ) │ + │ │ Version: 416792396 │ + │ │ Digest: 5XYGXbADErxZTRrJFKQMR1fhNuivTVcGvRRhEPz9hmev │ + │ └── │ + │ ┌── │ + │ │ ID: 0x24e5874cd709a5dd5d9554d0fb0af5052c236fa0656d56c4827c24cf30ac996d │ + │ │ Owner: Immutable │ + │ │ Version: 416792396 │ + │ │ Digest: CYnYUcEHw1NSHCsRN7HeN1ja8d56Q7fCnHxKSUpTBHmM │ + │ └── │ + │ ┌── │ + │ │ ID: 0x87579979fe91a84133426858643807376d7f4cd4b92cd9f47af967d670b303fa │ + │ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ + │ │ Version: 416792396 │ + │ │ Digest: 2a4mSpTp18XWmtYdeqy8Fy6F9kRCKxPeohY1btgkpLmM │ + │ └── │ + │ ┌── │ + │ │ ID: 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd │ + │ │ Owner: Immutable │ + │ │ Version: 1 │ + │ │ Digest: EgidvE3g9q5WGV2sNfQPiDdMa4pncm7SyhLMrbRL7hrq │ + │ └── │ + │ Mutated Objects: │ + │ ┌── │ + │ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ + │ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ + │ │ Version: 416792396 │ + │ │ Digest: DsfLHADg4cHuNwboWYDE1UdGtjCZamRBB3PybaBwnxib │ + │ └── │ + │ Gas Object: │ + │ ┌── │ + │ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ + │ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ + │ │ Version: 416792396 │ + │ │ Digest: DsfLHADg4cHuNwboWYDE1UdGtjCZamRBB3PybaBwnxib │ + │ └── │ + │ Gas Cost Summary: │ + │ Storage Cost: 13870000 MIST │ + │ Computation Cost: 750000 MIST │ + │ Storage Rebate: 978120 MIST │ + │ Non-refundable Storage Fee: 9880 MIST │ + │ │ + │ Transaction Dependencies: │ + │ FPQJirZF6XaBX9wcmQbPUPPX9CzbpymnF3c8vtnpHqWt │ + │ HxhunJdjb5Z6YVq2sR6Zg5o89qMNuMm5hYWA23rUCu9Y │ + ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + ╭─────────────────────────────╮ + │ No transaction block events │ + ╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x0f687ed3c51662e2465ca4e9566ce1757fba74cb24c2f8e430707cdcb2cb2447 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Shared( 416792396 ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd::faucetcoin::FAUCETCOIN> │ +│ │ Version: 416792396 │ +│ │ Digest: 5XYGXbADErxZTRrJFKQMR1fhNuivTVcGvRRhEPz9hmev │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x24e5874cd709a5dd5d9554d0fb0af5052c236fa0656d56c4827c24cf30ac996d │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd::faucetcoin::FAUCETCOIN> │ +│ │ Version: 416792396 │ +│ │ Digest: CYnYUcEHw1NSHCsRN7HeN1ja8d56Q7fCnHxKSUpTBHmM │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x87579979fe91a84133426858643807376d7f4cd4b92cd9f47af967d670b303fa │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 416792396 │ +│ │ Digest: 2a4mSpTp18XWmtYdeqy8Fy6F9kRCKxPeohY1btgkpLmM │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 416792396 │ +│ │ Digest: DsfLHADg4cHuNwboWYDE1UdGtjCZamRBB3PybaBwnxib │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd │ +│ │ Version: 1 │ +│ │ Digest: EgidvE3g9q5WGV2sNfQPiDdMa4pncm7SyhLMrbRL7hrq │ +│ │ Modules: faucetcoin │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -13641880 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ \ No newline at end of file diff --git a/mover/brainsk/notes/task3.md b/mover/brainsk/notes/task3.md new file mode 100644 index 000000000..5c3a62073 --- /dev/null +++ b/mover/brainsk/notes/task3.md @@ -0,0 +1,388 @@ +sui client publish +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING task3 +Please report feedback on the linter warnings at https://forums.sui.io + +Successfully verified dependencies on-chain against source. +Transaction Digest: F5SvBVshGy694GgWWoido9YeARK2Sh6fFWjj5uidc6AK +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 13401600 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Version: 416792399 │ +│ │ Digest: CcFxTLcXSgq1oyTNh3rsJH5cQD9Fg89SBg3vdiMQsuA2 │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ 0PIaxRULk2tVXraBxLvfVS3m0mglZFgIKAFwqBLbMYs03Ww2GVm1/O45CYh60Ve6PzlxN/lsNMTZSM6m2KdQAw== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: F5SvBVshGy694GgWWoido9YeARK2Sh6fFWjj5uidc6AK │ +│ Status: Success │ +│ Executed Epoch: 587 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: AXqEvTo3SwGxmR3uNwzBNUWezoD53VtTQUifw23PAaVH │ +│ └── │ +│ ┌── │ +│ │ ID: 0xf749478757f4c49882c75a5de44fd58fe26eb955e83eb017096ca82cf2bff205 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792400 │ +│ │ Digest: B9ukaEQ2Cv6Lf2dJP5ghxSbU2VhcUtgTamdzeAuRU5Kv │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792400 │ +│ │ Digest: Byk9rqiknnbEPyVvzjTCYCtz7rSAdngg74z5nFT5s2wC │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792400 │ +│ │ Digest: Byk9rqiknnbEPyVvzjTCYCtz7rSAdngg74z5nFT5s2wC │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 11901600 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ FPQJirZF6XaBX9wcmQbPUPPX9CzbpymnF3c8vtnpHqWt │ +│ GKFKMYFRakcGNLEjqQR2TvekV4AGFPyhjhu9A6hwGBvr │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0xf749478757f4c49882c75a5de44fd58fe26eb955e83eb017096ca82cf2bff205 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 416792400 │ +│ │ Digest: B9ukaEQ2Cv6Lf2dJP5ghxSbU2VhcUtgTamdzeAuRU5Kv │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 416792400 │ +│ │ Digest: Byk9rqiknnbEPyVvzjTCYCtz7rSAdngg74z5nFT5s2wC │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d │ +│ │ Version: 1 │ +│ │ Digest: AXqEvTo3SwGxmR3uNwzBNUWezoD53VtTQUifw23PAaVH │ +│ │ Modules: task3 │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -11673480 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + +make mint +sui client call --package 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d --module task3 --function mint --args "BrainNFT" "BrainNFT sui mainnet" "https://avatars.githubusercontent.com/u/155890963?s=400&u=cae07c1efe9f327be4b959f35adea823c2354bc9&v=4" +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +Transaction Digest: 9N8MADLEMf3bRAHSaaKqBKN3hsuCwq4ey9QH2w9PZjzp +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 4760400 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Version: 416792401 │ +│ │ Digest: CZf1BXhd1ZM4k8Ye8M7QYn9MhpDMNTDJdghzigxssLNM │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: vector, Value: "BrainNFT" │ │ +│ │ 1 Pure Arg: Type: vector, Value: "BrainNFT sui mainnet" │ │ +│ │ 2 Pure Arg: Type: vector, Value: "https://avatars.githubusercontent.com/u/155890963?s=400&u=cae07c1efe9f327be4b959f35adea823c2354bc9&v=4" │ │ +│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: mint │ │ +│ │ │ Module: task3 │ │ +│ │ │ Package: 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ │ Input 2 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ 0ihrf/kkM5RtXUabIkL4u1SUzbe5ivcJvJ1Mls9tQkbBb8Lfm0gAQpAw1GST/f1S5dSKIe2Na5AKDbA6sFjXDg== │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: 9N8MADLEMf3bRAHSaaKqBKN3hsuCwq4ey9QH2w9PZjzp │ +│ Status: Success │ +│ Executed Epoch: 587 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792402 │ +│ │ Digest: GpfNv9o2jS4FrfMzfapPZe4AAhzkvuRp3EoGueKwXPG2 │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792402 │ +│ │ Digest: GEhnFuZZseD2PZqsWtB9XZ31Qu3c2XrBM6NipcwAfCST │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792402 │ +│ │ Digest: GEhnFuZZseD2PZqsWtB9XZ31Qu3c2XrBM6NipcwAfCST │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 3260400 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 9hxSYLtSrnnJdtti46r5S9zTrzQCySBewSSLjh2WqEvc │ +│ F5SvBVshGy694GgWWoido9YeARK2Sh6fFWjj5uidc6AK │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Block Events │ +├────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ EventID: 9N8MADLEMf3bRAHSaaKqBKN3hsuCwq4ey9QH2w9PZjzp:0 │ +│ │ PackageID: 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d │ +│ │ Transaction Module: task3 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ EventType: 0x3defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d::task3::Minted │ +│ │ ParsedJSON: │ +│ │ ┌───────────┬────────────────────────────────────────────────────────────────────┐ │ +│ │ │ creator │ 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ │ +│ │ ├───────────┼────────────────────────────────────────────────────────────────────┤ │ +│ │ │ name │ BrainNFT │ │ +│ │ ├───────────┼────────────────────────────────────────────────────────────────────┤ │ +│ │ │ object_id │ 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 │ │ +│ │ └───────────┴────────────────────────────────────────────────────────────────────┘ │ +│ └── │ +╰────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x3defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d::task3::Miai │ +│ │ Version: 416792402 │ +│ │ Digest: GpfNv9o2jS4FrfMzfapPZe4AAhzkvuRp3EoGueKwXPG2 │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 416792402 │ +│ │ Digest: GEhnFuZZseD2PZqsWtB9XZ31Qu3c2XrBM6NipcwAfCST │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -3032280 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + + + +make transfer +sui client call --package 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d --module task3 --function transfer --args 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +Transaction Digest: 9TidEfi5awA7a8BwvkvhHguFkmR2ZBVCHT2FRLacVcrq +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 2510724 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Version: 416792402 │ +│ │ Digest: GEhnFuZZseD2PZqsWtB9XZ31Qu3c2XrBM6NipcwAfCST │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Imm/Owned Object ID: 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 │ │ +│ │ 1 Pure Arg: Type: address, Value: "0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: transfer │ │ +│ │ │ Module: task3 │ │ +│ │ │ Package: 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ F+Ow/2klvBXDriZX4osla/xnkLWod+wcm1UwXf9rm8wA4FG12kVKB69MCkjeYICxP8iaIngAfWwfG1v4N2fbCw== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: 9TidEfi5awA7a8BwvkvhHguFkmR2ZBVCHT2FRLacVcrq │ +│ Status: Success │ +│ Executed Epoch: 587 │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792403 │ +│ │ Digest: 7pKNhtqpvdZrQK7UgCVhFEcsdNJgMvJZKn833dXUWCjZ │ +│ └── │ +│ ┌── │ +│ │ ID: 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 │ +│ │ Owner: Account Address ( 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 ) │ +│ │ Version: 416792403 │ +│ │ Digest: FAFY5FCmE5yhVVNG5KdraT4MnwxkrUCuhvuCVGy6nV6v │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792403 │ +│ │ Digest: 7pKNhtqpvdZrQK7UgCVhFEcsdNJgMvJZKn833dXUWCjZ │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 3260400 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 3227796 MIST │ +│ Non-refundable Storage Fee: 32604 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 9N8MADLEMf3bRAHSaaKqBKN3hsuCwq4ey9QH2w9PZjzp │ +│ F5SvBVshGy694GgWWoido9YeARK2Sh6fFWjj5uidc6AK │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 416792403 │ +│ │ Digest: 7pKNhtqpvdZrQK7UgCVhFEcsdNJgMvJZKn833dXUWCjZ │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 ) │ +│ │ ObjectType: 0x3defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d::task3::Miai │ +│ │ Version: 416792403 │ +│ │ Digest: FAFY5FCmE5yhVVNG5KdraT4MnwxkrUCuhvuCVGy6nV6v │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -782604 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/mover/brainsk/notes/task4.md b/mover/brainsk/notes/task4.md new file mode 100644 index 000000000..5843c5e5c --- /dev/null +++ b/mover/brainsk/notes/task4.md @@ -0,0 +1,419 @@ +sui client publish +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +remote: Enumerating objects: 1, done. +remote: Counting objects: 100% (1/1), done. +remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) +展开对象中: 100% (1/1), 1.17 KiB | 1.17 MiB/s, 完成. +来自 ssh://github.com/MystenLabs/sui + e1a85c2418..2542d8e47d main -> origin/main +INCLUDING DEPENDENCY faucetcoin +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING task4 +warning[W02021]: duplicate alias + ┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:3:23 + │ +3 │ use sui::object::{Self, UID}; + │ ^^^^ Unnecessary alias 'object' for module 'sui::object'. This alias is provided by default + │ + = This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[W02021]: duplicate alias + ┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:3:29 + │ +3 │ use sui::object::{Self, UID}; + │ ^^^ Unnecessary alias 'UID' for module member 'sui::object::UID'. This alias is provided by default + │ + = This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[W02021]: duplicate alias + ┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:7:27 + │ +7 │ use sui::tx_context::{Self, sender}; + │ ^^^^ Unnecessary alias 'tx_context' for module 'sui::tx_context'. This alias is provided by default + │ + = This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[Lint W99001]: non-composable transfer to sender + ┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:74:9 + │ +68 │ public fun withdraw_all(pool: &mut PrizePool, ctx: &mut TxContext) { + │ ------------ Returning an object from a function, allows a caller to use the object and enables composability via programmable transactions. + · +74 │ public_transfer(coin, sender(ctx)); + │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + │ │ │ + │ │ Transaction sender address coming from here + │ Transfer of an object to transaction sender address + │ + = This warning can be suppressed with '#[allow(lint(self_transfer))]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +Please report feedback on the linter warnings at https://forums.sui.io + +Successfully verified dependencies on-chain against source. +Transaction Digest: C7rqxhWHnuifMmoRAX1v7Uie6JjP4GzsFkh2xUZJQA9e +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 19717200 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Version: 416792403 │ +│ │ Digest: 7pKNhtqpvdZrQK7UgCVhFEcsdNJgMvJZKn833dXUWCjZ │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ │ 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ UMFlWeRr0k9oa3+LYk2yNjCMw3UnU20q3Qlk7P/G+2s05sypI/eRO90R+7aF8KNX3drBZf1RYUd0UjsSYY+7Cw== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: C7rqxhWHnuifMmoRAX1v7Uie6JjP4GzsFkh2xUZJQA9e │ +│ Status: Success │ +│ Executed Epoch: 588 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x643f02eef5ff8a872309f1647b3ddbba4d3106885d48873af08f2504c8d1c59a │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792404 │ +│ │ Digest: Ac8sRXMP9fHTLL6Msz6ws9jXoYthh23WcUJjJbfDwX7b │ +│ └── │ +│ ┌── │ +│ │ ID: 0xdfe442aa11b54567d792481c88ee024ccc385e5df84d36b5b86ba4b211fa6908 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792404 │ +│ │ Digest: 5u4ZYFAX8Tm1EPGmRkR5r25g1DoY3UKTykSSoLn61SSJ │ +│ └── │ +│ ┌── │ +│ │ ID: 0xef7100c6cd8ca6ae82c927385b10f10d839eee3fbd533adb887866a72902a1f6 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: DQU7ZAi52FXPTECAAwbWc6bTAkXJ1j2gQnMaUdcL2LPT │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792404 │ +│ │ Digest: J67ayKVGtbtMVdw8yDwzsVUXadWyMotqQVFVR7Zm3MNQ │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 416792404 │ +│ │ Digest: J67ayKVGtbtMVdw8yDwzsVUXadWyMotqQVFVR7Zm3MNQ │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 18217200 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 9TidEfi5awA7a8BwvkvhHguFkmR2ZBVCHT2FRLacVcrq │ +│ AwbRrs46HSRGTA4cveqF8JceQFJodqijT4QhjFtntVj3 │ +│ FPQJirZF6XaBX9wcmQbPUPPX9CzbpymnF3c8vtnpHqWt │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x643f02eef5ff8a872309f1647b3ddbba4d3106885d48873af08f2504c8d1c59a │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 416792404 │ +│ │ Digest: Ac8sRXMP9fHTLL6Msz6ws9jXoYthh23WcUJjJbfDwX7b │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xdfe442aa11b54567d792481c88ee024ccc385e5df84d36b5b86ba4b211fa6908 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0xef7100c6cd8ca6ae82c927385b10f10d839eee3fbd533adb887866a72902a1f6::task4::PrizePoolCap │ +│ │ Version: 416792404 │ +│ │ Digest: 5u4ZYFAX8Tm1EPGmRkR5r25g1DoY3UKTykSSoLn61SSJ │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x7b3cea15957015caddf167891d7fd31bff6c164623475265c99c196e4cec71df │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 416792404 │ +│ │ Digest: J67ayKVGtbtMVdw8yDwzsVUXadWyMotqQVFVR7Zm3MNQ │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0xef7100c6cd8ca6ae82c927385b10f10d839eee3fbd533adb887866a72902a1f6 │ +│ │ Version: 1 │ +│ │ Digest: DQU7ZAi52FXPTECAAwbWc6bTAkXJ1j2gQnMaUdcL2LPT │ +│ │ Modules: task4 │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -17989080 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + + + + + +---------------- + + + + + +sui client publish +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git +remote: Enumerating objects: 6, done. +remote: Counting objects: 100% (6/6), done. +remote: Total 6 (delta 5), reused 6 (delta 5), pack-reused 0 (from 0) +展开对象中: 100% (6/6), 1.01 KiB | 172.00 KiB/s, 完成. +来自 ssh://github.com/MystenLabs/sui +* [新分支] pat/rosetta-performance-fix -> origin/pat/rosetta-performance-fix + INCLUDING DEPENDENCY faucetcoin + INCLUDING DEPENDENCY Sui + INCLUDING DEPENDENCY MoveStdlib + BUILDING task4 + warning[W02021]: duplicate alias + ┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:3:23 + │ + 3 │ use sui::object::{Self, UID}; + │ ^^^^ Unnecessary alias 'object' for module 'sui::object'. This alias is provided by default + │ + = This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[W02021]: duplicate alias +┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:3:29 +│ +3 │ use sui::object::{Self, UID}; +│ ^^^ Unnecessary alias 'UID' for module member 'sui::object::UID'. This alias is provided by default +│ += This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[W02021]: duplicate alias +┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:7:27 +│ +7 │ use sui::tx_context::{Self, sender}; +│ ^^^^ Unnecessary alias 'tx_context' for module 'sui::tx_context'. This alias is provided by default +│ += This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[Lint W99001]: non-composable transfer to sender +┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:74:9 +│ +68 │ public fun withdraw_all(pool: &mut PrizePool, ctx: &mut TxContext) { +│ ------------ Returning an object from a function, allows a caller to use the object and enables composability via programmable transactions. +· +74 │ public_transfer(coin, sender(ctx)); +│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +│ │ │ +│ │ Transaction sender address coming from here +│ Transfer of an object to transaction sender address +│ += This warning can be suppressed with '#[allow(lint(self_transfer))]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[W09014]: unused mutable reference '&mut' parameter +┌─ /Users/tianming/Documents/project/code/rustlang/letsmove/mover/brainsk/code/task4/sources/task4.move:83:25 +│ +83 │ fun random_num(ctx: &mut TxContext): u8 { +│ --- ^^^^^^^^^^^^^^ Mutable reference is never used mutably, consider switching to an immutable reference '&' instead +│ │ +│ For parameters, this can be silenced by prefixing the name with an underscore, e.g. '_ctx' +│ += This warning can be suppressed with '#[allow(unused_mut_parameter)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +Please report feedback on the linter warnings at https://forums.sui.io + +Successfully verified dependencies on-chain against source. +Transaction Digest: akb98XSbYBXmToZ1h2KCuBBzS8w8sgGwHdhETvwZoac +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 19648800 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Version: 422681842 │ +│ │ Digest: 4KWJShettCwqTdJKzdAVvRu7hhirVE6YVZMhnhzDF5aY │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ │ 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ CvOmIMGFRqEzIx/UHRBkpOYK68XIFx2cRriSCnI88vmlybuTD3oy0uIjzJtkILnBiQl7tU4+fI6BAv99kj1cCA== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: akb98XSbYBXmToZ1h2KCuBBzS8w8sgGwHdhETvwZoac │ +│ Status: Success │ +│ Executed Epoch: 589 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0xa112e6f57983116763123aacd0fdaa0e3c4a3f882abb2e632d30ae1342ef2806 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681843 │ +│ │ Digest: CHsKkU85tTb73vYkovX5wDRHa1BroSKRfVh3WWKe2SEe │ +│ └── │ +│ ┌── │ +│ │ ID: 0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: DgihjbQgchYnAanMbjtx1dVk1ZqerUKPwztixWW5juZv │ +│ └── │ +│ ┌── │ +│ │ ID: 0xd8a19111d280a015a6f93e257be21af8c912708014b67a30b51dd78266ea994c │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681843 │ +│ │ Digest: H5esvEQgBv4XikaDpVthz6cT6G8t7MfSxK9XJdVdV3hA │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681843 │ +│ │ Digest: GF4SRApXykDPkELGq3s2TE7JpnYKNSRj5pycedz1Bw8w │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681843 │ +│ │ Digest: GF4SRApXykDPkELGq3s2TE7JpnYKNSRj5pycedz1Bw8w │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 18148800 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 5JuUZiPE5h23bMjTnwx74k5vgTcjBbY3fDGY6VtY3rxX │ +│ AwbRrs46HSRGTA4cveqF8JceQFJodqijT4QhjFtntVj3 │ +│ FPQJirZF6XaBX9wcmQbPUPPX9CzbpymnF3c8vtnpHqWt │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0xa112e6f57983116763123aacd0fdaa0e3c4a3f882abb2e632d30ae1342ef2806 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 422681843 │ +│ │ Digest: CHsKkU85tTb73vYkovX5wDRHa1BroSKRfVh3WWKe2SEe │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xd8a19111d280a015a6f93e257be21af8c912708014b67a30b51dd78266ea994c │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6::task4::PrizePoolCap │ +│ │ Version: 422681843 │ +│ │ Digest: H5esvEQgBv4XikaDpVthz6cT6G8t7MfSxK9XJdVdV3hA │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 422681843 │ +│ │ Digest: GF4SRApXykDPkELGq3s2TE7JpnYKNSRj5pycedz1Bw8w │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6 │ +│ │ Version: 1 │ +│ │ Digest: DgihjbQgchYnAanMbjtx1dVk1ZqerUKPwztixWW5juZv │ +│ │ Modules: task4 │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -17920680 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/mover/brainsk/notes/task5.md b/mover/brainsk/notes/task5.md new file mode 100644 index 000000000..16db94cf6 --- /dev/null +++ b/mover/brainsk/notes/task5.md @@ -0,0 +1,448 @@ +INCLUDING DEPENDENCY faucetcoin +INCLUDING DEPENDENCY mycoin +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING brainsk +warning[W02021]: duplicate alias +┌─ /Users/tm/Documents/project/rust/letsmove/mover/brainsk/code/task5/brainsk/sources/brainsk.move:6:25 +│ +6 │ use sui::transfer::{Self, transfer, share_object, public_transfer}; +│ ^^^^ Unnecessary alias 'transfer' for module 'sui::transfer'. This alias is provided by default +│ += This warning can be suppressed with '#[allow(duplicate_alias)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +warning[W09001]: unused alias +┌─ /Users/tm/Documents/project/rust/letsmove/mover/brainsk/code/task5/brainsk/sources/brainsk.move:6:25 +│ +6 │ use sui::transfer::{Self, transfer, share_object, public_transfer}; +│ ^^^^ Unused 'use' of alias 'transfer'. Consider removing it +│ += This warning can be suppressed with '#[allow(unused_use)]' applied to the 'module' or module member ('const', 'fun', or 'struct') + +Successfully verified dependencies on-chain against source. +Transaction Digest: DR6YACGqTRmgcoX82tHbKytcMiMo6tfDSwv6LRsp6a8Q +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 19732400 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Version: 422681860 │ +│ │ Digest: 9V1TeY8ifFaxDnuPkistSFz83B2YbJxXfXLzWq1LRTY6 │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ │ 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd │ │ +│ │ │ 0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ hzhLL8T9mDbEx/vwJnu7xTZ/8mDH5eP2yA2CWgwpS3oqOmfIiXTP8wLhQ0/jkhGmS0boFajnY8mPyPOgh5mDAQ== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: DR6YACGqTRmgcoX82tHbKytcMiMo6tfDSwv6LRsp6a8Q │ +│ Status: Success │ +│ Executed Epoch: 589 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Owner: Shared( 422681861 ) │ +│ │ Version: 422681861 │ +│ │ Digest: BRjZkh15HgGVYq8RBpokvpcYhXT9m8JQ4eb7W7zpyhMo │ +│ └── │ +│ ┌── │ +│ │ ID: 0x8084ba0b80164530fe2c3df1d7c95238ca6c59f32c96f52a6167732b951c0f5b │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681861 │ +│ │ Digest: GYEcihqPrnCvDvAohK2rK8S5nh3Sv2AS65m7KcddTN3Q │ +│ └── │ +│ ┌── │ +│ │ ID: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: 7FuztekmgNYBqvmWXKzk6zEAr2ZxRY9jBJe2y6yGvtkH │ +│ └── │ +│ ┌── │ +│ │ ID: 0xb9c7d85062fc8b29182c85761d9886b6ecec91c61dc8872bcae022e17e2e02f2 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681861 │ +│ │ Digest: 2Brjgc6GMMbBYaKqSuyfCjeRn1Qe4sCjnL2AwtEMiZKo │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681861 │ +│ │ Digest: CWnTFNj1g2GHfEeWFoBYY8mKwednSyBLR2p5UCyWQ3fy │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681861 │ +│ │ Digest: CWnTFNj1g2GHfEeWFoBYY8mKwednSyBLR2p5UCyWQ3fy │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 18232400 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 2eAquiKg3vGPAmS6khNTttxiYgpLSnKGSMLqWQorRqui │ +│ AwbRrs46HSRGTA4cveqF8JceQFJodqijT4QhjFtntVj3 │ +│ FPQJirZF6XaBX9wcmQbPUPPX9CzbpymnF3c8vtnpHqWt │ +│ Hiybm73HN9n8UWMHNc6K63cTNtqdPz2jphpfckaZjNpW │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Shared( 422681861 ) │ +│ │ ObjectType: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264::brainsk::BrainskSwapBank │ +│ │ Version: 422681861 │ +│ │ Digest: BRjZkh15HgGVYq8RBpokvpcYhXT9m8JQ4eb7W7zpyhMo │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x8084ba0b80164530fe2c3df1d7c95238ca6c59f32c96f52a6167732b951c0f5b │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264::brainsk::AdaminCap │ +│ │ Version: 422681861 │ +│ │ Digest: GYEcihqPrnCvDvAohK2rK8S5nh3Sv2AS65m7KcddTN3Q │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xb9c7d85062fc8b29182c85761d9886b6ecec91c61dc8872bcae022e17e2e02f2 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 422681861 │ +│ │ Digest: 2Brjgc6GMMbBYaKqSuyfCjeRn1Qe4sCjnL2AwtEMiZKo │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 422681861 │ +│ │ Digest: CWnTFNj1g2GHfEeWFoBYY8mKwednSyBLR2p5UCyWQ3fy │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 │ +│ │ Version: 1 │ +│ │ Digest: 7FuztekmgNYBqvmWXKzk6zEAr2ZxRY9jBJe2y6yGvtkH │ +│ │ Modules: brainsk │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -18004280 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + + + +--- mycoin +make deposit_mycoin +sui client call --package 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 --module brainsk --function deposit_mycoin --args 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 0x05f29334ed951b1748ddd65e502056175a83582b077949ad4299670449f3a430 +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +Transaction Digest: JBZA3U5a3grRFdCBBjv8wpy5TDn6D4npe1fpWEUy1CDN +╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├─────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 1500000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Version: 422681862 │ +│ │ Digest: 6UwEgJUECA8FS5HBJGrUdStqWpQWJE6e2BXPXh7HmB4w │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├─────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Shared Object ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ │ +│ │ 1 Imm/Owned Object ID: 0x05f29334ed951b1748ddd65e502056175a83582b077949ad4299670449f3a430 │ │ +│ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: deposit_mycoin │ │ +│ │ │ Module: brainsk │ │ +│ │ │ Package: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ lI0tzzD542qCIlPT3oHPcc0N1QjnwHAbaLOon15q3exbqwYTe4qynjeCXPsgw0w90QFn1BH7ac4ZawZNZXPkCA== │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: JBZA3U5a3grRFdCBBjv8wpy5TDn6D4npe1fpWEUy1CDN │ +│ Status: Success │ +│ Executed Epoch: 589 │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Owner: Shared( 422681861 ) │ +│ │ Version: 422681863 │ +│ │ Digest: 3vufCGUoEL9e4Cv44qwf73RRMsudukMTe5AdGQQGdTX7 │ +│ └── │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681863 │ +│ │ Digest: 2Ts72JFVAx6ix57E2gfrPmZM1r25vnveby3gQoRdWmAJ │ +│ └── │ +│ Shared Objects: │ +│ ┌── │ +│ │ ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Version: 422681861 │ +│ │ Digest: BRjZkh15HgGVYq8RBpokvpcYhXT9m8JQ4eb7W7zpyhMo │ +│ └── │ +│ Deleted Objects: │ +│ ┌── │ +│ │ ID: 0x05f29334ed951b1748ddd65e502056175a83582b077949ad4299670449f3a430 │ +│ │ Version: 422681863 │ +│ │ Digest: 7gyGAp71YXQRoxmFBaHxofQXAipvgHyBKPyxmdSJxyvz │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681863 │ +│ │ Digest: 2Ts72JFVAx6ix57E2gfrPmZM1r25vnveby3gQoRdWmAJ │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 2591600 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 3904956 MIST │ +│ Non-refundable Storage Fee: 39444 MIST │ +│ │ +│ Transaction Dependencies: │ +│ DR6YACGqTRmgcoX82tHbKytcMiMo6tfDSwv6LRsp6a8Q │ +│ FFTzzSwfjLYR8YiLKT8khRCfWNZhbUJkeTq4bqXag3JH │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Shared( 422681861 ) │ +│ │ ObjectType: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264::brainsk::BrainskSwapBank │ +│ │ Version: 422681863 │ +│ │ Digest: 3vufCGUoEL9e4Cv44qwf73RRMsudukMTe5AdGQQGdTX7 │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 422681863 │ +│ │ Digest: 2Ts72JFVAx6ix57E2gfrPmZM1r25vnveby3gQoRdWmAJ │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: 563356 │ +│ └── │ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb::mycoin::MYCOIN │ +│ │ Amount: -80000 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +make deposit_faucetcoin +sui client call --package 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 --module brainsk --function deposit_faucetcoin --args 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 0xa404c780507a31981dc02c3ed95cf63965f78a66c3963c6065d432ca7b71971f +[warning] Client/Server api version mismatch, client api version : 1.38.0, server api version : 1.37.3 +Transaction Digest: H7U7wcq1xTJzaGJ751hsktxwDzU8qaVYNpWAqqTN58DA +╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├─────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Owner: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ Gas Budget: 1500000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Version: 422681864 │ +│ │ Digest: H3w2rXmUoJ1bSNqBW5YeF7Wv9D7T4jVKc71MGBHmfbKP │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├─────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Shared Object ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ │ +│ │ 1 Imm/Owned Object ID: 0xa404c780507a31981dc02c3ed95cf63965f78a66c3963c6065d432ca7b71971f │ │ +│ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: deposit_faucetcoin │ │ +│ │ │ Module: brainsk │ │ +│ │ │ Package: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ jQJh9t5jUKBVA+9EzufE1cIBD782YA31dTKYJzebIoyvtw0mVFpLgxST6Xa0wL22R7r/uDWCNz7DcKEpXvHEBw== │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: H7U7wcq1xTJzaGJ751hsktxwDzU8qaVYNpWAqqTN58DA │ +│ Status: Success │ +│ Executed Epoch: 589 │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Owner: Shared( 422681861 ) │ +│ │ Version: 422681865 │ +│ │ Digest: Bxxp8u1m6QsJsHGoiA52CMCpDJNZW9K1aQnwvBAZZGL │ +│ └── │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681865 │ +│ │ Digest: 7M93HXEnjL27dUBS3UtTWz2fV9pCjskUpAP8kUHNpTT8 │ +│ └── │ +│ Shared Objects: │ +│ ┌── │ +│ │ ID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Version: 422681863 │ +│ │ Digest: 3vufCGUoEL9e4Cv44qwf73RRMsudukMTe5AdGQQGdTX7 │ +│ └── │ +│ Deleted Objects: │ +│ ┌── │ +│ │ ID: 0xa404c780507a31981dc02c3ed95cf63965f78a66c3963c6065d432ca7b71971f │ +│ │ Version: 422681865 │ +│ │ Digest: 7gyGAp71YXQRoxmFBaHxofQXAipvgHyBKPyxmdSJxyvz │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ Version: 422681865 │ +│ │ Digest: 7M93HXEnjL27dUBS3UtTWz2fV9pCjskUpAP8kUHNpTT8 │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 2591600 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 3965148 MIST │ +│ Non-refundable Storage Fee: 40052 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 21j4KxbEG1hnWUcgAf2PcUmMmf3ZEYEVDhtee5ASGZYv │ +│ DR6YACGqTRmgcoX82tHbKytcMiMo6tfDSwv6LRsp6a8Q │ +│ JBZA3U5a3grRFdCBBjv8wpy5TDn6D4npe1fpWEUy1CDN │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x38c79f4b37e56ec98cfdd56c72faea011d4dab9eae0775c399ff975ac003a1c8 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Shared( 422681861 ) │ +│ │ ObjectType: 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264::brainsk::BrainskSwapBank │ +│ │ Version: 422681865 │ +│ │ Digest: Bxxp8u1m6QsJsHGoiA52CMCpDJNZW9K1aQnwvBAZZGL │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xbf03beac2f0712cd5f950bd957ec06dc6efd420e04866ea0af2f9c06320a36a1 │ +│ │ Sender: 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 422681865 │ +│ │ Digest: 7M93HXEnjL27dUBS3UtTWz2fV9pCjskUpAP8kUHNpTT8 │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: 623548 │ +│ └── │ +│ ┌── │ +│ │ Owner: Account Address ( 0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc ) │ +│ │ CoinType: 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd::faucetcoin::FAUCETCOIN │ +│ │ Amount: -100000 │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/mover/brainsk/readme.md b/mover/brainsk/readme.md new file mode 100644 index 000000000..fbb912f6f --- /dev/null +++ b/mover/brainsk/readme.md @@ -0,0 +1,54 @@ +## 基本信息 +- Sui钱包地址: `0x9f0389fccd23a7a307c9c18bc2b9a1eafd9b3c2d28c26c026781b40602e225dc` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `brainsk` + +## 个人简介 +- 工作经验: 10年 +- 技术栈: `Rust` `go` +> 重要提示 请认真写自己的简介 +- 多年web2开发经验,对Move特别感兴趣,想通过Move入门区块链 +- 联系方式: tg: `brainsk` + +## 任务 + +## 01 hello move +- [√] Sui cli version: sui 1.37.1-homebrew +- [√] Sui钱包截图: ![Sui钱包截图](./images/sui-version-and-wallet-address.png) +- [√] package id: 0x649f4acee5d47ea606010f23b0f094512c829124104abd9f0fe751cf3c57ddb4 +- [√] package id 在 scan上的查看截图:![Scan截图](./images/scan.png) + +## 02 move coin +- [√] My Coin package id : 0x6873544ffc55c257a31c4fac905c730ed5f69c6340528314580b0c499a23c6fb +- [√] Faucet package id : 0xf55b7f267fbf88f6e195bdb979316293ec492882273e7deffc078a6615ec2bfd +- [√] 转账 `My Coin` hash: 9hxSYLtSrnnJdtti46r5S9zTrzQCySBewSSLjh2WqEvc +- [√] `Faucet Coin` address1 mint hash: 6D9fCzGZokCuAQoNP5Grki91Ba6oHsQ7i1nNk27gH38R +- [√] `Faucet Coin` address2 mint hash: GVGDJiH6Km8edU58uagitcrfA35cjhA4H1fxRMyxBp7y + +## 03 move NFT +- [√] nft package id : 0x03defdabcae9c45534df08f5cdd4f119cd94fbbe80117a6179328ba45555b01d +- [√] nft object id : 0x95c4ad856bc9da78cc54d1183c5933f812e17ea913f01cda5be228bf08fcd8b4 +- [√] 转账 nft hash: 9TidEfi5awA7a8BwvkvhHguFkmR2ZBVCHT2FRLacVcrq +- [√] scan上的NFT截图:![Scan截图](./images/nft.png) + +## 04 Move Game +- [√] game package id : 0xd593563f21c3598ab5109488d634de8cbfe59b3463856b4dacf1cd90357a65b6 +- [√] deposit Coin hash: 9LfqjZQg6Wh3FQeS9sRE9W9va7x6jRsdf1fdwoa4xEbj +- [√] withdraw `Coin` hash: HTrpXRECgm1qWjPLB7d6PK6fdhnpMFsZmSa6d9di54KN +- [√] play game hash: Hiybm73HN9n8UWMHNc6K63cTNtqdPz2jphpfckaZjNpW + +## 05 Move Swap +- [√] swap package id : 0x8fce92f5a9044de1b3b19a622c2f2beb74c080321612ca546a8ddfbae089c264 +- [√] call swap CoinA-> CoinB hash : Fa4jYo1BY8msNRfWdScog3rwgh1Zybjh1vpD2tGjRwjJ +- [√] call swap CoinB-> CoinA hash : GXDtyEBzEegurzVaqvtyPvqDYwC8szzg1ES26SU8PRGM + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/brainsk/scan/readme.md b/mover/brainsk/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/brainsk/scan/readme.md @@ -0,0 +1 @@ + diff --git a/mover/chenlong1993/code/task2/faucet_coin/Move.lock b/mover/chenlong1993/code/task2/faucet_coin/Move.lock new file mode 100644 index 000000000..079fa5a1f --- /dev/null +++ b/mover/chenlong1993/code/task2/faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "F8CFCF256E2F1BB7CD401C27799A09C40777C5C100F0DFA253E86DD7F0D4ED1B" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x4827741468f39c7e9624aafb4fa67bb921a2adee56262c1cfe403958235c15aa" +latest-published-id = "0x4827741468f39c7e9624aafb4fa67bb921a2adee56262c1cfe403958235c15aa" +published-version = "1" diff --git a/mover/chenlong1993/code/task2/faucet_coin/Move.toml b/mover/chenlong1993/code/task2/faucet_coin/Move.toml new file mode 100644 index 000000000..1b517a2be --- /dev/null +++ b/mover/chenlong1993/code/task2/faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/chenlong1993/code/task2/faucet_coin/sources/faucet_coin.move b/mover/chenlong1993/code/task2/faucet_coin/sources/faucet_coin.move new file mode 100644 index 000000000..7c0c3798d --- /dev/null +++ b/mover/chenlong1993/code/task2/faucet_coin/sources/faucet_coin.move @@ -0,0 +1,50 @@ +/* +/// Module: faucet_coin +module faucet_coin::faucet_coin; +*/ +module faucet_coin::faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct FAUCET_COIN has drop {} + + fun init( + witness: FAUCET_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"CRF", + b"FAUCET_COIN", + b"ChainRex Faucet Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/76983479" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + diff --git a/mover/chenlong1993/code/task2/faucet_coin/tests/faucet_coin_tests.move b/mover/chenlong1993/code/task2/faucet_coin/tests/faucet_coin_tests.move new file mode 100644 index 000000000..74b01751a --- /dev/null +++ b/mover/chenlong1993/code/task2/faucet_coin/tests/faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucet_coin::faucet_coin_tests; +// uncomment this line to import the module +// use faucet_coin::faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucet_coin::faucet_coin_tests::ENotImplemented)] +fun test_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/chenlong1993/code/task2/mycoin/Move.lock b/mover/chenlong1993/code/task2/mycoin/Move.lock new file mode 100644 index 000000000..2d30165df --- /dev/null +++ b/mover/chenlong1993/code/task2/mycoin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0A4652D38CF3C3FDB79EC6C1C98FCFF7B2E933E12B84A1DA267DB28F66AFECE3" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xcc190e0be1376b8700c5e1b4b8f95e2b9eb3932bb007b1adfb2bb4c22c3579a4" +latest-published-id = "0xcc190e0be1376b8700c5e1b4b8f95e2b9eb3932bb007b1adfb2bb4c22c3579a4" +published-version = "1" diff --git a/mover/chenlong1993/code/task2/mycoin/Move.toml b/mover/chenlong1993/code/task2/mycoin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/chenlong1993/code/task2/mycoin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/chenlong1993/code/task2/mycoin/sources/my_coin.move b/mover/chenlong1993/code/task2/mycoin/sources/my_coin.move new file mode 100644 index 000000000..45207b02c --- /dev/null +++ b/mover/chenlong1993/code/task2/mycoin/sources/my_coin.move @@ -0,0 +1,37 @@ +/* +/// Module: mycoin +module mycoin::mycoin; +*/ +module my_coin::my_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct MY_COIN has drop {} + + fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"MY", + b"MY_COIN", + b"My foirst Coin", + option::some(url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/76983482")), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury_cap, tx_context::sender(ctx)) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } +} \ No newline at end of file diff --git a/mover/chenlong1993/code/task2/mycoin/tests/mycoin_tests.move b/mover/chenlong1993/code/task2/mycoin/tests/mycoin_tests.move new file mode 100644 index 000000000..d12b2353d --- /dev/null +++ b/mover/chenlong1993/code/task2/mycoin/tests/mycoin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module mycoin::mycoin_tests; +// uncomment this line to import the module +// use mycoin::mycoin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_mycoin() { + // pass +} + +#[test, expected_failure(abort_code = ::mycoin::mycoin_tests::ENotImplemented)] +fun test_mycoin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/chenlong1993/code/task3/my_nft/Move.lock b/mover/chenlong1993/code/task3/my_nft/Move.lock new file mode 100644 index 000000000..6972e6b74 --- /dev/null +++ b/mover/chenlong1993/code/task3/my_nft/Move.lock @@ -0,0 +1,122 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "AA5D09DFE658C06143A093E832165F1B467D45CC3BFBC7EA3B44720A5CAF78C0" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "NftProtocol", name = "NftProtocol" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Allowlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/allowlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Authlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/authlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Kiosk" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/kiosk" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "NftProtocol" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/nft_protocol" } + +dependencies = [ + { id = "Allowlist", name = "Allowlist" }, + { id = "Authlist", name = "Authlist" }, + { id = "Kiosk", name = "Kiosk" }, + { id = "Originmate", name = "Originmate" }, + { id = "Permissions", name = "Permissions" }, + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Originmate" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/originmate" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Permissions" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/permissions" } + +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Pseudorandom" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/pseudorandom" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Request" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/request" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "Utils" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/utils" } + +dependencies = [ + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xde5b4f63e6c83bfb602bcd5f41b215c0003eb586ba783c160403a7d5b177fa79" +latest-published-id = "0xde5b4f63e6c83bfb602bcd5f41b215c0003eb586ba783c160403a7d5b177fa79" +published-version = "1" diff --git a/mover/chenlong1993/code/task3/my_nft/Move.toml b/mover/chenlong1993/code/task3/my_nft/Move.toml new file mode 100644 index 000000000..17da1c7a1 --- /dev/null +++ b/mover/chenlong1993/code/task3/my_nft/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.19.1" } +NftProtocol = { git = "https://github.com/Origin-Byte/nft-protocol.git", subdir = "contracts/nft_protocol", rev = "main" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/chenlong1993/code/task3/my_nft/sources/my_nft.move b/mover/chenlong1993/code/task3/my_nft/sources/my_nft.move new file mode 100644 index 000000000..27780e7bd --- /dev/null +++ b/mover/chenlong1993/code/task3/my_nft/sources/my_nft.move @@ -0,0 +1,73 @@ +/* +/// Module: my_nft +module my_nft::my_nft; +*/ +module my_nft::my_nft { + use nft_protocol::attributes::{Self, Attributes}; + use nft_protocol::collection; + use std::ascii::String; + use std::string; + use sui::url::{Self, Url}; + use nft_protocol::display_info; + use nft_protocol::mint_cap::{Self, MintCap}; + use nft_protocol::mint_event; + use ob_permissions::witness; + + public struct MY_NFT has drop {} + + /// 可用于创建后授权其他操作。至关重要的是,这个结构体不能随意提供给任何合约,因为它充当了授权令牌。 + public struct Witness has drop {} + + public struct NFT has key, store { + id: UID, + name: String, + description: String, + url: Url, + attributes: Attributes, + } + + fun init(otw: MY_NFT, ctx: &mut TxContext) { + let (mut collection, mint_cap) = collection::create_with_mint_cap( + &otw, option::none(), ctx + ); + let delegated_witness = witness::from_witness(Witness {}); + + collection::add_domain( + delegated_witness, + &mut collection, + display_info::new( + string::utf8(b"MY_NFT"), + string::utf8(b"A NFT collection of MY_NFT on Sui"), + ), + ); + transfer::public_share_object(collection); + transfer::public_share_object(mint_cap); + } + + public entry fun mint_nft( + mint_cap: &MintCap, + name: String, + description: String, + url: String, + ctx: &mut TxContext, + ) { + let nft = NFT { + id: object::new(ctx), + name, + description, + url: url::new_unsafe(url), + attributes: attributes::from_vec(vector[], vector[]) + }; + + mint_event::emit_mint( + witness::from_witness(Witness {}), + mint_cap::collection_id(mint_cap), + &nft, + ); + transfer::public_transfer(nft, tx_context::sender(ctx)); + } + + public entry fun transfer_nft(nft: NFT, to: address) { + transfer::public_transfer(nft, to); + } +} diff --git a/mover/chenlong1993/code/task3/my_nft/tests/my_nft_tests.move b/mover/chenlong1993/code/task3/my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/chenlong1993/code/task3/my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/chenlong1993/images/NFT.jpg b/mover/chenlong1993/images/NFT.jpg new file mode 100644 index 000000000..68b4630ee Binary files /dev/null and b/mover/chenlong1993/images/NFT.jpg differ diff --git a/mover/chenlong1993/readme.md b/mover/chenlong1993/readme.md index e4a04cccd..59db37bdf 100644 --- a/mover/chenlong1993/readme.md +++ b/mover/chenlong1993/readme.md @@ -19,17 +19,17 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/suiscan.jpg) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0xcc190e0be1376b8700c5e1b4b8f95e2b9eb3932bb007b1adfb2bb4c22c3579a4 +- [X] Faucet package id : 0xdb51cdf16b04a0a4834cc40e40db3ad9916cb75805ffa1fc8a5dad5cd90712a3 +- [X] 转账 `My Coin` hash: GEq3hcAxwWfFuauc4ZZ8mt4wU2ziPM7gmsp1YzPt4bLU +- [X] `Faucet Coin` address1 mint hash: Az5XpxWrRKHk1eJ9DsranJJEzrSmr6UU321yZzFCYtQb +- [X] `Faucet Coin` address2 mint hash: BfH1jyCUeXjzDYvSdrPfwyMBZM97aQSzZBH5ww3rVk7S ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id : 0xde5b4f63e6c83bfb602bcd5f41b215c0003eb586ba783c160403a7d5b177fa79 +- [X] nft object id : 0x33b71482e6911a53c4c07340152c9fed3c1a8f0ff75207cab8abb6234a3d0a6b +- [X] 转账 nft hash:AaPixVHZWUoz63Wpscs7Apq1HbbGKtVF9nCiqeZ7uF1v +- [X] scan上的NFT截图:![Scan截图](./images/NFT.jpg) ## 04 Move Game - [] game package id : diff --git a/mover/chenyanxun/co-learn-2411/images/answer_week1.jpg b/mover/chenyanxun/co-learn-2411/images/answer_week1.jpg new file mode 100644 index 000000000..b3c9ca0e5 Binary files /dev/null and b/mover/chenyanxun/co-learn-2411/images/answer_week1.jpg differ diff --git a/mover/chenyanxun/co-learn-2411/images/answer_week2.jpg b/mover/chenyanxun/co-learn-2411/images/answer_week2.jpg new file mode 100644 index 000000000..6e5216f59 Binary files /dev/null and b/mover/chenyanxun/co-learn-2411/images/answer_week2.jpg differ diff --git a/mover/chenyanxun/co-learn-2411/images/study_note2.png b/mover/chenyanxun/co-learn-2411/images/study_note2.png new file mode 100644 index 000000000..ee909f6f5 Binary files /dev/null and b/mover/chenyanxun/co-learn-2411/images/study_note2.png differ diff --git a/mover/chenyanxun/co-learn-2411/images/study_note3.png b/mover/chenyanxun/co-learn-2411/images/study_note3.png new file mode 100644 index 000000000..fe313ca6c Binary files /dev/null and b/mover/chenyanxun/co-learn-2411/images/study_note3.png differ diff --git a/mover/chenyanxun/co-learn-2411/images/study_week2.png b/mover/chenyanxun/co-learn-2411/images/study_week2.png new file mode 100644 index 000000000..abf19c6cc Binary files /dev/null and b/mover/chenyanxun/co-learn-2411/images/study_week2.png differ diff --git a/mover/chenyanxun/co-learn-2411/images/study_week3.jpg b/mover/chenyanxun/co-learn-2411/images/study_week3.jpg new file mode 100644 index 000000000..4a729f32d Binary files /dev/null and b/mover/chenyanxun/co-learn-2411/images/study_week3.jpg differ diff --git a/mover/chenyanxun/co-learn-2411/readme.md b/mover/chenyanxun/co-learn-2411/readme.md index cead72c6e..ec6f2df1b 100644 --- a/mover/chenyanxun/co-learn-2411/readme.md +++ b/mover/chenyanxun/co-learn-2411/readme.md @@ -13,30 +13,30 @@ ## 每周课程学习 -- [x] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](./images/study_week1.png) +- [x] 第二周:![学习记录截图](./images/study_week2.png) +- [x] 第三周:![学习记录截图](./images/study_week3.jpg) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 -- [x] 第一周:![学习记录截图](./images/study_week1.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](./images/answer_week1.jpg) +- [x] 第二周:![学习记录截图](./images/answer_week2.jpg) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 - [x] 第一篇笔记 ![分享记录截图](./images/study_note1.png) -- [] 第二篇笔记 -- [] 第三篇笔记 +- [x] 第二篇笔记 ![分享记录截图](./images/study_note2.png) +- [x] 第三篇笔记 ![分享记录截图](./images/study_note3.png) - [] 第四篇笔记 ## 对外输出学习笔记 - [x] 第一篇笔记【https://learnblockchain.cn/article/9813】 -- [] 第二篇笔记【学习笔记链接】 -- [] 第三篇笔记【学习笔记链接】 +- [x] 第二篇笔记【https://learnblockchain.cn/article/9852】 +- [x] 第三篇笔记【https://learnblockchain.cn/article/9974】 - [] 第四篇笔记【学习笔记链接】 ## 在HOH社区公众号发布自己的技术文章 diff --git a/mover/cmdscz/co-learn-2411/images/xc1.jpg b/mover/cmdscz/co-learn-2411/images/xc1.jpg new file mode 100644 index 000000000..46d3150d5 Binary files /dev/null and b/mover/cmdscz/co-learn-2411/images/xc1.jpg differ diff --git a/mover/cmdscz/co-learn-2411/images/xc2.jpg b/mover/cmdscz/co-learn-2411/images/xc2.jpg new file mode 100644 index 000000000..435b01575 Binary files /dev/null and b/mover/cmdscz/co-learn-2411/images/xc2.jpg differ diff --git a/mover/cmdscz/co-learn-2411/images/xc3.jpg b/mover/cmdscz/co-learn-2411/images/xc3.jpg new file mode 100644 index 000000000..9ac50eb37 Binary files /dev/null and b/mover/cmdscz/co-learn-2411/images/xc3.jpg differ diff --git a/mover/cmdscz/co-learn-2411/readme.md b/mover/cmdscz/co-learn-2411/readme.md index 9b3eccb1d..104a44e82 100644 --- a/mover/cmdscz/co-learn-2411/readme.md +++ b/mover/cmdscz/co-learn-2411/readme.md @@ -6,7 +6,9 @@ ## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) -- [] 宣传截图:![宣传截图](./images/你的图片地址) +- [✓] 宣传截图:![宣传截图](./images/xc1.jpg) +- [✓] 宣传截图:![宣传截图](./images/xc2.jpg) +- [✓] 宣传截图:![宣传截图](./images/xc3.jpg) ## 每周课程学习 diff --git a/mover/cmdscz/code/task2/cmdscz_coin/Move.lock b/mover/cmdscz/code/task2/cmdscz_coin/Move.lock new file mode 100644 index 000000000..bb63ab3ec --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "4E2EEC9074B9F904CCE6737BBE5F3939FFD3FEF6A72E923D2E6F692148EF82BA" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x539851bd3fa43cd434f05ff588f87eca8db3d3c5007dc5c9093ef5c7028ade62" +latest-published-id = "0x539851bd3fa43cd434f05ff588f87eca8db3d3c5007dc5c9093ef5c7028ade62" +published-version = "1" diff --git a/mover/cmdscz/code/task2/cmdscz_coin/Move.toml b/mover/cmdscz/code/task2/cmdscz_coin/Move.toml new file mode 100644 index 000000000..097cd68e4 --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "cmdscz_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +cmdscz_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/cmdscz/code/task2/cmdscz_coin/sources/cmdscz_coin.move b/mover/cmdscz/code/task2/cmdscz_coin/sources/cmdscz_coin.move new file mode 100644 index 000000000..fd6e5c83a --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_coin/sources/cmdscz_coin.move @@ -0,0 +1,47 @@ +module cmdscz_coin::cmdscz_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct CMDSCZ_COIN has drop {} + + fun init( + witness: CMDSCZ_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"CMDSCZ", + b"CMDSCZ_COIN", + b"CMDSCZ Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/169383631" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer( + treasury_cap, + tx_context::sender(ctx) + ) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} diff --git a/mover/cmdscz/code/task2/cmdscz_coin/tests/cmdscz_coin_tests.move b/mover/cmdscz/code/task2/cmdscz_coin/tests/cmdscz_coin_tests.move new file mode 100644 index 000000000..8f2f967ec --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_coin/tests/cmdscz_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module cmdscz_coin::cmdscz_coin_tests; +// uncomment this line to import the module +// use cmdscz_coin::cmdscz_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_cmdscz_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::cmdscz_coin::cmdscz_coin_tests::ENotImplemented)] +fun test_cmdscz_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/cmdscz/code/task2/cmdscz_faucet_coin/Move.lock b/mover/cmdscz/code/task2/cmdscz_faucet_coin/Move.lock new file mode 100644 index 000000000..eed49bb9c --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "FE8A979E89B812418F6FBF96D9C4FD1F9B14B85760246446524B14FF53D54E90" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x4f6935e55fd3cbc2db648a636747246b02d2b231d980dc04ad3253db2e2f5c69" +latest-published-id = "0x4f6935e55fd3cbc2db648a636747246b02d2b231d980dc04ad3253db2e2f5c69" +published-version = "1" diff --git a/mover/cmdscz/code/task2/cmdscz_faucet_coin/Move.toml b/mover/cmdscz/code/task2/cmdscz_faucet_coin/Move.toml new file mode 100644 index 000000000..e0d48a4b4 --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "cmdscz_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +cmdscz_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/cmdscz/code/task2/cmdscz_faucet_coin/sources/cmdscz_faucet_coin.move b/mover/cmdscz/code/task2/cmdscz_faucet_coin/sources/cmdscz_faucet_coin.move new file mode 100644 index 000000000..2ab8e33f7 --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_faucet_coin/sources/cmdscz_faucet_coin.move @@ -0,0 +1,46 @@ +module cmdscz_faucet_coin::cmdscz_faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct CMDSCZ_FAUCET_COIN has drop {} + + fun init( + witness: CMDSCZ_FAUCET_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"CMDS", + b"CMDSCZ_FAUCET_COIN", + b"CMDSCZ Faucet Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://avatars.githubusercontent.com/u/169383631" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + diff --git a/mover/cmdscz/code/task2/cmdscz_faucet_coin/tests/cmdscz_faucet_coin_tests.move b/mover/cmdscz/code/task2/cmdscz_faucet_coin/tests/cmdscz_faucet_coin_tests.move new file mode 100644 index 000000000..33209db57 --- /dev/null +++ b/mover/cmdscz/code/task2/cmdscz_faucet_coin/tests/cmdscz_faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module cmdscz_faucet_coin::cmdscz_faucet_coin_tests; +// uncomment this line to import the module +// use cmdscz_faucet_coin::cmdscz_faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_cmdscz_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::cmdscz_faucet_coin::cmdscz_faucet_coin_tests::ENotImplemented)] +fun test_cmdscz_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/cmdscz/code/task3/my_nft/Move.toml b/mover/cmdscz/code/task3/my_nft/Move.toml new file mode 100644 index 000000000..26ae69d42 --- /dev/null +++ b/mover/cmdscz/code/task3/my_nft/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +NftProtocol = { git = "https://github.com/Origin-Byte/nft-protocol.git", subdir = "contracts/nft_protocol", rev = "main" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/cmdscz/code/task3/my_nft/sources/my_nft.move b/mover/cmdscz/code/task3/my_nft/sources/my_nft.move new file mode 100644 index 000000000..48b79806f --- /dev/null +++ b/mover/cmdscz/code/task3/my_nft/sources/my_nft.move @@ -0,0 +1,41 @@ +module my_nft::my_nft; +use std::string; +use std::string::String; +use sui::transfer::transfer; +use sui::tx_context::sender; + +public struct MyNFT has key,store{ + id:UID, + name:String, + image_url: String, + +} + + +fun init(ctx: &mut TxContext){ + + let my_nft =MyNFT{ + id: object::new(ctx), + name:string::utf8(b"cmdscz NFT"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/169383631"), + }; + + + transfer(my_nft,sender(ctx)); +} + +public entry fun mint(url:String,ctx: &mut TxContext) { + let my_nft = MyNFT { + id: object::new(ctx), + name: string::utf8(b"cmdscz NFT"), + image_url: url + }; + + transfer(my_nft, sender(ctx)); + +} + +public entry fun transfer_nft(nft: MyNFT, to: address) { + transfer::public_transfer(nft, to); +} + diff --git a/mover/cmdscz/code/task3/my_nft/tests/my_nft_tests.move b/mover/cmdscz/code/task3/my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/cmdscz/code/task3/my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/cmdscz/images/scan2.png b/mover/cmdscz/images/scan2.png new file mode 100644 index 000000000..34a79957a Binary files /dev/null and b/mover/cmdscz/images/scan2.png differ diff --git a/mover/cmdscz/readme.md b/mover/cmdscz/readme.md index ce833b72f..60733daf5 100644 --- a/mover/cmdscz/readme.md +++ b/mover/cmdscz/readme.md @@ -19,17 +19,17 @@ - [✓] package id 在 scan上的查看截图:![Scan截图](./images/scan1.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [✓] My Coin package id : 0x539851bd3fa43cd434f05ff588f87eca8db3d3c5007dc5c9093ef5c7028ade62 +- [✓] Faucet package id : 0x4f6935e55fd3cbc2db648a636747246b02d2b231d980dc04ad3253db2e2f5c69 +- [✓] 转账 `My Coin` hash:5LEVnWMZDUCMY8fzUY9TpXJ18Z6Rx9wU3C1CT3efnG2g +- [✓] `Faucet Coin` address1 mint hash:GNkQxLhYcLLv8fYyAhT6Pk54HqZrwAxnaLotCVMyv3RV +- [✓] `Faucet Coin` address2 mint hash:4h3icoE3ThTUFM8JiG6ZjHtHywNj5pVzxk2xZerGfR61 ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [✓] nft package id :0xea9c4b07e227f60bb37fe9362533eba22bf0618efe8003e11ca8e81ba04d2aa8 +- [✓] nft object id : 0x2e1aedcad555396f4927b3954829038934f01829f0b58a57e754c3baef507f39 +- [✓] 转账 nft hash: 7vRXbX9e61do8SnuFLePB1jSgubnUHa6WFAHSJZVqY9s +- [✓] scan上的NFT截图:![Scan截图](./images/scan2.png) ## 04 Move Game - [] game package id : diff --git a/mover/collaralloc/co-learn-2411/images/Bilibili.png b/mover/collaralloc/co-learn-2411/images/Bilibili.png new file mode 100644 index 000000000..edff00c18 Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/Bilibili.png differ diff --git a/mover/collaralloc/co-learn-2411/images/H2O.png b/mover/collaralloc/co-learn-2411/images/H2O.png new file mode 100644 index 000000000..d9302de70 Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/H2O.png differ diff --git a/mover/collaralloc/co-learn-2411/images/classLearn.png b/mover/collaralloc/co-learn-2411/images/classLearn.png new file mode 100644 index 000000000..dd1429e8e Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/classLearn.png differ diff --git a/mover/collaralloc/co-learn-2411/images/learn1.png b/mover/collaralloc/co-learn-2411/images/learn1.png new file mode 100644 index 000000000..ff3d155ea Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/learn1.png differ diff --git a/mover/collaralloc/co-learn-2411/images/learn2.png b/mover/collaralloc/co-learn-2411/images/learn2.png new file mode 100644 index 000000000..3b069e968 Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/learn2.png differ diff --git a/mover/collaralloc/co-learn-2411/images/learn22.png b/mover/collaralloc/co-learn-2411/images/learn22.png new file mode 100644 index 000000000..e4b7436b9 Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/learn22.png differ diff --git a/mover/collaralloc/co-learn-2411/images/letsmove.png b/mover/collaralloc/co-learn-2411/images/letsmove.png new file mode 100644 index 000000000..655de0773 Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/letsmove.png differ diff --git a/mover/collaralloc/co-learn-2411/images/readme.md b/mover/collaralloc/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/collaralloc/co-learn-2411/images/sui.png b/mover/collaralloc/co-learn-2411/images/sui.png new file mode 100644 index 000000000..af5f9a678 Binary files /dev/null and b/mover/collaralloc/co-learn-2411/images/sui.png differ diff --git a/mover/collaralloc/co-learn-2411/project/readme.md b/mover/collaralloc/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/collaralloc/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/collaralloc/co-learn-2411/readme.md b/mover/collaralloc/co-learn-2411/readme.md new file mode 100644 index 000000000..b45857046 --- /dev/null +++ b/mover/collaralloc/co-learn-2411/readme.md @@ -0,0 +1,57 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [x] b站,推特关注截图: ![关注截图](./images/Bilibili.png) +- [x] github给星:![letsmove](./images/letsmove.png) ![sui](./images/sui.png) +- [x] 关注HOH: ![HOH](./images/H2O.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) ++ +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [x] 第一周:![学习记录截图](./images/learn1.png) +- [x] 第二周:![学习记录截图](./images/learn2.png) + - ![学习记录截图](./images/learn22.png) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/collaralloc/code/task2/coin/Move.lock b/mover/collaralloc/code/task2/coin/Move.lock new file mode 100644 index 000000000..c8d347e8a --- /dev/null +++ b/mover/collaralloc/code/task2/coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "759D5BBA961C7BD0C265B42CE2CE995EB9A05D5E4C74EAF83D084518BD03BB0F" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x4f77640014bffc1483c0109bd6771a139c66523a057de41ff943e24807e6d5d2" +latest-published-id = "0x4f77640014bffc1483c0109bd6771a139c66523a057de41ff943e24807e6d5d2" +published-version = "1" diff --git a/mover/collaralloc/code/task2/coin/Move.toml b/mover/collaralloc/code/task2/coin/Move.toml new file mode 100644 index 000000000..5f4380703 --- /dev/null +++ b/mover/collaralloc/code/task2/coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/collaralloc/code/task2/coin/sources/coin.move b/mover/collaralloc/code/task2/coin/sources/coin.move new file mode 100644 index 000000000..486ea5a5b --- /dev/null +++ b/mover/collaralloc/code/task2/coin/sources/coin.move @@ -0,0 +1,35 @@ +module coin::collaralloc_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self,Url}; + + public struct COLLARALLOC_COIN has drop {} + + fun init(collaralloc_coin: COLLARALLOC_COIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency( + collaralloc_coin, + 9, + b"COLLARALLOC_COIN", + b"collaralloc_coin", + b"collaralloc coin", + option::some(url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/77825640?v=4")), + ctx + ); + + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury_cap, tx_context::sender(ctx)) + } + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + } +} \ No newline at end of file diff --git a/mover/collaralloc/code/task2/coin/tests/coin_tests.move b/mover/collaralloc/code/task2/coin/tests/coin_tests.move new file mode 100644 index 000000000..4cd0af9ad --- /dev/null +++ b/mover/collaralloc/code/task2/coin/tests/coin_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module coin::coin_tests { + // uncomment this line to import the module + // use coin::coin; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_coin() { + // pass + } + + #[test, expected_failure(abort_code = ::coin::coin_tests::ENotImplemented)] + fun test_coin_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/collaralloc/code/task2/collaralloc_faucet_coin/Move.lock b/mover/collaralloc/code/task2/collaralloc_faucet_coin/Move.lock new file mode 100644 index 000000000..5c510e23e --- /dev/null +++ b/mover/collaralloc/code/task2/collaralloc_faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "B68378ABC7CE50969B46C781059483A74CC3D502B6F804BBC3EBA2FCF3414D1C" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x4358f2bef8e177509ff5f0ef411a5f9524234e58d3b070dc93e29a94c92594f6" +latest-published-id = "0x4358f2bef8e177509ff5f0ef411a5f9524234e58d3b070dc93e29a94c92594f6" +published-version = "1" diff --git a/mover/collaralloc/code/task2/collaralloc_faucet_coin/Move.toml b/mover/collaralloc/code/task2/collaralloc_faucet_coin/Move.toml new file mode 100644 index 000000000..ea4a17bd8 --- /dev/null +++ b/mover/collaralloc/code/task2/collaralloc_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "collaralloc_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +collaralloc_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/collaralloc/code/task2/collaralloc_faucet_coin/sources/collaralloc_faucet_coin.move b/mover/collaralloc/code/task2/collaralloc_faucet_coin/sources/collaralloc_faucet_coin.move new file mode 100644 index 000000000..489fff282 --- /dev/null +++ b/mover/collaralloc/code/task2/collaralloc_faucet_coin/sources/collaralloc_faucet_coin.move @@ -0,0 +1,48 @@ +module collaralloc_faucet_coin::collaralloc_faucet_coin{ + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct COLLARALLOC_FAUCET_COIN has drop {} + + public struct TreasuryCapKeeper has key { + id: UID, + treasury_cap: TreasuryCap, + } + + fun init(me : COLLARALLOC_FAUCET_COIN, ctx: &mut TxContext){ + let (treasury_cap, metadata) = coin::create_currency( + me, + 9, + b"COLLARALLOC_FAUCET_COIN", + b"collaralloc faucet coin", + b"collaralloc faucet coin", + option::some(url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/49566393")), + ctx + ); + + transfer::public_freeze_object(metadata); + + + let treasury_cap_keeper = TreasuryCapKeeper{ + id: object::new(ctx), + treasury_cap, + }; + transfer::share_object(treasury_cap_keeper); + } + public entry fun mint( + treasury_cap_keeper: &mut TreasuryCapKeeper, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + let treasury_cap = &mut treasury_cap_keeper.treasury_cap; + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + } + +} diff --git a/mover/collaralloc/code/task2/collaralloc_faucet_coin/tests/collaralloc_faucet_coin_test.move b/mover/collaralloc/code/task2/collaralloc_faucet_coin/tests/collaralloc_faucet_coin_test.move new file mode 100644 index 000000000..e69de29bb diff --git a/mover/collaralloc/readme.md b/mover/collaralloc/readme.md index 1e4b3edb3..1ddcd2407 100644 --- a/mover/collaralloc/readme.md +++ b/mover/collaralloc/readme.md @@ -1,52 +1,52 @@ -## 基本信息 -- Sui钱包地址: `0x33d3d6b49592d3747c3a5c5835b0ddb66dc62ab445d415b3464ec3df96d123bb` -- github: `collaralloc` - -## 个人简介 -- 工作经验: 3年 -- 技术栈: `C/C++`, `Qt`, `Qml`, `C#`, `Python`, `JavaScript` -- 多年游戏引擎全栈开发经验,对Move特别感兴趣,想通过Move入门区块链 -- 联系方式: email: `collar@126.com` - -## 任务 - -## 01 hello move -- [x] Sui cli version: -- [x] Sui钱包截图: ![Sui钱包截图](./images/sui.png) -- [x] package id: 0x267586e17f4d649a5b2d64dbcd550f08d9c047ffe2a88f661bad0eb107608eee -- [x] package id 在 scan上的查看截图:![Scan截图](./images/package.png) - -## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: - -## 03 move NFT -- [x] nft package id : 0x316933ef9b27c341cfbb4f66f1943b1c1d75d25f571e617b521fb47fb647e53e -- [x] nft object id : 0x3bc521e10ebc916c745275a400d6a572e8fccb8c1335c546619bbe8513964177 -- [x] 转账 nft hash: HMoKhBQhJnLK8doBSpt6dPpgCar4VZdTsY5CpKmfTJsk -- [x] scan上的NFT截图:![Scan截图](./images/my.png) - -## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: - -## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : - -## 06 Dapp-kit SDK PTB -- [] save hash : - -## 07 Move CTF Check In -- [x] CLI call 截图 : ![截图](./notes/task7/task7.png) -- [x] flag hash : 7bZV4isUAjBBmfZXZ9qao5Y7PAP1dA9rn1hkhaC9pm2f - -## 08 Move CTF Lets Move -- [x] proof : dacd7fa4a7c4faf2 -- [x] flag hash : 5AAeXVCQcuSijvcHJz3Qj9VWYQ5RRzbrMUtx7d7ryZkv +## 基本信息 +- Sui钱包地址: `0x33d3d6b49592d3747c3a5c5835b0ddb66dc62ab445d415b3464ec3df96d123bb` +- github: `collaralloc` + +## 个人简介 +- 工作经验: 3年 +- 技术栈: `C/C++`, `Qt`, `Qml`, `C#`, `Python`, `JavaScript` +- 多年游戏引擎全栈开发经验,对Move特别感兴趣,想通过Move入门区块链 +- 联系方式: email: `collar@126.com` + +## 任务 + +## 01 hello move +- [x] Sui cli version: +- [x] Sui钱包截图: ![Sui钱包截图](./images/sui.png) +- [x] package id: 0x267586e17f4d649a5b2d64dbcd550f08d9c047ffe2a88f661bad0eb107608eee +- [x] package id 在 scan上的查看截图:![Scan截图](./images/package.png) + +## 02 move coin +- [x] My Coin package id : 0x4f77640014bffc1483c0109bd6771a139c66523a057de41ff943e24807e6d5d2 +- [x] Faucet package id : 0x4358f2bef8e177509ff5f0ef411a5f9524234e58d3b070dc93e29a94c92594f6 +- [x] 转账 `My Coin` hash: Hd6kw8UDeZwmzm1ZJxjN2sHWjMh5QYHXMtYE9js1jUEQ +- [x] `Faucet Coin` address1 mint hash: GFzKzzeGLHssXXbB14X8r77SPSdeTf5hfu2qzVHa6Ko2 +- [x] `Faucet Coin` address2 mint hash: 7fZVxf8cnbMiCMTrLpW9nF8B26njnXnNneJ5MbuFmKdn + +## 03 move NFT +- [x] nft package id : 0x316933ef9b27c341cfbb4f66f1943b1c1d75d25f571e617b521fb47fb647e53e +- [x] nft object id : 0x3bc521e10ebc916c745275a400d6a572e8fccb8c1335c546619bbe8513964177 +- [x] 转账 nft hash: HMoKhBQhJnLK8doBSpt6dPpgCar4VZdTsY5CpKmfTJsk +- [x] scan上的NFT截图:![Scan截图](./images/my.png) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [x] CLI call 截图 : ![截图](./notes/task7/task7.png) +- [x] flag hash : 7bZV4isUAjBBmfZXZ9qao5Y7PAP1dA9rn1hkhaC9pm2f + +## 08 Move CTF Lets Move +- [x] proof : dacd7fa4a7c4faf2 +- [x] flag hash : 5AAeXVCQcuSijvcHJz3Qj9VWYQ5RRzbrMUtx7d7ryZkv diff --git a/mover/cryptoctl/co-learn-2411/images/week2-study.png b/mover/cryptoctl/co-learn-2411/images/week2-study.png new file mode 100644 index 000000000..aada651f2 Binary files /dev/null and b/mover/cryptoctl/co-learn-2411/images/week2-study.png differ diff --git a/mover/cryptoctl/co-learn-2411/images/week2_online.png b/mover/cryptoctl/co-learn-2411/images/week2_online.png new file mode 100644 index 000000000..11e916f1a Binary files /dev/null and b/mover/cryptoctl/co-learn-2411/images/week2_online.png differ diff --git a/mover/cryptoctl/co-learn-2411/readme.md b/mover/cryptoctl/co-learn-2411/readme.md index b37bba694..71c299aef 100644 --- a/mover/cryptoctl/co-learn-2411/readme.md +++ b/mover/cryptoctl/co-learn-2411/readme.md @@ -11,14 +11,14 @@ ## 每周课程学习 - [x] 第一周:![学习记录截图](./images/week1-study.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第二周:![学习记录截图](./images/week2-study.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 - [x] 第一周:![学习记录截图](./images/11.5_online.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第二周:![学习记录截图](./images/week2_online.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) diff --git a/mover/cryptoctl/code/task2/0x75938a798055f27d5d3332b8460befb89c4ba2be9b25affe792f5191ff25f5ed.key b/mover/cryptoctl/code/task2/0x75938a798055f27d5d3332b8460befb89c4ba2be9b25affe792f5191ff25f5ed.key new file mode 100644 index 000000000..59f345de0 --- /dev/null +++ b/mover/cryptoctl/code/task2/0x75938a798055f27d5d3332b8460befb89c4ba2be9b25affe792f5191ff25f5ed.key @@ -0,0 +1 @@ +ANtiPY0Dt07pjl+uL+59aXoFoHmBk2ASftqtyx+AwakX \ No newline at end of file diff --git a/mover/cryptoctl/code/task2/Move.toml b/mover/cryptoctl/code/task2/Move.toml new file mode 100644 index 000000000..dba88d233 --- /dev/null +++ b/mover/cryptoctl/code/task2/Move.toml @@ -0,0 +1,35 @@ +[package] +name = "task2" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] +published-at = "0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a" + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +# mainnet +task2 = "0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a" +# testnet +# task2 = "0x260cf370e2f907c25e21cdf2b285224a88b3b839f74fb3b25fa3e0fb063f14bd" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } diff --git a/mover/cryptoctl/code/task2/sources/faucet_coin.move b/mover/cryptoctl/code/task2/sources/faucet_coin.move new file mode 100644 index 000000000..c9483202a --- /dev/null +++ b/mover/cryptoctl/code/task2/sources/faucet_coin.move @@ -0,0 +1,36 @@ +module task2::faucet_coin { + + use sui::coin::{Self, TreasuryCap, Coin}; + use sui::url; + + public struct FAUCET_COIN has drop {} + + fun init(witness: FAUCET_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"FAUCET", + b"my second coin", + b"My second faucet coin on sui net by cryptoctl", + option::some(url::new_unsafe_from_bytes(b"")), ctx); + + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury) + } + + #[allow(lint(self_transfer))] + public fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + ctx: &mut TxContext, + ) { + let coin = coin::mint(treasury_cap, amount, ctx); + let sender = tx_context::sender(ctx); + + transfer::public_transfer(coin, sender) + } + + public fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } +} diff --git a/mover/cryptoctl/code/task2/sources/my_coin.move b/mover/cryptoctl/code/task2/sources/my_coin.move new file mode 100644 index 000000000..e3459a141 --- /dev/null +++ b/mover/cryptoctl/code/task2/sources/my_coin.move @@ -0,0 +1,32 @@ +/* +/// Module: task2 +*/ +module task2::my_coin { + use sui::coin::{Self, TreasuryCap}; + use sui::url; + + public struct MY_COIN has drop {} + + fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"MYCOIN", + b"my first coin", + b"My first coin on sui net by cryptoctl", + option::some(url::new_unsafe_from_bytes(b"https://cdn.prod.website-files.com/6425f546844727ce5fb9e5ab/65690e5e73e9e2a416e3502f_sui-mark.svg")), ctx); + + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, ctx.sender()) + } + + public fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } +} \ No newline at end of file diff --git a/mover/cryptoctl/code/task2/tests/task2_tests.move b/mover/cryptoctl/code/task2/tests/task2_tests.move new file mode 100644 index 000000000..8a0300a94 --- /dev/null +++ b/mover/cryptoctl/code/task2/tests/task2_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task2::task2_tests; +// uncomment this line to import the module +// use task2::task2; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task2() { + // pass +} + +#[test, expected_failure(abort_code = ::task2::task2_tests::ENotImplemented)] +fun test_task2_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/cryptoctl/code/task3/Move.toml b/mover/cryptoctl/code/task3/Move.toml new file mode 100644 index 000000000..480be1592 --- /dev/null +++ b/mover/cryptoctl/code/task3/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task3" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task3 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/cryptoctl/code/task3/sources/task3.move b/mover/cryptoctl/code/task3/sources/task3.move new file mode 100644 index 000000000..603218d62 --- /dev/null +++ b/mover/cryptoctl/code/task3/sources/task3.move @@ -0,0 +1,139 @@ +/* +/// Module: task3*/ +module task3::MyNft; +use std::string; +use std::string::{ String }; +use sui::url; +use sui::url::Url; +use sui::event; +use sui::package; +use sui::display; + +public struct MyNft has key, store{ + id:UID, + name: String, + description: String, + image_url: Url, +} +public struct MYNFT has drop{} + + +// ===== Events ===== + +public struct NFTMinted has copy, drop { + object_id: ID, + creator: address, + name: String, +} + +/// The capability granting the application admin the right to create new +/// accounts in the system. +public struct AdminCap has key, store { id: UID } + +/// Create the AdminCap object on package publish and transfer it to the +/// package owner. +fun init(otw:MYNFT, ctx: &mut TxContext) { + + let keys = vector[ + b"name".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"{description}".to_string(), + // Creator field can be any + b"CryptoCtl".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `MyNft` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + transfer::transfer( + AdminCap { id: object::new(ctx) }, + ctx.sender() + ) +} + +public entry fun mint_to_sender( + name: vector, + description: vector, + img_url: vector, + ctx: &mut TxContext +) { + let sender = ctx.sender(); + inner_mint_to(name, description, img_url, sender, ctx); +} + +public entry fun mint_to( + name: vector, + description: vector, + img_url: vector, + reciver: address, + ctx: &mut TxContext) { + + inner_mint_to(name, description, img_url, reciver, ctx); +} + +fun inner_mint_to( + name: vector, + description: vector, + img_url: vector, + reciver: address, + ctx: &mut TxContext){ + + let nft = MyNft { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + image_url: url::new_unsafe_from_bytes(img_url) + // image_url: url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/8326809?v=4") + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: reciver, + name: nft.name, + }); + + transfer::public_transfer(nft, reciver); +} + +/// Transfer `nft` to `recipient` +public entry fun transfer( + nft: MyNft, recipient: address, _: &mut TxContext +) { + transfer::public_transfer(nft, recipient) +} + +/// Update the `description` of `nft` to `new_description` +public entry fun update_description( + nft: &mut MyNft, + new_description: vector, + _: &mut TxContext +) { + nft.description = string::utf8(new_description) +} + +/// Permanently delete `nft` +public entry fun burn(_: &AdminCap, nft: MyNft, _: &mut TxContext) { + let MyNft { id, name: _, description: _, image_url: _ } = nft; + id.delete() +} \ No newline at end of file diff --git a/mover/cryptoctl/code/task3/tests/task3_tests.move b/mover/cryptoctl/code/task3/tests/task3_tests.move new file mode 100644 index 000000000..d128fbb0f --- /dev/null +++ b/mover/cryptoctl/code/task3/tests/task3_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task3::task3_tests; +// uncomment this line to import the module +// use task3::task3; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task3() { + // pass +} + +#[test, expected_failure(abort_code = ::task3::task3_tests::ENotImplemented)] +fun test_task3_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/cryptoctl/code/task4/Move.lock b/mover/cryptoctl/code/task4/Move.lock new file mode 100644 index 000000000..a1f4b4e55 --- /dev/null +++ b/mover/cryptoctl/code/task4/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "DE039AFB413BCB1F8EB657E4505F2237C9429034C55BA5EA4E9698CF9FA36946" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "task2", name = "task2" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "task2" +source = { local = "..\\task2" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x76c5be08481759db8a418253eb5fba7c08b2615a94427dc801b375e667442c87" +latest-published-id = "0x76c5be08481759db8a418253eb5fba7c08b2615a94427dc801b375e667442c87" +published-version = "1" diff --git a/mover/cryptoctl/code/task4/Move.toml b/mover/cryptoctl/code/task4/Move.toml new file mode 100644 index 000000000..a1cc79520 --- /dev/null +++ b/mover/cryptoctl/code/task4/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "task4" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +task2 = { local="../task2" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task4 = "0x0" +task2 = "0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/cryptoctl/code/task4/sources/task4.move b/mover/cryptoctl/code/task4/sources/task4.move new file mode 100644 index 000000000..d3d33fb92 --- /dev/null +++ b/mover/cryptoctl/code/task4/sources/task4.move @@ -0,0 +1,106 @@ +/* +/// Module: task4*/ +module task4::game; + +use sui::balance::{Balance}; +use sui::balance; +use sui::coin::{Coin, into_balance}; +use sui::coin; +// use sui::{from_balance,into_balance}; +use sui::random; +use sui::random::Random; +use sui::transfer::{share_object,transfer,public_transfer}; +use sui::tx_context::sender; +use task2::faucet_coin::FAUCET_COIN; +const EGameInsufficientBalance: u64 = 1001; +const EUserInsufficientBalance: u64 = 1002; + +public struct AdminCap has key{ + id:UID +} + +public struct CryptoCtl_Game has key, store{ + id:UID, + balance: Balance, +} + +public struct GAME has drop {} + +fun init(_otw:GAME, ctx: &mut TxContext) { + let game = CryptoCtl_Game { + id: object::new(ctx), + balance: balance::zero() + }; + share_object(game); + + let admin = AdminCap {id: object::new(ctx)}; + transfer(admin, sender(ctx)); +} + +public entry fun deposit( + game: &mut CryptoCtl_Game, + coin:&mut Coin, + amount: u64, + ctx:&mut TxContext +){ + assert!( + coin.value() >= amount, + EUserInsufficientBalance + ); + let split_coin = coin.split(amount, ctx); + + game.balance.join(into_balance(split_coin)); + + //let into_balance = into_balance(coin); + //game.balance.join(into_balance); +} + +public entry fun withdraw(_admin:&AdminCap, game:&mut CryptoCtl_Game, amount:u64, to:address, ctx:&mut TxContext){ + + assert!( + game.balance.value() >= amount, + EGameInsufficientBalance + ); + + let cash = coin::take(&mut game.balance, amount, ctx); + public_transfer(cash, to); +} + +// 如果用户猜对了,获得双倍奖励。如果用户猜错了,损失投入的代币 + +public entry fun play( + game: &mut CryptoCtl_Game, + rnd: &Random, + guess: bool, + coin: &mut Coin, + amount: u64, + ctx: &mut TxContext +) { + // 检查合约余额是否充足,确保用户获胜时有足够金额奖励 + assert!( + game.balance.value() >= amount, + EGameInsufficientBalance + ); + // 检查用户的余额是否充足 + assert!( + coin.value() >= amount, + EUserInsufficientBalance + ); + + + // 生成随机数 + let mut gen = random::new_generator(rnd, ctx); + let flag = random::generate_bool(&mut gen); + + // 如果获胜 + if (flag == guess) { + // 投入的代币不变,另外奖励等额的代币 + let reward = coin::take(&mut game.balance, amount, ctx); + coin.join(reward); + } + // 猜错了就损失投入的代币 + else { + Self::deposit(game, coin, amount, ctx) + } +} + diff --git a/mover/cryptoctl/code/task4/tests/task4_tests.move b/mover/cryptoctl/code/task4/tests/task4_tests.move new file mode 100644 index 000000000..178d33b9e --- /dev/null +++ b/mover/cryptoctl/code/task4/tests/task4_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task4::task4_tests; +// uncomment this line to import the module +// use task4::task4; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task4() { + // pass +} + +#[test, expected_failure(abort_code = ::task4::task4_tests::ENotImplemented)] +fun test_task4_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/cryptoctl/images/nft_suiscan.png b/mover/cryptoctl/images/nft_suiscan.png new file mode 100644 index 000000000..3fe1a064b Binary files /dev/null and b/mover/cryptoctl/images/nft_suiscan.png differ diff --git a/mover/cryptoctl/notes/readme.md b/mover/cryptoctl/notes/readme.md index e69de29bb..c0cb1f198 100644 --- a/mover/cryptoctl/notes/readme.md +++ b/mover/cryptoctl/notes/readme.md @@ -0,0 +1,47 @@ +my_coin + +第一次测试mint + +sui client call --package a424a82be97e2f533f34cac1b4d50da9ef350bbe6eb3695bb659417d1642524b --module my_coin --function mint --args 0x97cbd34fd756bada629b7bf34682678c18c9dedb198408a86d2eb7ad08b797c8 10000000 0xf33549e058c35c7446827c86c17be8fd43604693d43c8e4a531cbb50e91637a4 + +第二次测试mint +sui client call --package 0x260cf370e2f907c25e21cdf2b285224a88b3b839f74fb3b25fa3e0fb063f14bd --module my_coin --function mint --args 0xc9a2e941f335361349239b4d8ea42d27cba0ac779e9398ac56845f691ce21e18 10000000 0xec9944b43e6286f7f977af5aa7bb87da94c5342bb199628a86418382385b9046 +测试 faucet_coin coin mint +sui client call --package 0x260cf370e2f907c25e21cdf2b285224a88b3b839f74fb3b25fa3e0fb063f14bd --module faucet_coin --function mint --args 0x46945e7591ef69ff97c0a1fef5946f0364cd710aa34d1f73fbe02910658f3a7d 10000000 + +https://rpc-mainnet.suiscan.xyz/ + +添加主网 +sui client new-env --alias mainnet --rpc https://rpc-mainnet.suiscan.xyz:443 + + +sui client publish --skip-dependency-verification + + + +主网my-coin mint + +sui client call --package 0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a --module my_coin --function mint --args 0x826bc85263271018c806608117060fe3d3ae7b38890f59aca97da66e7d98767e 10000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 +sui client call --package 0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a --module my_coin --function mint --args 0x826bc85263271018c806608117060fe3d3ae7b38890f59aca97da66e7d98767e 10000000 0xec9944b43e6286f7f977af5aa7bb87da94c5342bb199628a86418382385b9046 + + +测试 faucet_coin coin mint +sui client call --package 0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a --module faucet_coin --function mint --args 0xd8f680ec551f59cc55d25db5a2ab4109c5dda459809b1f80eee857c30f681719 100000000 + +0x75938a798055f27d5d3332b8460befb89c4ba2be9b25affe792f5191ff25f5ed + + +https://avatars.githubusercontent.com/u/8326809?v=4 + +sui client publish --skip-dependency-verification + +testnet +sui client call --package 0xdc96c5f9ebaeb964cb66569ffa1d9177c032e3900c291ed4edcc005da8809b19 --module game --function play --args 0x451444889ef2880302e10dcd3f39819aefa06590825e9feadf18f7a427bbb953 0x0000000000000000000000000000000000000000000000000000000000000008 true 0x75bdccae7ed097f5112d4a1a8ad142b5e0d4b3280ea24f09618698263164a385 1 --dry-run + +game_id +0x605c2e65b5bb0c5cc0ff8b72868276d59201a6bea19e75b91a682abfac61536a + +coin_id +0x6a10d03353adf8fb24e28f17d626b7e7825dc92ee2ae0e19e067f1641dd4b3b7 + +sui client call --package 0x76c5be08481759db8a418253eb5fba7c08b2615a94427dc801b375e667442c87 --module game --function play --args 0x605c2e65b5bb0c5cc0ff8b72868276d59201a6bea19e75b91a682abfac61536a 0x0000000000000000000000000000000000000000000000000000000000000008 true 0x6a10d03353adf8fb24e28f17d626b7e7825dc92ee2ae0e19e067f1641dd4b3b7 1 --dry-run diff --git a/mover/cryptoctl/readme.md b/mover/cryptoctl/readme.md index ebd6f6aef..f907a06cf 100644 --- a/mover/cryptoctl/readme.md +++ b/mover/cryptoctl/readme.md @@ -19,23 +19,23 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/package_on_sui_vision.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a . my_coin +- [x] Faucet package id : 0x595755e12a700673fd174e05eac9a6e22cfb5d202de027d5830c256bd20d5b3a . faucet_coin +- [x] 转账 `My Coin` hash: H71uhgXFfiqvEu98FXCcJqnxYqXyrpjKuDA34Nsjjw9c , 5aa9znpV7uskaGRmGKjJkTptrC5RyNn9yu1upUyEQA3C +- [x] `Faucet Coin` address1 mint hash:83vTqouEL7dHRnAttkWfJ46Uu3s52FnwHZo21h38d2E3 +- [x] `Faucet Coin` address2 mint hash:DZaoXqAphaeckBKFRTX4DTxVwoBDkEu8QBbvkeVqs8Ms ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :0x70604f682f784cf89a23119f7ddb831ac9c31a87223a55ea0fbe2933fa8e0f6e +- [x] nft object id : 0xbedae70445cdc744645054a2d342220b4647636a5a6cbc00ee57ed9279d17687 +- [x] 转账 nft hash:8mxiSM4Qon69BZLo3TaKbCJRmXjKfXZF5mHU2G7YEZf8 +- [x] scan上的NFT截图:![Scan截图](./images/nft_suiscan.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id :0x76c5be08481759db8a418253eb5fba7c08b2615a94427dc801b375e667442c87 +- [x] deposit Coin hash:HLqCXABdnyyB2W7EYK8PoAKjj8MFT64vpXBTdfBvNeGg +- [x] withdraw `Coin` hash:3rKw6dneqLvt2WqjTjvARmwZmFFFdrJPTivMLimWpntn +- [x] play game hash:B8kV437qWqbxq2RDpRaTwfaJnGVWdQmpBiPKrSsK9k4q ## 05 Move Swap - [] swap package id : diff --git a/mover/ctianming/co-learn-2411/images/b_follow.png b/mover/ctianming/co-learn-2411/images/b_follow.png new file mode 100644 index 000000000..75f7a3ee6 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/b_follow.png differ diff --git a/mover/ctianming/co-learn-2411/images/lesson_1.png b/mover/ctianming/co-learn-2411/images/lesson_1.png new file mode 100644 index 000000000..ed0fcf339 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/lesson_1.png differ diff --git a/mover/ctianming/co-learn-2411/images/lesson_2.png b/mover/ctianming/co-learn-2411/images/lesson_2.png new file mode 100644 index 000000000..1639caa36 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/lesson_2.png differ diff --git a/mover/ctianming/co-learn-2411/images/meeting_2.png b/mover/ctianming/co-learn-2411/images/meeting_2.png new file mode 100644 index 000000000..9bce3e086 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/meeting_2.png differ diff --git a/mover/ctianming/co-learn-2411/images/note_share_2.png b/mover/ctianming/co-learn-2411/images/note_share_2.png new file mode 100644 index 000000000..034515a80 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/note_share_2.png differ diff --git a/mover/ctianming/co-learn-2411/images/note_share_3.png b/mover/ctianming/co-learn-2411/images/note_share_3.png new file mode 100644 index 000000000..6c41b0419 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/note_share_3.png differ diff --git a/mover/ctianming/co-learn-2411/images/note_share_4.png b/mover/ctianming/co-learn-2411/images/note_share_4.png new file mode 100644 index 000000000..e00b90cd8 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/note_share_4.png differ diff --git a/mover/ctianming/co-learn-2411/images/note_share_5.png b/mover/ctianming/co-learn-2411/images/note_share_5.png new file mode 100644 index 000000000..f255964bb Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/note_share_5.png differ diff --git a/mover/ctianming/co-learn-2411/images/note_share_6.png b/mover/ctianming/co-learn-2411/images/note_share_6.png new file mode 100644 index 000000000..ee52b8363 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/note_share_6.png differ diff --git a/mover/ctianming/co-learn-2411/images/readme.md b/mover/ctianming/co-learn-2411/images/readme.md index ee40582a6..95853bd58 100644 --- a/mover/ctianming/co-learn-2411/images/readme.md +++ b/mover/ctianming/co-learn-2411/images/readme.md @@ -8,4 +8,34 @@ task1 scan截图 ![alt text](image.png) -第一篇笔记分享 \ No newline at end of file +第一篇笔记分享 + +![alt text](image.png) +第二篇笔记分享 + +![](4d3d657e522ba9661a03afff9ecba50.png) +11.11会议 + +![alt text](image.png) +第三篇笔记分享 + +![](image.png) +task3_image + +![](image.png) +第一周课程学习 + +![alt text](image.png) +第二周课程学习 + +![alt text](image.png) +b站关注 + +![alt text](image.png) +第四篇笔记分享 + +![alt text](image.png) +第五篇笔记分享 + +![alt text](image.png) +第六篇笔记分享 \ No newline at end of file diff --git a/mover/ctianming/co-learn-2411/images/task3_image.png b/mover/ctianming/co-learn-2411/images/task3_image.png new file mode 100644 index 000000000..e142eacd7 Binary files /dev/null and b/mover/ctianming/co-learn-2411/images/task3_image.png differ diff --git a/mover/ctianming/co-learn-2411/project/move_coin/.network_config b/mover/ctianming/co-learn-2411/project/move_coin/.network_config new file mode 100644 index 000000000..d0d00565a --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_coin/.network_config @@ -0,0 +1 @@ +NETWORK=devnet diff --git a/mover/ctianming/co-learn-2411/project/move_coin/Makefile b/mover/ctianming/co-learn-2411/project/move_coin/Makefile new file mode 100644 index 000000000..3632cc509 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_coin/Makefile @@ -0,0 +1,85 @@ +# Sui 项目 Makefile +# 项目路径设置 +MOVE_PATH := . +BUILD_PATH := $(MOVE_PATH)/build +SUI_CLI := sui + +# 默认网络为 devnet,可通过 `make NETWORK=` 来覆盖 +NETWORK := $(or $(NETWORK), mainnet) +GAS_BUDGET := $(or $(GAS_BUDGET), 2000000) + +# 默认目标 +all: build + +# 切换网络 +switch: + @echo "Switching to network: $(NETWORK)..." + @if [ -z "$(NETWORK)" ]; then \ + echo "Error: No network specified. Please set NETWORK."; \ + exit 1; \ + fi + $(SUI_CLI) client switch --env $(NETWORK) + @echo "Switched to network: $(NETWORK)" + export NETWORK=$(NETWORK) +# 编译 Move 代码 +build: + @echo "Building the Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move build --path $(MOVE_PATH) + +# 运行测试 +test: + @echo "Running tests on Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move test --path $(MOVE_PATH) + +# 发布合约到 Devnet +publish: + @echo "Publishing the package to $(SUI_NETWORK)..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) client publish --gas-budget $(GAS_BUDGET) + +# 清理生成的文件 +clean: + @echo "Cleaning up the build directory..." + rm -rf $(BUILD_PATH) + +# 此命令仅适用于使用 brew 下载 sui 的用户 +update: + @echo "Updating brew and sui" + brew update + brew upgrade sui + +# 查看合约状态 +# 这里我只添加了三个命令,可以根据自己的需要增减 +status: + @echo "Checking the status of the Sui project..." + $(SUI_CLI) client active-env + $(SUI_CLI) client active-address + $(SUI_CLI) client balance + +# 帮助信息 +help: + @echo "使用 Makefile 中的以下命令进行常见操作:" + @echo " make build - 编译 Move 包" + @echo " make test - 测试 Move 包" + @echo " make publish - 发布合约到网络" + @echo " make clean - 清理生成的文件" + @echo " make status - 查看合约状态" + +.PHONY: all build test publish clean status help diff --git a/mover/ctianming/co-learn-2411/project/move_coin/Move.lock b/mover/ctianming/co-learn-2411/project/move_coin/Move.lock new file mode 100644 index 000000000..37fa667ad --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "7939B02BAC007BE8A79319E49B6498399658A0F5C3481E61DFB6AAD342CC6A3B" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x2a6acc6295f89f9b4c8b93fd84dfe29f010e9fd279265d93d8ab51fd3fb5338d" +latest-published-id = "0x2a6acc6295f89f9b4c8b93fd84dfe29f010e9fd279265d93d8ab51fd3fb5338d" +published-version = "1" diff --git a/mover/ctianming/co-learn-2411/project/move_coin/Move.toml b/mover/ctianming/co-learn-2411/project/move_coin/Move.toml new file mode 100644 index 000000000..dbf300bfe --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_coin/Move.toml @@ -0,0 +1,36 @@ +[package] +name = "move_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/ctianming/co-learn-2411/project/move_coin/sources/move_coin.move b/mover/ctianming/co-learn-2411/project/move_coin/sources/move_coin.move new file mode 100644 index 000000000..84435daa5 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_coin/sources/move_coin.move @@ -0,0 +1,255 @@ +/* +/// Module: move_coin +module move_coin::move_coin; +*/ +module move_coin::my_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use std::debug; + use std::ascii::string; + + public struct MY_COIN has drop {} + + fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"MOON", + b"CTIANMING_MY_COIN", + b"MOON_COIN", + option::none(), + ctx); + debug::print(&string(b"init MY_COIN")); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, ctx.sender()) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + debug::print(&string(b"my_coin mint")); + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } + + public entry fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + debug::print(&string(b"burn")); + coin::burn(treasury_cap, coin); + } + + #[test_only] + use sui::test_scenario as ts; + + #[test] + fun test_self_mint() { + let admin = @0xA; + let mut scenario = ts::begin(admin); + + // init + ts::next_tx(&mut scenario, admin); + { + init(MY_COIN {}, scenario.ctx()); + }; + + // mint 100 coin => admin + ts::next_tx(&mut scenario, admin); + { + let mut treasurycap = ts::take_from_sender>(&scenario); + mint(&mut treasurycap, 100, admin, scenario.ctx()); + // ts::return_to_address>(admin, treasurycap); + ts::return_to_sender>(&scenario, treasurycap); + }; + + // query [admin] coin + ts::next_tx(&mut scenario, admin); + { + let coin = ts::take_from_sender>(&scenario); + debug::print(&coin::value(&coin)); + ts::return_to_sender>(&scenario, coin); + }; + + // burn + ts::next_tx(&mut scenario, admin); + { + let coin = ts::take_from_sender>(&scenario); + let mut treasurycap = ts::take_from_sender>(&scenario); + + burn(&mut treasurycap, coin); + ts::return_to_address>(admin, treasurycap); + }; + + ts::end(scenario); + // pass + } + + #[test] + fun test_another_mint() { + let admin = @0xA; + let user1 = @0xB; + let mut scenario = ts::begin(admin); + + // init,注意这里使用admin初始化,因为独享所有权,所以后面的操作都必须切换回admin + ts::next_tx(&mut scenario, admin); + { + init(MY_COIN {}, scenario.ctx()); + }; + + // mint 100 coin => user1 + ts::next_tx(&mut scenario, admin); // if change to user1, failed! + { + let mut treasurycap = ts::take_from_sender>(&scenario); + mint(&mut treasurycap, 100, user1, scenario.ctx()); + ts::return_to_sender>(&scenario, treasurycap); + }; + + // burn [user1] coin + { + // switch to user1 + ts::next_tx(&mut scenario, user1); + let coin = ts::take_from_sender>(&scenario); + debug::print(&coin::value(&coin)); + + // switch to admin 独享所有权! + ts::next_tx(&mut scenario, admin); + let mut treasurycap = ts::take_from_sender>(&scenario); + burn(&mut treasurycap, coin); + ts::return_to_address>(admin, treasurycap); + }; + + ts::end(scenario); + // pass + } +} + +module move_coin::faucet_coin { + use sui::coin::{Self, Coin,TreasuryCap}; + use std::debug; + use std::ascii::string; + + public struct FAUCET_COIN has drop {} + + fun init(witness: FAUCET_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"MOON", + b"CTIANMING_FAUCET_COIN", + b"MOON_COIN", + option::none(), + ctx); + debug::print(&string(b"init FAUCET_COIN")); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + debug::print(&string(b"faucet_coin mint")); + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } + + public entry fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + debug::print(&string(b"burn")); + coin::burn(treasury_cap, coin); + } + + #[test_only] + use sui::test_scenario as ts; + + #[test] + fun test_faucet_coin() { + let admin = @0xCAFE; + let user0 = @0xFECA; + let user1 = @0xABCD; + let mut scenario = ts::begin(admin); + + // init + ts::next_tx(&mut scenario, admin); + { + init(FAUCET_COIN {}, scenario.ctx()); + }; + + // admin mint 100 coin + ts::next_tx(&mut scenario, admin); + { + let mut treasurycap = ts::take_shared>(&scenario); + mint(&mut treasurycap, 100, admin, scenario.ctx()); + ts::return_shared>(treasurycap); + }; + + // query [admin] coin + ts::next_tx(&mut scenario, admin); + { + let coin = ts::take_from_sender>(&scenario); + debug::print(&coin::value(&coin)); + ts::return_to_sender>(&scenario, coin); + }; + + // user1 mint 200 coin。注意,这里和独享所有权不同,不会报错,可以mint! + ts::next_tx(&mut scenario, user1); + { + let mut treasurycap = ts::take_shared>(&scenario); + mint(&mut treasurycap, 200, user1, scenario.ctx()); + ts::return_shared>(treasurycap); + }; + + // query [user1] coin + ts::next_tx(&mut scenario, user0); + { + let coin = ts::take_from_sender>(&scenario); + debug::print(&coin::value(&coin)); + ts::return_to_sender>(&scenario, coin); + }; + + // query [user1] coin + ts::next_tx(&mut scenario, user1); + { + let coin = ts::take_from_sender>(&scenario); + debug::print(&coin::value(&coin)); + ts::return_to_sender>(&scenario, coin); + }; + + // burn [admin] coin,共享所有权,可以分别对自己的coin操作! + ts::next_tx(&mut scenario, admin); + { + let coin = ts::take_from_sender>(&scenario); + let mut treasurycap = ts::take_shared>(&scenario); + burn(&mut treasurycap, coin); + ts::return_shared>(treasurycap); + }; + + // burn [user0] coin,共享所有权,可以分别对自己的coin操作! + ts::next_tx(&mut scenario, user0); + { + let coin = ts::take_from_sender>(&scenario); + let mut treasurycap = ts::take_shared>(&scenario); + burn(&mut treasurycap, coin); + ts::return_shared>(treasurycap); + }; + + // burn [user1] coin,共享所有权,可以分别对自己的coin操作! + ts::next_tx(&mut scenario, user1); + { + let coin = ts::take_from_sender>(&scenario); + let mut treasurycap = ts::take_shared>(&scenario); + burn(&mut treasurycap, coin); + ts::return_shared>(treasurycap); + }; + + ts::end(scenario); + // pass + } +} \ No newline at end of file diff --git a/mover/ctianming/co-learn-2411/project/move_coin/tests/move_coin_tests.move b/mover/ctianming/co-learn-2411/project/move_coin/tests/move_coin_tests.move new file mode 100644 index 000000000..1a0af7245 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_coin/tests/move_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_coin::move_coin_tests; +// uncomment this line to import the module +// use move_coin::move_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::move_coin::move_coin_tests::ENotImplemented)] +fun test_move_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/ctianming/co-learn-2411/project/move_game/Makefile b/mover/ctianming/co-learn-2411/project/move_game/Makefile new file mode 100644 index 000000000..3632cc509 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_game/Makefile @@ -0,0 +1,85 @@ +# Sui 项目 Makefile +# 项目路径设置 +MOVE_PATH := . +BUILD_PATH := $(MOVE_PATH)/build +SUI_CLI := sui + +# 默认网络为 devnet,可通过 `make NETWORK=` 来覆盖 +NETWORK := $(or $(NETWORK), mainnet) +GAS_BUDGET := $(or $(GAS_BUDGET), 2000000) + +# 默认目标 +all: build + +# 切换网络 +switch: + @echo "Switching to network: $(NETWORK)..." + @if [ -z "$(NETWORK)" ]; then \ + echo "Error: No network specified. Please set NETWORK."; \ + exit 1; \ + fi + $(SUI_CLI) client switch --env $(NETWORK) + @echo "Switched to network: $(NETWORK)" + export NETWORK=$(NETWORK) +# 编译 Move 代码 +build: + @echo "Building the Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move build --path $(MOVE_PATH) + +# 运行测试 +test: + @echo "Running tests on Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move test --path $(MOVE_PATH) + +# 发布合约到 Devnet +publish: + @echo "Publishing the package to $(SUI_NETWORK)..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) client publish --gas-budget $(GAS_BUDGET) + +# 清理生成的文件 +clean: + @echo "Cleaning up the build directory..." + rm -rf $(BUILD_PATH) + +# 此命令仅适用于使用 brew 下载 sui 的用户 +update: + @echo "Updating brew and sui" + brew update + brew upgrade sui + +# 查看合约状态 +# 这里我只添加了三个命令,可以根据自己的需要增减 +status: + @echo "Checking the status of the Sui project..." + $(SUI_CLI) client active-env + $(SUI_CLI) client active-address + $(SUI_CLI) client balance + +# 帮助信息 +help: + @echo "使用 Makefile 中的以下命令进行常见操作:" + @echo " make build - 编译 Move 包" + @echo " make test - 测试 Move 包" + @echo " make publish - 发布合约到网络" + @echo " make clean - 清理生成的文件" + @echo " make status - 查看合约状态" + +.PHONY: all build test publish clean status help diff --git a/mover/ctianming/co-learn-2411/project/move_game/Move.lock b/mover/ctianming/co-learn-2411/project/move_game/Move.lock new file mode 100644 index 000000000..9831e2bd9 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_game/Move.lock @@ -0,0 +1,52 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "83DFB5479D28E523C7E5913B7491473354EFCE7A79E0E0E6D6729E1D83FF9489" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "move_coin", name = "move_coin" }, + { id = "move_nft", name = "move_nft" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "move_coin" +source = { local = "/home/amyseer/sui/letsmove/mover/ctianming/co-learn-2411/project/move_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "move_nft" +source = { local = "/home/amyseer/sui/letsmove/mover/ctianming/co-learn-2411/project/move_nft" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xed3a81bb858d2b3807b2ad29597c637b7972dacd60a5120b9a0e92f9c0164087" +latest-published-id = "0xed3a81bb858d2b3807b2ad29597c637b7972dacd60a5120b9a0e92f9c0164087" +published-version = "1" diff --git a/mover/ctianming/co-learn-2411/project/move_game/Move.toml b/mover/ctianming/co-learn-2411/project/move_game/Move.toml new file mode 100644 index 000000000..87e4ec48d --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_game/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "move_game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +move_coin = { local = "/home/amyseer/sui/letsmove/mover/ctianming/co-learn-2411/project/move_coin/" } +move_nft = { local = "/home/amyseer/sui/letsmove/mover/ctianming/co-learn-2411/project/move_nft/" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/ctianming/co-learn-2411/project/move_game/sources/guess_game.move b/mover/ctianming/co-learn-2411/project/move_game/sources/guess_game.move new file mode 100644 index 000000000..be78a377a --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_game/sources/guess_game.move @@ -0,0 +1,200 @@ +module move_game::guess_game; + +use move_coin::faucet_coin::{Self, FAUCET_COIN}; +use move_nft::move_nft; +use sui::address; +use sui::balance::{Self, Balance}; +use sui::bcs; +use sui::coin::{Self, Coin, TreasuryCap}; +use sui::event::emit; +use sui::table::{Self, Table}; +use sui::tx_context::sender; + +const EInvalid: u64 = 0; +const EInputNotEnough: u64 = 1; +const ECurrencyNotEnough: u64 = 2; +const EHaveWon: u64 = 4; +const ENotUser: u64 = 5; + +/// 定义游戏 +public struct Game has key, store { + id: UID, + secret_number: Option, + attempts: u32, + over: bool, + winner: address, + cost_per_round: u64, + pool: u64, + game_pool: Balance, + users: Table, +} + +/// 定义游戏事件 +public enum GuessEvent has copy, drop, store { + TooSmall, + TooBig, + Correct, +} + +public struct USER has store { + balance: u64, +} + +public struct AdminCap has key { id: UID } + +/// 初始化游戏 +fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + secret_number: option::none(), + attempts: 0, + over: false, + winner: address::from_u256(0), + cost_per_round: 10, //define the cost per round is 10 faucet_coin + pool: 0, + game_pool: balance::zero(), + users: table::new(ctx), + }; + transfer::share_object(game); + transfer::transfer(AdminCap { id: object::new(ctx) }, sender(ctx)); +} + +//get random number +// public entry fun get_random_number(_: &AdminCap, game: &mut Game, r: &Random, ctx: &mut TxContext) { +// let mut generator=random::new_generator(r,ctx); +// let random_value=random::generate_u8_in_range(&mut generator,1,101); +// game.secret_number = random_value as u32; +// } +public entry fun get_random_number( + _: &AdminCap, + game: &mut Game, + magic_number: u64, + ctx: &mut TxContext, +) { + let sender_address = tx_context::sender(ctx); + let timestamp = tx_context::epoch_timestamp_ms(ctx); + let address_bytes = address::to_bytes(sender_address); + let timestamp_bytes = bcs::to_bytes(×tamp); + let magic_number_bytes = bcs::to_bytes(&magic_number); + let mut hash_input = address_bytes; + vector::append(&mut hash_input, timestamp_bytes); + vector::append(&mut hash_input, magic_number_bytes); + let hash_output = sui::hash::blake2b256(&hash_input); + // 取哈希值的第一个字节并转换为随机数 [1, 100] + let random_byte = *vector::borrow(&hash_output, 0); // 解引用 &u8 + let random_value = (random_byte as u32) % 100 + 1; + game.secret_number = option::some(random_value); +} + +//get faucet_coin +public entry fun get_faucet_coin( + treasury_cap: &mut TreasuryCap, + amount: u64, + ctx: &mut TxContext, +) { + faucet_coin::mint(treasury_cap, amount, tx_context::sender(ctx), ctx); +} + +//deposit Coin +public entry fun deposit( + game: &mut Game, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + // get the input value and assert + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + // transection the input value to Balance + let mut input_balance = coin::into_balance(input); + // if input valye much tran amount, change the excess + if (input_value > amount) { + balance::join( + &mut game.game_pool, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut game.game_pool, input_balance); + }; + // check if user in table `users` + if (!table::contains(&game.users, caller)) { + // insert new user, and set its balance + table::add(&mut game.users, caller, USER { balance: amount }); + } else { + // user is valid,update its balance + let user = table::borrow_mut(&mut game.users, caller); + user.balance = user.balance + amount; + } +} + +//withdraw Coin +public entry fun withdraw(_: &AdminCap, game: &mut Game, amount: u64, ctx: &mut TxContext) { + let output_balance = balance::split(&mut game.game_pool, amount); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, sender(ctx)); + game.pool = game.pool - amount; +} + +//restart +public entry fun restart(_: &AdminCap, game: &mut Game) { + game.secret_number = option::none(); + game.attempts = 0; + game.over = false; + game.winner = address::from_u256(0); +} + +/// user guess +public entry fun make_guess( + game: &mut Game, + coin: Coin, + guess: u32, + ctx: &mut TxContext, +) { + game.attempts = game.attempts + 1; + let caller = tx_context::sender(ctx); + // base check + assert!(game.secret_number != option::none(), EInvalid); + assert!(game.over != true, EHaveWon); + assert!(game.winner == address::from_u256(0), EHaveWon); + assert!(table::contains(&game.users, caller), ENotUser); + assert!(guess >= 1 && guess <= 100, EInvalid); + // check the balance + let user = table::borrow_mut(&mut game.users, caller); + assert!(user.balance >= game.cost_per_round, ECurrencyNotEnough); // currency not enough + user.balance = user.balance - game.cost_per_round; // deduct the cost + // input the balance into pool + let input_balance = coin::into_balance(coin); + balance::join(&mut game.game_pool, input_balance); + game.pool = game.pool + game.cost_per_round; + // compare guess with secret number + let secret_number = option::borrow(&game.secret_number); + if (guess < *secret_number) { + emit(GuessEvent::TooSmall); // too small + } else if (guess > *secret_number) { + emit(GuessEvent::TooBig); // too big + } else { + // guess correct + emit(GuessEvent::Correct); + // game over + game.over = true; + game.winner = caller; + // get reward + // let reward_balance = balance::split(&mut game.game_pool, user.balance); + // let reward = coin::from_balance(reward_balance, ctx); + // NOTHING, OR EVERYTHING!!! + let reward_balance = balance::split(&mut game.game_pool, 0); + let reward = coin::from_balance(reward_balance, ctx); + transfer::public_transfer(reward, caller); + // give a NFT to winner + move_nft::mint( + b"TruE", + b"Bless Alysia! from ctianming≥v≤", + b"https://avatars.githubusercontent.com/u/107739505?v=4", + caller, + ctx, + ); + } +} diff --git a/mover/ctianming/co-learn-2411/project/move_game/tests/move_game_tests.move b/mover/ctianming/co-learn-2411/project/move_game/tests/move_game_tests.move new file mode 100644 index 000000000..c5ca6e5e8 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_game/tests/move_game_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_game::move_game_tests; +// uncomment this line to import the module +// use move_game::move_game; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_game() { + // pass +} + +#[test, expected_failure(abort_code = ::move_game::move_game_tests::ENotImplemented)] +fun test_move_game_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/ctianming/co-learn-2411/project/move_nft/Makefile b/mover/ctianming/co-learn-2411/project/move_nft/Makefile new file mode 100644 index 000000000..3632cc509 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_nft/Makefile @@ -0,0 +1,85 @@ +# Sui 项目 Makefile +# 项目路径设置 +MOVE_PATH := . +BUILD_PATH := $(MOVE_PATH)/build +SUI_CLI := sui + +# 默认网络为 devnet,可通过 `make NETWORK=` 来覆盖 +NETWORK := $(or $(NETWORK), mainnet) +GAS_BUDGET := $(or $(GAS_BUDGET), 2000000) + +# 默认目标 +all: build + +# 切换网络 +switch: + @echo "Switching to network: $(NETWORK)..." + @if [ -z "$(NETWORK)" ]; then \ + echo "Error: No network specified. Please set NETWORK."; \ + exit 1; \ + fi + $(SUI_CLI) client switch --env $(NETWORK) + @echo "Switched to network: $(NETWORK)" + export NETWORK=$(NETWORK) +# 编译 Move 代码 +build: + @echo "Building the Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move build --path $(MOVE_PATH) + +# 运行测试 +test: + @echo "Running tests on Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move test --path $(MOVE_PATH) + +# 发布合约到 Devnet +publish: + @echo "Publishing the package to $(SUI_NETWORK)..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) client publish --gas-budget $(GAS_BUDGET) + +# 清理生成的文件 +clean: + @echo "Cleaning up the build directory..." + rm -rf $(BUILD_PATH) + +# 此命令仅适用于使用 brew 下载 sui 的用户 +update: + @echo "Updating brew and sui" + brew update + brew upgrade sui + +# 查看合约状态 +# 这里我只添加了三个命令,可以根据自己的需要增减 +status: + @echo "Checking the status of the Sui project..." + $(SUI_CLI) client active-env + $(SUI_CLI) client active-address + $(SUI_CLI) client balance + +# 帮助信息 +help: + @echo "使用 Makefile 中的以下命令进行常见操作:" + @echo " make build - 编译 Move 包" + @echo " make test - 测试 Move 包" + @echo " make publish - 发布合约到网络" + @echo " make clean - 清理生成的文件" + @echo " make status - 查看合约状态" + +.PHONY: all build test publish clean status help diff --git a/mover/ctianming/co-learn-2411/project/move_nft/Move.lock b/mover/ctianming/co-learn-2411/project/move_nft/Move.lock new file mode 100644 index 000000000..0e150019b --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "4540D330C6E846CAE6F9BE6749EE389FEBF0A14ECFBE748ED332A79FDCAF28EE" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xa376a51b344ba611df52a26df951a20366223f9d973245a4b35a22b836e54261" +latest-published-id = "0xa376a51b344ba611df52a26df951a20366223f9d973245a4b35a22b836e54261" +published-version = "1" diff --git a/mover/ctianming/co-learn-2411/project/move_nft/Move.toml b/mover/ctianming/co-learn-2411/project/move_nft/Move.toml new file mode 100644 index 000000000..b0af5ec87 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_nft/Move.toml @@ -0,0 +1,36 @@ +[package] +name = "move_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/ctianming/co-learn-2411/project/move_nft/sources/move_nft.move b/mover/ctianming/co-learn-2411/project/move_nft/sources/move_nft.move new file mode 100644 index 000000000..cf05c34e7 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_nft/sources/move_nft.move @@ -0,0 +1,114 @@ +/* +/// Module: move_nft +module move_nft::move_nft; +*/ +module move_nft::move_nft { + use std::string; + use sui::url::{Self, Url}; + use sui::event; + + public struct MOVENFT has key, store { + id: UID, + name: string::String, + description: string::String, + url: Url, + } + + public struct NFTMinted has copy, drop { + // The Object ID of the NFT + object_id: ID, + // The creator of the NFT + creator: address, + // The name of the NFT + name: string::String, + } + + + /// Get the NFT's `name` + public fun name(nft: &MOVENFT): &string::String { + &nft.name + } + + /// Get the NFT's `description` + public fun description(nft: &MOVENFT): &string::String { + &nft.description + } + + /// Get the NFT's `url` + public fun url(nft: &MOVENFT): &Url { + &nft.url + } + + // ===== Entrypoints ===== + + #[allow(lint(self_transfer))] + public entry fun mint_to_sender( + name: vector, + description: vector, + url: vector, + ctx: &mut TxContext + ) { + let sender = ctx.sender(); + let nft = MOVENFT { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + url: url::new_unsafe_from_bytes(url) + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: sender, + name: nft.name, + }); + + transfer::public_transfer(nft, sender); + } + + #[allow(lint(self_transfer))] + public entry fun mint( + name: vector, + description: vector, + url: vector, + recipient: address, + ctx: &mut TxContext + ) { + let sender = ctx.sender(); + let nft = MOVENFT { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + url: url::new_unsafe_from_bytes(url) + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: sender, + name: nft.name, + }); + + transfer::public_transfer(nft, recipient); + } + + /// Transfer `nft` to `recipient` + public entry fun transfer( + nft: MOVENFT, recipient: address, _: &mut TxContext + ) { + transfer::public_transfer(nft, recipient) + } + + /// Update the `description` of `nft` to `new_description` + public entry fun update_description( + nft: &mut MOVENFT, + new_description: vector, + _: &mut TxContext + ) { + nft.description = string::utf8(new_description) + } + + /// Permanently delete `nft` + public entry fun burn(nft: MOVENFT, _: &mut TxContext) { + let MOVENFT { id, name: _, description: _, url: _ } = nft; + id.delete() + } +} \ No newline at end of file diff --git a/mover/ctianming/co-learn-2411/project/move_nft/tests/move_nft_tests.move b/mover/ctianming/co-learn-2411/project/move_nft/tests/move_nft_tests.move new file mode 100644 index 000000000..d35681af0 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_nft/tests/move_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_nft::move_nft_tests; +// uncomment this line to import the module +// use move_nft::move_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::move_nft::move_nft_tests::ENotImplemented)] +fun test_move_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/ctianming/co-learn-2411/project/move_swap/Makefile b/mover/ctianming/co-learn-2411/project/move_swap/Makefile new file mode 100644 index 000000000..3632cc509 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_swap/Makefile @@ -0,0 +1,85 @@ +# Sui 项目 Makefile +# 项目路径设置 +MOVE_PATH := . +BUILD_PATH := $(MOVE_PATH)/build +SUI_CLI := sui + +# 默认网络为 devnet,可通过 `make NETWORK=` 来覆盖 +NETWORK := $(or $(NETWORK), mainnet) +GAS_BUDGET := $(or $(GAS_BUDGET), 2000000) + +# 默认目标 +all: build + +# 切换网络 +switch: + @echo "Switching to network: $(NETWORK)..." + @if [ -z "$(NETWORK)" ]; then \ + echo "Error: No network specified. Please set NETWORK."; \ + exit 1; \ + fi + $(SUI_CLI) client switch --env $(NETWORK) + @echo "Switched to network: $(NETWORK)" + export NETWORK=$(NETWORK) +# 编译 Move 代码 +build: + @echo "Building the Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move build --path $(MOVE_PATH) + +# 运行测试 +test: + @echo "Running tests on Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move test --path $(MOVE_PATH) + +# 发布合约到 Devnet +publish: + @echo "Publishing the package to $(SUI_NETWORK)..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) client publish --gas-budget $(GAS_BUDGET) + +# 清理生成的文件 +clean: + @echo "Cleaning up the build directory..." + rm -rf $(BUILD_PATH) + +# 此命令仅适用于使用 brew 下载 sui 的用户 +update: + @echo "Updating brew and sui" + brew update + brew upgrade sui + +# 查看合约状态 +# 这里我只添加了三个命令,可以根据自己的需要增减 +status: + @echo "Checking the status of the Sui project..." + $(SUI_CLI) client active-env + $(SUI_CLI) client active-address + $(SUI_CLI) client balance + +# 帮助信息 +help: + @echo "使用 Makefile 中的以下命令进行常见操作:" + @echo " make build - 编译 Move 包" + @echo " make test - 测试 Move 包" + @echo " make publish - 发布合约到网络" + @echo " make clean - 清理生成的文件" + @echo " make status - 查看合约状态" + +.PHONY: all build test publish clean status help diff --git a/mover/ctianming/co-learn-2411/project/move_swap/Move.lock b/mover/ctianming/co-learn-2411/project/move_swap/Move.lock new file mode 100644 index 000000000..69b2f7eb5 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_swap/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "BF44845A735B9C1D8C6CB3A3E586DAA70534751871EB3F8DB31B3B30D87046AF" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "move_coin", name = "move_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "move_coin" +source = { local = "/home/amyseer/sui/letsmove/mover/ctianming/co-learn-2411/project/move_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x2ef63206c65f457cb14db4806f101958336ac4503675b04fd7120c7c33680ece" +latest-published-id = "0x2ef63206c65f457cb14db4806f101958336ac4503675b04fd7120c7c33680ece" +published-version = "1" diff --git a/mover/ctianming/co-learn-2411/project/move_swap/Move.toml b/mover/ctianming/co-learn-2411/project/move_swap/Move.toml new file mode 100644 index 000000000..12feb84ff --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_swap/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "move_swap" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +move_coin = { local = "/home/amyseer/sui/letsmove/mover/ctianming/co-learn-2411/project/move_coin/" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_swap = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/ctianming/co-learn-2411/project/move_swap/sources/move_swap.move b/mover/ctianming/co-learn-2411/project/move_swap/sources/move_swap.move new file mode 100644 index 000000000..480092ba2 --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_swap/sources/move_swap.move @@ -0,0 +1,180 @@ +module move_swap::move_swap; + +use move_coin::faucet_coin::FAUCET_COIN; +use move_coin::my_coin::MY_COIN; +use sui::balance::{Self, Balance}; +use sui::coin::{Self, Coin}; + +const EInputNotEnough: u64 = 0; +const EPoolNotEnough: u64 = 1; + +public struct AdminCap has key { id: UID } + +public struct Pool has key { + // 如果需要,可以加上两种代币分别的存量属性,这里先不添加 + id: UID, + faucet_coin: Balance, + //faucet_coin_balance: u64, + my_coin: Balance, + //faucet_coin_balance: u64, +} + +fun init(ctx: &mut TxContext) { + let pool = Pool { + id: object::new(ctx), + faucet_coin: balance::zero(), + my_coin: balance::zero(), + }; + transfer::share_object(pool); // pool需要公开,通过AdminCap给予自己额外的管理员权限 + transfer::transfer(AdminCap { id: object::new(ctx) }, tx_context::sender(ctx)); +} + +// 这里我踩了个坑,给pool铸造coin无法增加balance,必须使用balance_join +// 由于在单一函数中无法获取铸造的coin的对象(mint函数直接将coin转给recipient) +// 所以我放弃这个实现 +// public entry fun infuse( +// // 本函数用于给pool注入资金,注意调用这个函数的地址需要拥有MY_COIN的TreasuryCap +// // pool: &mut Pool, +// faucet_treasury_cap: &mut coin::TreasuryCap, +// my_treasury_cap: &mut coin::TreasuryCap, +// amount: u64, +// pool_address: address, +// ctx: &mut TxContext, +// ) { +// my_coin::mint(my_treasury_cap, amount, pool_address, ctx); +// faucet_coin::mint(faucet_treasury_cap, amount, pool_address, ctx); +// } +// 但是,我们可以通过deposit函数,将coin转入pool的balance中 +// 我们还可以指定一个amount,并资金是否足够进行检查,与我们在guess_game中的实现类似 +public entry fun deposit_my_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join( + &mut pool.my_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.my_coin, input_balance); + }; +} + +public entry fun deposit__faucet_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join( + &mut pool.faucet_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.faucet_coin, input_balance); + }; +} + +// 我们可以编写一个withdraw函数,并限制只有拥有管理员权限才能提取资金 +public entry fun withdraw_zzf222_coin( + _: &AdminCap, + pool: &mut Pool, + amount: u64, + ctx: &mut TxContext, +) { + let my_coin_balance = balance::split(&mut pool.my_coin, amount); + let my_coin = coin::from_balance(my_coin_balance, ctx); + transfer::public_transfer(my_coin, tx_context::sender(ctx)); +} + +public entry fun withdraw_zzf222_faucet_coin( + _: &AdminCap, + pool: &mut Pool, + amount: u64, + ctx: &mut TxContext, +) { + let faucet_coin_balance = balance::split(&mut pool.faucet_coin, amount); + let faucet_coin = coin::from_balance(faucet_coin_balance, ctx); + transfer::public_transfer(faucet_coin, tx_context::sender(ctx)); +} + +// 在swap函数中,我们可以沿用部分上一节guess_game的代码 +public entry fun swap_faucet_coin_to_my_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + // let faucet_amount = coin::value(& faucet_coin); + // let my_amount = faucet_amount * 1000 / 2000; + // balance::join(&mut pool.faucet_coin, coin::into_balance(faucet_coin)); // join 函数用于接收代币 + // let my_coin_balance = balance::split(&mut pool.my_coin, my_amount); // split函数用于将pool_balance减去对应于amount的数量 + // let my_coin = coin::from_balance(my_coin_balance, ctx); + // transfer::public_transfer(my_coin, tx_context::sender(ctx)); + + let caller = tx_context::sender(ctx); + // get the input value and assert + let input_value = coin::value(&input); + let output_value = amount * 1000 / 2000; // amount千万不要写成input_value! + assert!(input_value >= amount, EInputNotEnough); + // transection the input value to Balance + let mut input_balance = coin::into_balance(input); //Destruct a Coin wrapper and keep the balance. + assert!(balance::value(&pool.my_coin) >= output_value, EPoolNotEnough); + // if input value much than amount, change the excess + if (input_value > amount) { + balance::join( + // join 函数用于接收代币 + &mut pool.faucet_coin, + balance::split(&mut input_balance, amount), // split函数用于将pool_balance减去对应于amount的数量,并返回值为amount的Balance + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.faucet_coin, input_balance); + }; + let output_balance = balance::split(&mut pool.my_coin, output_value); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, caller); +} + +public entry fun swap_my_coin_to_faucet_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + let output_value = amount * 2000 / 1000; + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + assert!(balance::value(&pool.faucet_coin) >= output_value, EPoolNotEnough); + if (input_value > amount) { + balance::join( + &mut pool.my_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.my_coin, input_balance); + }; + let output_balance = balance::split(&mut pool.faucet_coin, output_value); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, caller); +} diff --git a/mover/ctianming/co-learn-2411/project/move_swap/tests/move_swap_tests.move b/mover/ctianming/co-learn-2411/project/move_swap/tests/move_swap_tests.move new file mode 100644 index 000000000..cfd3c3deb --- /dev/null +++ b/mover/ctianming/co-learn-2411/project/move_swap/tests/move_swap_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_swap::move_swap_tests; +// uncomment this line to import the module +// use move_swap::move_swap; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_swap() { + // pass +} + +#[test, expected_failure(abort_code = ::move_swap::move_swap_tests::ENotImplemented)] +fun test_move_swap_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/ctianming/co-learn-2411/readme.md b/mover/ctianming/co-learn-2411/readme.md index 0de4ed216..163cb2e3c 100644 --- a/mover/ctianming/co-learn-2411/readme.md +++ b/mover/ctianming/co-learn-2411/readme.md @@ -2,7 +2,7 @@ ## b站,推特关注 -- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) +- [x] b站,推特关注截图: ![关注截图](./images/b_follow.png) ## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) @@ -10,31 +10,35 @@ ## 每周课程学习 -- [] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](./images/lesson_1.png) +- [x] 第二周:![学习记录截图](./images/lesson_2.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 -- [] 第一周:![学习记录截图](./images/meeting_1.jpg) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](./images/meeting_1.jpg) +- [x] 第二周:![学习记录截图](./images/meeting_2.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 -- [] 第一篇笔记:![第一篇笔记分享](./images/note_share_1.png) -- [] 第二篇笔记 -- [] 第三篇笔记 -- [] 第四篇笔记 +- [x] 第一篇笔记:![第一篇笔记分享](./images/note_share_1.png) +- [x] 第二篇笔记:![第二篇笔记分享](./images/note_share_2.png) +- [x] 第三篇笔记:![第三篇笔记分享](./images/note_share_3.png) +- [x] 第四篇笔记: ![第四篇笔记分享](./images/note_share_4.png) +- [x] 第五篇笔记: ![第五篇笔记分享](./images/note_share_5.png) +- [x] 第六篇笔记: ![第六篇笔记分享](./images/note_share_6.png) ## 对外输出学习笔记 -- [] 第一篇笔记【https://learnblockchain.cn/article/9784】 -- [] 第二篇笔记【学习笔记链接】 -- [] 第三篇笔记【学习笔记链接】 -- [] 第四篇笔记【学习笔记链接】 +- [x] 第一篇笔记【https://learnblockchain.cn/article/9784】 +- [x] 第二篇笔记【https://learnblockchain.cn/article/9823】 +- [x] 第三篇笔记【https://learnblockchain.cn/article/9912】 +- [x] 第四篇笔记【https://learnblockchain.cn/article/9938】 +- [x] 第五篇笔记【https://learnblockchain.cn/article/9969】 +- [x] 第五篇笔记【https://learnblockchain.cn/article/10021】 ## 在HOH社区公众号发布自己的技术文章 diff --git a/mover/ctianming/notes/f3ea1f84698e5177662b1bb32272da29.png b/mover/ctianming/notes/f3ea1f84698e5177662b1bb32272da29.png new file mode 100644 index 000000000..b40e8f254 Binary files /dev/null and b/mover/ctianming/notes/f3ea1f84698e5177662b1bb32272da29.png differ diff --git a/mover/ctianming/notes/image-1.png b/mover/ctianming/notes/image-1.png new file mode 100644 index 000000000..c28d3327f Binary files /dev/null and b/mover/ctianming/notes/image-1.png differ diff --git a/mover/ctianming/notes/image-2.png b/mover/ctianming/notes/image-2.png new file mode 100644 index 000000000..c26067849 Binary files /dev/null and b/mover/ctianming/notes/image-2.png differ diff --git a/mover/ctianming/notes/image.png b/mover/ctianming/notes/image.png new file mode 100644 index 000000000..812ab4a60 Binary files /dev/null and b/mover/ctianming/notes/image.png differ diff --git "a/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\270\211\357\274\211\357\274\232letsmove-task2.md" "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\270\211\357\274\211\357\274\232letsmove-task2.md" new file mode 100644 index 000000000..e92a2a58f --- /dev/null +++ "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\270\211\357\274\211\357\274\232letsmove-task2.md" @@ -0,0 +1,420 @@ +--- +title: sui-move基础(三):letsmove-task2 +date: 2024-11-14 01:19:30 +tags: +--- + +# sui-move基础(三):letsmove-task2 + +### 需求 + +- 完成 Coin相关知识的学习 +- 完成 `My Coin` 的学习并部署主网 +- 完成 `Faucet Coin` 的学习并部署主网 +- 提交 `My Coin` 和 `Faucet Coin` 合约发布 `package id` +- 发送 `My Coin` 给地址 `0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2` +- `Faucet Coin` 需要至少用两个地址mint + +--- + +### 注意事项 + +- 这一节需要在主网上完成,完成上一节之后我们已经获得了一些sui,可以用作gas费。 + +- 可以使用主钱包转水给测试钱包,但不要在开发和测试环境使用主钱包,可能会导致资金损失。 + +### 代码展示 + +首先,我们可以阅读一下教程: + +这一task中,要求的my_coin和faucet_coin的代码其实非常相似,我们可以一起讲解 + +my_coin: + +```rust +module move_coin::my_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use std::debug; + use std::ascii::string; + + public struct MY_COIN has drop {} + + fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"MOON", + b"CTIANMING_MY_COIN", + b"MOON_COIN", + option::none(), + ctx); + debug::print(&string(b"init MY_COIN")); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, ctx.sender()) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + debug::print(&string(b"my_coin mint")); + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } + + public entry fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + debug::print(&string(b"burn")); + coin::burn(treasury_cap, coin); + } +} +``` + +前面的引入crate的操作我们就不再过多赘述,我们来着重看一下init函数: + +```rust +fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"MOON", + b"CTIANMING_MY_COIN", + b"MOON_COIN", + option::none(), + ctx); + debug::print(&string(b"init MY_COIN")); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, ctx.sender()) + } +``` + +首先,`TxContext` 在sui的库中作如下定义: + +```rust +/// Information about the transaction currently being executed. +/// This cannot be constructed by a transaction--it is a privileged object created by +/// the VM and passed in to the entrypoint of the transaction as `&mut TxContext`. +public struct TxContext has drop { + /// The address of the user that signed the current transaction + sender: address, + /// Hash of the current transaction + tx_hash: vector, + /// The current epoch number + epoch: u64, + /// Timestamp that the epoch started at + epoch_timestamp_ms: u64, + /// Counter recording the number of fresh id's created while executing + /// this transaction. Always 0 at the start of a transaction + ids_created: u64, +} +``` + +很明显,它就是一个用于记录交易发生时的各种信息的结构体,标准库中的注释已经足够清晰。很多时候,我们只要正确安装的sui的环境,就可以在ide或者代码编辑器中按住`ctrl`并通过鼠标点击对应的结构体和函数跳转到相应的代码片段,有时需要安装插件或者先进行一次编译。这一点在rust中也一样。 + +接下来我们可以重点看一下 `coin::create_currency` 函数: + +```rust +// === Registering new coin types and managing the coin supply === + +/// Create a new currency type `T` as and return the `TreasuryCap` for +/// `T` to the caller. Can only be called with a `one-time-witness` +/// type, ensuring that there's only one `TreasuryCap` per `T`. +public fun create_currency( + witness: T, + decimals: u8, + symbol: vector, + name: vector, + description: vector, + icon_url: Option, + ctx: &mut TxContext, +): (TreasuryCap, CoinMetadata) { + // Make sure there's only one instance of the type T + assert!(sui::types::is_one_time_witness(&witness), EBadWitness); + + ( + TreasuryCap { + id: object::new(ctx), + total_supply: balance::create_supply(witness), + }, + CoinMetadata { + id: object::new(ctx), + decimals, + name: string::utf8(name), + symbol: ascii::string(symbol), + description: string::utf8(description), + icon_url, + }, + ) +} +``` + +我们来逐一解释一下该函数的参数: +- witness 是一个类型 `T` 的一次性证明者,确保货币只被创建一次。通过 sui::types::is_one_time_witness 进行检查。具体参考:https://move.sui-book.com/programmability/witness-pattern.html +- decimals 指定货币支持的小数位数,定义其精度。 +- symbol 是一个字节向量,表示货币的符号,例如 "USD" 或 "BTC"。 +- name 指定货币的名称。 +- 用于提供货币的描述。 +- icon_url 是一个可选的 URL,指向代表货币的图标。 +- ctx是交易上下文,提供执行交易所需的信息和能力。 + +它返回一个`(TreasuryCap, CoinMetadata)`的元组,其中: + +```rust +/// Capability allowing the bearer to mint and burn +/// coins of type `T`. Transferable +public struct TreasuryCap has key, store { + id: UID, + total_supply: Supply, +} + +/// Each Coin type T created through `create_currency` function will have a +/// unique instance of CoinMetadata that stores the metadata for this coin type. +public struct CoinMetadata has key, store { + id: UID, + /// Number of decimal places the coin uses. + /// A coin with `value ` N and `decimals` D should be shown as N / 10^D + /// E.g., a coin with `value` 7002 and decimals 3 should be displayed as 7.002 + /// This is metadata for display usage only. + decimals: u8, + /// Name for the token + name: string::String, + /// Symbol for the token + symbol: ascii::String, + /// Description of the token + description: string::String, + /// URL for the token logo + icon_url: Option, +} +``` + +这两个返回类型同样已经存在非常清晰的注释,`TreasuryCap`是允许铸造和销毁类型 T 的硬币的能力,`CoinMetadata`是关于硬币的元数据,包括其小数位数、名称、符号、描述和图标 URL。 + +另外,init函数中还调用了两个十分关键的函数: +```rust +/// Freeze `obj`. After freezing `obj` becomes immutable and can no longer be transferred or +/// mutated. +/// The object must have `store` to be frozen outside of its module. +public fun public_freeze_object(obj: T) { + freeze_object_impl(obj) +} + +/// Transfer ownership of `obj` to `recipient`. `obj` must have the `key` attribute, +/// which (in turn) ensures that `obj` has a globally unique ID. Note that if the recipient +/// address represents an object ID, the `obj` sent will be inaccessible after the transfer +/// (though they will be retrievable at a future date once new features are added). +/// The object must have `store` to be transferred outside of its module. +public fun public_transfer(obj: T, recipient: address) { + transfer_impl(obj, recipient) +} +``` + +简单来说: +- public_freeze_object函数将货币锁定,使得其元数据不得再改变。 +- public_transfer将铸币权交给recipient。 + +***注意这个public_transfer函数,这里将出现my_coin和faucet_coin最大的不同。*** + +了解了以上内容,init函数对于我们而言就十分清晰了: + +*它调用coin::create_currency创建一种新的coin,调用public_freeze_object锁定该coin,并调用public_transfer将铸币权交给recipient。* + +接下来的mint函数与burn函数我们不再多言,只需注意:如果需要在sui scan或者其他浏览器直接调用函数,需要加上`entry`。 + +对于 `faucet_coin` ,有: +```rust +module move_coin::faucet_coin { + use sui::coin::{Self, Coin,TreasuryCap}; + use std::debug; + use std::ascii::string; + + public struct FAUCET_COIN has drop {} + + fun init(witness: FAUCET_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"MOON", + b"CTIANMING_FAUCET_COIN", + b"MOON_COIN", + option::none(), + ctx); + debug::print(&string(b"init FAUCET_COIN")); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + debug::print(&string(b"faucet_coin mint")); + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } + + public entry fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + debug::print(&string(b"burn")); + coin::burn(treasury_cap, coin); + } +} +``` + +很显然,这两种coin的代码十分相似,基本就是一模一样。 + +唯一的不同在哪里呢?就在于init函数的最后,调用了public_share_object而非public_transfer。 + +我们看一下public_share_object代码: + +```rust +/// Turn the given object into a mutable shared object that everyone can access and mutate. +/// This is irreversible, i.e. once an object is shared, it will stay shared forever. +/// Aborts with `ESharedNonNewObject` of the object being shared was not created in this +/// transaction. This restriction may be relaxed in the future. +/// The object must have `store` to be shared outside of its module. +public fun public_share_object(obj: T) { + share_object_impl(obj) +} +``` + +可以看到,该函数将铸币权分享给所有人——也就是所有地址都可以铸造该coin,而非recipient单一地址。 + +### 上链与调用 + +编写完相关代码后,我们需要切换到主网,进行编译与部署。 + +#### 部署 + +由于个人觉得sui的一些基础指令较为繁琐,所以编写了一个个人用的Makefile,比较不稳定,但大家如果有兴趣,可以引入自己的项目: +```Makefile +# Sui 项目 Makefile +# 项目路径设置 +MOVE_PATH := . +BUILD_PATH := $(MOVE_PATH)/build +SUI_CLI := sui + +# 默认网络为 devnet,可通过 `make NETWORK=` 来覆盖 +NETWORK := $(or $(NETWORK), mainnet) +GAS_BUDGET := $(or $(GAS_BUDGET), 2000000) + +# 默认目标 +all: build + +# 切换网络 +switch: + @echo "Switching to network: $(NETWORK)..." + @if [ -z "$(NETWORK)" ]; then \ + echo "Error: No network specified. Please set NETWORK."; \ + exit 1; \ + fi + $(SUI_CLI) client switch --env $(NETWORK) + @echo "Switched to network: $(NETWORK)" + export NETWORK=$(NETWORK) +# 编译 Move 代码 +build: + @echo "Building the Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move build --path $(MOVE_PATH) + +# 运行测试 +test: + @echo "Running tests on Sui Move package..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) move test --path $(MOVE_PATH) + +# 发布合约到 Devnet +publish: + @echo "Publishing the package to $(SUI_NETWORK)..." + @if [ -n "$(NETWORK)" ] && [ "$(NETWORK)" != "devnet" ]; then \ + echo "Switching to network: $(NETWORK)"; \ + $(SUI_CLI) client switch --env $(NETWORK); \ + elif [ "$(NETWORK)" = "devnet" ]; then \ + echo "Using the current network $(NETWORK)"; \ + fi + $(SUI_CLI) client publish --gas-budget $(GAS_BUDGET) + +# 清理生成的文件 +clean: + @echo "Cleaning up the build directory..." + rm -rf $(BUILD_PATH) + +# 此命令仅适用于使用 brew 下载 sui 的用户 +update: + @echo "Updating brew and sui" + brew update + brew upgrade sui + +# 查看合约状态 +# 这里我只添加了三个命令,可以根据自己的需要增减 +status: + @echo "Checking the status of the Sui project..." + $(SUI_CLI) client active-env + $(SUI_CLI) client active-address + $(SUI_CLI) client balance + +# 帮助信息 +help: + @echo "使用 Makefile 中的以下命令进行常见操作:" + @echo " make build - 编译 Move 包" + @echo " make test - 测试 Move 包" + @echo " make publish - 发布合约到网络" + @echo " make clean - 清理生成的文件" + @echo " make status - 查看合约状态" + +.PHONY: all build test publish clean status help + +``` + +使用方法: +- 使用sui move new 创建一个典型的sui项目 +- 进入项目目录,新建一个Makefile文件 +- 将上面的内容粘贴进入 +- 使用 `make ` 调用,例如在终端输入 `make build` + +#### 调用 + +首先,由于mint函数需要的第一个参数witness是由init函数创建的,我们需要找到我们的witness对象的object id。合约部署后在终端有许多log,我们在其中就可以找到。 + +具体方法是根据object type,例如,my_coin的witness的object type为`0x2::coin::CoinMetadata<0x2a6acc6295f89f9b4c8b93fd84dfe29f010e9fd279265d93d8ab51fd3fb5338d::my_coin::MY_COIN>`,而faucet_coin的object type为`0x2::coin::TreasuryCap<0x2a6acc6295f89f9b4c8b93fd84dfe29f010e9fd279265d93d8ab51fd3fb5338d::faucet_coin::FAUCET_COIN>`。 + +如果感觉麻烦或者不慎关闭了终端导致log丢失(就是我了呜呜TAT),也可在sui scan直接找到,接下来使用这个办法。 + +调用步骤: + +- 在sui scan 输入自己部署获得的package id +- 在该页面中找到并点击: +![alt text](f3ea1f84698e5177662b1bb32272da29.png) +- 在Object Change板块,我们可以看到部署交易时发生改变的objects,我们需要寻找的对象就在其中,而我们本次部署唯一的shared_object更是容易寻找: +![alt text](image.png) +- 我们可以看到这里的Type被省略了,难以查看,这时只需点击RAW就可以看到完整的Type,我们记下对应的object id +- 返回上一个页面 +![alt text](image-2.png) +- 在Contracts窗口中直接调用即可 + +若要在终端调用,使用: + +```bash +sui client call --package --module 'clock' --function 'access' --args '0x6' --gas-budget +``` + +以上就是本次教程的全部内容,如果有不懂的部分,请先自行询问AI或者查阅相关资料。 + +同样欢迎交流,联系方式:yu18209854584(微信) \ No newline at end of file diff --git "a/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\272\214\357\274\211\357\274\232letsmove-task1.md" "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\272\214\357\274\211\357\274\232letsmove-task1.md" new file mode 100644 index 000000000..c7108a926 --- /dev/null +++ "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\272\214\357\274\211\357\274\232letsmove-task1.md" @@ -0,0 +1,69 @@ +--- +title: sui-move基础(二):letsmove-task1 +date: 2024-11-09 17:52:55 +tags: +--- + +# sui-move基础(二):letsmove-task1 + +image-20241109180430695 + +
+ + 这是sui姬 + +
+ + +上一篇教程已经完成了sui-move环境的配置,从本节开始,将进行sui-move社区的letsmove系列task学习。 + +看到这里的你如果还不知道letsmove,而想要学习sui-move的话,可以进一步了解:https://github.com/move-cn/letsmove。 + +完成task有相应的sui代币奖励。 + +### fork并克隆仓库 + +鉴于本教程为初学者准备,这里首先介绍一下如何创建ssh秘钥: + +​ **创建ssh key,用于ssh方式克隆github代码**。在linux环境下,使用`ssh-keygen -t rsa -b 4096 -C "你的邮箱"`命令,创建ssh key,下面的选项全部直接敲回车即可。 随后使用` cat ~/.ssh/id_rsa.pub` 命令查看生成的公钥,并完整的复制下来。 在github仓库界面点击自己的头像,选择`settings`。进入到设置页面后,点击左侧的`SSH and GPG keys`选项。点击`New SSH key`选项,并将复制下来的内容粘贴上去,添加该ssh key的描述。随后点击`Add SSH key`,并一路点击确认即可。 + +以上教程来自opencamp(https://opencamp.cn/) + +适用于linux系统。 + +fork仓库: + +进入https://github.com/move-cn/letsmove仓库,点击fork,一路确认即可。 + +克隆仓库: + +进入自己fork下来的仓库,点击绿色的 `code` 按钮,选择ssh,复制下面框中的地址。 + +随后来到自己的本地环境,选择一个合适的路径,运行: + +```bash +git clone git@github.com:你的github id/letsmove.git +``` + +如果出现网络问题,请更换节点或魔法开全局或退出魔法。 + +### hello_move + +现在进入刚刚克隆的letsmove目录,应该有如下内容: + +```powershell +(base) amyseer@universe:~/sui/letsmove$ ls +README.md learning_map.md mover task tutorial +``` + +进入task目录,**仔细阅读其中的readme.md**,我这里不再过多赘述。 + +在重命名001目录后,进入该目录,`cd co-learn-2411` (这里可能有区别),` cd project` ,在该路径下运行: + +``` bash +sui move new hello_move +``` + +到这里,建议直接阅读官方文档:https://move.sui-book.com/your-first-move/hello-world.html + +截止到目前,建议起码读完直到 `你好 sui!` 这一章,如果没有编程基础,可能会多花些时间。 \ No newline at end of file diff --git "a/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\272\224\357\274\211\357\274\232letsmove-task4.md" "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\272\224\357\274\211\357\274\232letsmove-task4.md" new file mode 100644 index 000000000..c06982197 --- /dev/null +++ "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\344\272\224\357\274\211\357\274\232letsmove-task4.md" @@ -0,0 +1,479 @@ +--- +title: sui-move基础(五):letsmove-task4 +date: 2024-11-20 00:00:27 +tags: +--- + +# sui-move基础(五):letsmove-task4 + +### 需求 + +- 完成 链游相关知识的学习 +- 完成 随机数的学习,游戏必须包含随机数 +- 完成 存和取游戏资金池 +- 完成 如何存储Coin在合约的学习,游戏必须能存取[task2] 发行的`Faucet Coin`,用`task2`的 `Faucet Coin`作为游戏输赢的资产 +- 完成 第一个游戏合约部署主网 +- 的game 必须包含自己的 `github id`的元素 + +### 写在前面 + +本章的要求是完成一个链游,也就是一个区块链上的游戏。 + +那么既然是游戏,即便只是学习sui move 语言中的一个demo,不论是为了完成task也好,或者为了学习move上的链游也好,都需要进行设计,即使是一个很大概的设计。 + +在这一节中,我们来设计一个很简单的赌博(GAME)游戏————猜数字: + +- 由我们————游戏发起者,设定一个秘密数字,简单起见,我们将其定在1到100之间 +- 我们的游戏币是之前task2时发行的Faucet coin +- 每位游玩者每猜一次都需要支付一定的游戏币(FAUCET_COIN),支付的游戏币将存储在游戏奖池中 +- 每次进行游戏,我们将给出模糊的提示: + - 太大! + - 太小! + - 正确! +- 我们设计多用户模式,随着游戏的进行,奖池金额将不断增加,而秘密数字的范围将逐渐明确 +- BOOM!命中了!有一位幸运的(或者精明的)游玩者给出了正确的数字! + + 而我们的奖励是:奖池所有的COIN!我们甚至会为其额外铸造一枚task4所发行的NFT,作为其胜利的证明! + + 而其他倒霉蛋,只能失去他们所投入的所有COIN,还有gas。(O皿O) +- 这就是我们该死的赌徒游戏的原则: + + 所有,或者一无所有!!! + +现在,游戏模式已经明确了,让我们来进行代码的具体实现。 + +当然,你想要做什么,往往不会在一开始就很明朗,但我们在实现的过程中,专注的大脑往往会冒出一个又一个点子,甚至会令人感到惊艳。 + +所以,JUST DO IT! + +### 代码实现 + +来看看我们的guess_game: +```rust +module move_game::guess_game { + /// 所有,或者一无所有! + use sui::tx_context::{sender}; + use sui::event::emit; + use move_coin::faucet_coin::{Self, FAUCET_COIN}; + use move_nft::move_nft::{Self}; + use sui::coin::{Self,Coin,TreasuryCap}; + use sui::balance::{Self, Balance}; + use sui::address; + use sui::table::{Self, Table}; + use sui::bcs; + + const EInvalid:u64 = 0; + const EInputNotEnough:u64 = 1; + const ECurrencyNotEnough:u64 = 2; + const EHaveWon:u64 = 4; + const ENotUser:u64 = 5; + + /// 定义游戏 + public struct Game has key, store { + id: UID, + secret_number: Option, + attempts: u32, + over: bool, + winner: address, + cost_per_round: u64, + pool: u64, + game_pool: Balance, + users: Table, + } + + /// 定义游戏事件 + public enum GuessEvent has copy, drop, store { + TooSmall, + TooBig, + Correct, + } + + public struct USER has store{ + balance: u64, + } + + public struct AdminCap has key{id:UID} + + /// 初始化游戏 + fun init(ctx: &mut TxContext){ + let game = Game { + id: object::new(ctx), + secret_number: option::none(), + attempts: 0, + over: false, + winner: address::from_u256(0), + cost_per_round: 10, //define the cost per round is 10 faucet_coin + pool: 0, + game_pool: balance::zero(), + users: table::new(ctx), + }; + transfer::share_object(game); + transfer::transfer(AdminCap{id:object::new(ctx)},sender(ctx)); + } + + //get random number + // public entry fun get_random_number(_: &AdminCap, game: &mut Game, r: &Random, ctx: &mut TxContext) { + // let mut generator=random::new_generator(r,ctx); + // let random_value=random::generate_u8_in_range(&mut generator,1,101); + // game.secret_number = random_value as u32; + // } + public entry fun get_random_number(_: &AdminCap, game: &mut Game, magic_number: u64, ctx: &mut TxContext) { + let sender_address = tx_context::sender(ctx); + let timestamp = tx_context::epoch_timestamp_ms(ctx); + let address_bytes = address::to_bytes(sender_address); + let timestamp_bytes = bcs::to_bytes(×tamp); + let magic_number_bytes = bcs::to_bytes(&magic_number); + let mut hash_input = address_bytes; + vector::append(&mut hash_input, timestamp_bytes); + vector::append(&mut hash_input, magic_number_bytes); + let hash_output = sui::hash::blake2b256(&hash_input); + // 取哈希值的第一个字节并转换为随机数 [1, 100] + let random_byte = *vector::borrow(&hash_output, 0); // 解引用 &u8 + let random_value = (random_byte as u32) % 100 + 1; + game.secret_number = option::some(random_value); + } + + //get faucet_coin + public entry fun get_faucet_coin( + treasury_cap:&mut TreasuryCap, + amount: u64, + ctx: &mut TxContext) { + faucet_coin::mint(treasury_cap,amount,tx_context::sender(ctx),ctx); + } + + //deposit Coin + public entry fun deposit(game: &mut Game, input: Coin, amount: u64, ctx: &mut TxContext) { + let caller = tx_context::sender(ctx); + // get the input value and assert + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + // transection the input value to Balance + let mut input_balance = coin::into_balance(input); + // if input valye much tran amount, change the excess + if (input_value > amount) { + balance::join( + &mut game.game_pool, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut game.game_pool, input_balance); + }; + // check if user in table `users` + if (!table::contains(&game.users, caller)) { + // insert new user, and set its balance + table::add(&mut game.users, caller, USER { balance: amount }); + } else { + // user is valid,update its balance + let user = table::borrow_mut(&mut game.users, caller); + user.balance = user.balance + amount; + } + } + + //withdraw Coin + public entry fun withdraw(_: &AdminCap, game: &mut Game, amount: u64, ctx: &mut TxContext) { + let output_balance = balance::split(&mut game.game_pool, amount); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, sender(ctx)); + game.pool = game.pool - amount; + } + + //restart + public entry fun restart(_: &AdminCap, game: &mut Game) { + game.secret_number = option::none(); + game.attempts = 0; + game.over = false; + game.winner = address::from_u256(0); + } + + /// user guess + public entry fun make_guess(game: &mut Game, coin: Coin, guess: u32, ctx: &mut TxContext) { + game.attempts = game.attempts + 1; + let caller = tx_context::sender(ctx); + // base check + assert!(game.secret_number != option::none(), EInvalid); + assert!(game.over != true, EHaveWon); + assert!(game.winner == address::from_u256(0), EHaveWon); + assert!(table::contains(&game.users, caller), ENotUser); + assert!(guess >= 1 && guess <= 100, EInvalid); + // check the balance + let user = table::borrow_mut(&mut game.users, caller); + assert!(user.balance >= game.cost_per_round, ECurrencyNotEnough); // currency not enough + user.balance = user.balance - game.cost_per_round; // deduct the cost + // input the balance into pool + let input_balance = coin::into_balance(coin); + balance::join(&mut game.game_pool, input_balance); + game.pool = game.pool + game.cost_per_round; + // compare guess with secret number + let secret_number = option::borrow(&game.secret_number); + if (guess < *secret_number) { + emit(GuessEvent::TooSmall); // too small + } else if (guess > *secret_number) { + emit(GuessEvent::TooBig); // too big + } else { + // guess correct + emit(GuessEvent::Correct); + // game over + game.over = true; + game.winner = caller; + // get reward + // let reward_balance = balance::split(&mut game.game_pool, user.balance); + // let reward = coin::from_balance(reward_balance, ctx); + // NOTHING, OR EVERYTHING!!! + let reward_balance = balance::split(&mut game.game_pool, 0); + let reward = coin::from_balance(reward_balance, ctx); + transfer::public_transfer(reward, caller); + // give a NFT to winner + move_nft::mint(b"TruE", b"Bless Alysia! from ctianming≥v≤", b"https://avatars.githubusercontent.com/u/107739505?v=4", caller, ctx); + } + } +} +``` + +##### 游戏主体结构 + +首先,来看看我们的游戏主体结构: +```rust +public struct Game has key, store { + id: UID, + secret_number: Option, // 游戏的秘密数字 + attempts: u32, // 用户猜测次数 + over: bool, // 游戏是否结束 + winner: address, // 获胜者地址 + cost_per_round: u64, // 每轮游戏的费用 + pool: u64, // 游戏池中总金额 + game_pool: Balance,// 游戏资金池,使用 FAUCET_COIN + users: Table, // 用户表,记录每个用户的余额 +} +``` + +通过以上的所有属性,我们可以方便地控制游戏的状态。 + +##### 辅助结构 + +接下来是一些辅助的结构: +```rust + /// 定义游戏事件 + public enum GuessEvent has copy, drop, store { + TooSmall, + TooBig, + Correct, + } + + // 存储用户余额 + public struct USER has store{ + balance: u64, + } + + // 存储管理员权限 + public struct AdminCap has key{id:UID} + + // 错误代码,用于在游戏过程中检测非法操作 + const EInvalid:u64 = 0; + const EInputNotEnough:u64 = 1; + const ECurrencyNotEnough:u64 = 2; + const EHaveWon:u64 = 4; + const ENotUser:u64 = 5; +``` + +通过`GuesssEvent`,我们可以在游玩者每次进行guess后对其进行一些模糊的提示,否则这个游戏就过于残酷了,将不会有人来玩它。 + +`USER`结构体非常简单,只有一个唯一的属性balance,用于存储用户余额。 + +`AdminCap`用于存储管理员权限,我们需要一些操作只有管理员才能有权进行,比如设置随机数和重启游戏。 + +这些错误代码用于检测并报告非法操作。 + +##### 游戏初始化 + +接下来,我们进行游戏的初始化,它将在游戏部署时自动执行: +```rust +fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), // 创建游戏的唯一标识符 + secret_number: option::none(), // 初始化秘密数字为 0 + attempts: 0, // 初始化猜测次数为 0 + over: false, // 游戏未结束 + winner: address::from_u256(0), // 初始化获胜者为空地址 + cost_per_round: 10, // 每轮费用为 10 FAUCET_COIN + pool: 0, + game_pool: balance::zero(), // 初始化空资金池 + users: table::new(ctx), // 初始化用户表 + }; + transfer::share_object(game); // 将游戏作为共享对象 + transfer::transfer(AdminCap { id: object::new(ctx) }, sender(ctx)); // 分发管理员权限 +} +``` + +##### 设置秘密数字 + +我们可以看到,现在秘密数字被初始化为None,这代表我们需要在游戏主体中编写逻辑,使得若秘密数字为None则报错并退出;而在游戏开始前,我们需要按着管理员权限去设置秘密数字: +```rust +public entry fun get_random_number(_: &AdminCap, game: &mut Game, magic_number: u64, ctx: &mut TxContext) { + // 获取随机数种子:调用者地址、时间戳、magic_number + let sender_address = tx_context::sender(ctx); + let timestamp = tx_context::epoch_timestamp_ms(ctx); + let address_bytes = address::to_bytes(sender_address); + let timestamp_bytes = bcs::to_bytes(×tamp); + let magic_number_bytes = bcs::to_bytes(&magic_number); + + // 构造哈希输入 + let mut hash_input = address_bytes; + vector::append(&mut hash_input, timestamp_bytes); + vector::append(&mut hash_input, magic_number_bytes); + + // 计算哈希值并生成随机数 + let hash_output = sui::hash::blake2b256(&hash_input); + let random_byte = *vector::borrow(&hash_output, 0); + let random_value = (random_byte as u32) % 100 + 1; + game.secret_number = option::some(random_value); // 设置秘密数字 +} +``` + +我们规定秘密数字范围为 [1, 100]。 + +注意到了吗,这个秘密数字是通过哈希函数生成的,作为管理员,我们能做的只是调用它,并设置一个参数`magic_number`而已。这代表即使是我们自己,也不知道这个秘密数字是什么! + +***公平!公平!还是tmd,公平!*** + +好吧其实管理员完全可以复现一遍操作去将这个数字计算出来(因为哈希算法的源操作数一定,生成的结果也一定),这只能保证不知晓`magic_number`的人难以(或许比登天还难)知晓这个数字而已,诶嘿(≥v≤)。 + +顺带一提,这也就是著名的伪随机数漏洞,有兴趣的可以自行搜索。 + +另外,为了方便调试,我们这里的秘密数字差不多是公开的,可以在sui 浏览器被查到的,在实际的逻辑中,我们需要使用加密技术等方法去隐藏它,例如并不存储明文而是存储它的哈希值。 + +##### 用户存款 + +```rust +public entry fun deposit(game: &mut Game, input: Coin, amount: u64, ctx: &mut TxContext) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); // 检查存入金额 + assert!(input_value >= amount, EInputNotEnough); + + // 转入资金池,处理找零 + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join(&mut game.game_pool, balance::split(&mut input_balance, amount)); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut game.game_pool, input_balance); + }; + + // 更新用户余额 + if (!table::contains(&game.users, caller)) { + table::add(&mut game.users, caller, USER { balance: amount }); + } else { + let user = table::borrow_mut(&mut game.users, caller); + user.balance = user.balance + amount; + }; + // 更新奖池余额 + game.pool = game.pool + amount; +} +``` + +在用户第一次存款时,我们将其加入到users表中,并将余额设置为其存入的COIN金额;若非第一次存款,则直接将其余额增加其存入金额。 + +用户存入的COIN将存入到pool中,等待最终的幸运儿来将它取走。 + +另外,由于用户必须有游戏币才能游玩游戏,所以我们将注册逻辑也集成在deposit函数中。 + +##### 猜数字 + +接下来,看看最重要的部分,我们游戏的主要逻辑:猜数字。 + +实际上,在将其余各结构体和函数设计完成后,这部分的编写是很自然而然的。 + +```rust +/// user guess +public entry fun make_guess(game: &mut Game, coin: Coin, guess: u32, ctx: &mut TxContext) { + game.attempts = game.attempts + 1; + let caller = tx_context::sender(ctx); + // base check + assert!(game.secret_number != 0, EInvalid); + assert!(game.over != true, EHaveWon); + assert!(game.winner == address::from_u256(0), EHaveWon); + assert!(table::contains(&game.users, caller), ENotUser); + assert!(guess >= 1 && guess <= 100, EInvalid); + // check the balance + let user = table::borrow_mut(&mut game.users, caller); + assert!(user.balance >= game.cost_per_round, ECurrencyNotEnough); // currency not enough + user.balance = user.balance - game.cost_per_round; // deduct the cost + // input the balance into pool + // let input_balance = coin::into_balance(coin); + // balance::join(&mut game.game_pool, input_balance); + // game.pool = game.pool + game.cost_per_round; + // compare guess with secret number + let secret_number = option::borrow(&game.secret_number); + if (guess < *secret_number) { + emit(GuessEvent::TooSmall); // too small + } else if (guess > *secret_number) { + emit(GuessEvent::TooBig); // too big + } else { + // guess correct + emit(GuessEvent::Correct); + // game over + game.over = true; + game.winner = caller; + // get reward + // let reward_balance = balance::split(&mut game.game_pool, user.balance); + // let reward = coin::from_balance(reward_balance, ctx); + // NOTHING, OR EVERYTHING!!! + let reward_balance = balance::split(&mut game.game_pool, 0); + let reward = coin::from_balance(reward_balance, ctx); + transfer::public_transfer(reward, caller); + // give a NFT to winner + move_nft::mint(b"TruE", b"Bless Alysia! from ctianming≥v≤", b"https://avatars.githubusercontent.com/u/107739505?v=4", caller, ctx); + } +} +``` + +我们进行一系列检查,确保游戏仍在进行。随后扣去游玩者的费用,并进行检查,如果恰好命中,就给予该游玩者奖励。 + +##### 管理员功能 +```rust +//withdraw Coin + public entry fun withdraw(_: &AdminCap, game: &mut Game, amount: u64, ctx: &mut TxContext) { + let output_balance = balance::split(&mut game.game_pool, amount); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, sender(ctx)); + game.pool = game.pool - amount; + } + + //restart + public entry fun restart(_: &AdminCap, game: &mut Game) { + game.secret_number = option::none(); + game.attempts = 0; + game.over = false; + game.winner = address::from_u256(0); + } + +``` + +我们设计了withdraw函数和restart函数,使得管理员可以提走奖励池的资金和重启游戏。关于提走奖励池资金,这点很不公平,而且这个功能将导致根本不会有人来玩这个游戏了,但本节任务要求我们有withdraw函数。 + +##### 一些其他功能 +```rust +//get faucet_coin + public entry fun get_faucet_coin( + treasury_cap:&mut TreasuryCap, + amount: u64, + ctx: &mut TxContext) { + faucet_coin::mint(treasury_cap,amount,tx_context::sender(ctx),ctx); + } +``` +我们额外设计了一个get_faucet_coin接口,使得游玩者可以便捷地获取游戏币,非常滴人性化。 + +### 总结 + +- 核心功能: + + 1. 存款:用户将资金存入游戏。 + 2. 猜数字:用户尝试猜测随机生成的秘密数字。 + 3. 奖励:猜对数字后,用户获得奖励金和 NFT。 +- 关键点: + + 1. 使用 balance::join 和 balance::split 操作资金池。 + 2. 使用事件通知用户猜测结果。 + 3. 通过 move_nft::mint 发放奖励 NFT。 \ No newline at end of file diff --git "a/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\345\205\255\357\274\211\357\274\232letsmove-task5.md" "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\345\205\255\357\274\211\357\274\232letsmove-task5.md" new file mode 100644 index 000000000..a71a573d7 --- /dev/null +++ "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\345\205\255\357\274\211\357\274\232letsmove-task5.md" @@ -0,0 +1,444 @@ +--- +title: sui-move基础(六):letsmove-task5 +date: 2024-11-24 17:27:00 +tags: +--- + +# sui-move基础(六):letsmove-task5 + +### 需求 + +- 完成 swap相关知识的学习 +- 完成第一个Swap合约的上链部署 +- swap 必须是 swap 自己发行的 task2 两个 Coin的互换,包名必须是自己的`github id` + +### 写在前面 + +本节的内容相对比较简单,基本上完成了前面一个任务就没有任何问题了(尤其是跟着看我的教程的朋友,我的上一个教程写的较难)。 + +所以,本节最重要的是,千万不要想复杂了。如果你发现一个比较简单的实现方法,但是不够优雅,没关系,写! + +毕竟,本task的要求只是:实现一个最简单的swap + +### 概述 + +实现一个最简单的swap,这确实很简单,我们只需要构筑一个池子(`Pool`),其中可以仅仅注入两种Coin(就是我们task2完成的那两种即可),然后编写两个接口,使得这两种Coin可以按照一定的比例兑换:存入x数量的CoinA,然后取走y数量的CoinB;反之亦然。 + +这有点类似原始的以物易物,只是我们以相对高科技的自动化手段实现:Move合约。 + +### 代码概览 + +***请一定注意看代码中的注释!!!*** + +```rust + +module move_swap::move_swap; + +use move_coin::faucet_coin::FAUCET_COIN; +use move_coin::my_coin::MY_COIN; +use sui::balance::{Self, Balance}; +use sui::coin::{Self, Coin}; + +const EInputNotEnough: u64 = 0; +const EPoolNotEnough: u64 = 1; + +public struct AdminCap has key { id: UID } + +public struct Pool has key { + // 如果需要,可以加上两种代币分别的存量属性,这里先不添加 + id: UID, + faucet_coin: Balance, + //faucet_coin_balance: u64, + my_coin: Balance, + //faucet_coin_balance: u64, +} + +fun init(ctx: &mut TxContext) { + let pool = Pool { + id: object::new(ctx), + faucet_coin: balance::zero(), + my_coin: balance::zero(), + }; + transfer::share_object(pool); // pool需要公开,通过AdminCap给予自己额外的管理员权限 + transfer::transfer(AdminCap { id: object::new(ctx) }, tx_context::sender(ctx)); +} + +// 这里我踩了个坑,给pool铸造coin无法增加balance,必须使用balance_join +// 由于在单一函数中无法获取铸造的coin的对象(mint函数直接将coin转给recipient) +// 所以我放弃这个实现 +// public entry fun infuse( +// // 本函数用于给pool注入资金,注意调用这个函数的地址需要拥有MY_COIN的TreasuryCap +// // pool: &mut Pool, +// faucet_treasury_cap: &mut coin::TreasuryCap, +// my_treasury_cap: &mut coin::TreasuryCap, +// amount: u64, +// pool_address: address, +// ctx: &mut TxContext, +// ) { +// my_coin::mint(my_treasury_cap, amount, pool_address, ctx); +// faucet_coin::mint(faucet_treasury_cap, amount, pool_address, ctx); +// } +// 但是,我们可以通过deposit函数,将coin转入pool的balance中 +// 我们还可以指定一个amount,并资金是否足够进行检查,与我们在guess_game中的实现类似 +public entry fun deposit_my_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join( + &mut pool.my_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.my_coin, input_balance); + }; +} + +public entry fun deposit__faucet_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join( + &mut pool.faucet_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.faucet_coin, input_balance); + }; +} + +// 我们可以编写一个withdraw函数,并限制只有拥有管理员权限才能提取资金 +public entry fun withdraw_zzf222_coin( + _: &AdminCap, + pool: &mut Pool, + amount: u64, + ctx: &mut TxContext, +) { + let my_coin_balance = balance::split(&mut pool.my_coin, amount); + let my_coin = coin::from_balance(my_coin_balance, ctx); + transfer::public_transfer(my_coin, tx_context::sender(ctx)); +} + +public entry fun withdraw_zzf222_faucet_coin( + _: &AdminCap, + pool: &mut Pool, + amount: u64, + ctx: &mut TxContext, +) { + let faucet_coin_balance = balance::split(&mut pool.faucet_coin, amount); + let faucet_coin = coin::from_balance(faucet_coin_balance, ctx); + transfer::public_transfer(faucet_coin, tx_context::sender(ctx)); +} + +// 在swap函数中,我们可以沿用部分上一节guess_game的代码 +public entry fun swap_faucet_coin_to_my_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + // let faucet_amount = coin::value(& faucet_coin); + // let my_amount = faucet_amount * 1000 / 2000; + // balance::join(&mut pool.faucet_coin, coin::into_balance(faucet_coin)); // join 函数用于接收代币 + // let my_coin_balance = balance::split(&mut pool.my_coin, my_amount); // split函数用于将pool_balance减去对应于amount的数量 + // let my_coin = coin::from_balance(my_coin_balance, ctx); + // transfer::public_transfer(my_coin, tx_context::sender(ctx)); + + let caller = tx_context::sender(ctx); + // get the input value and assert + let input_value = coin::value(&input); + let output_value = amount * 1000 / 2000; // amount千万不要写成input_value! + assert!(input_value >= amount, EInputNotEnough); + // transection the input value to Balance + let mut input_balance = coin::into_balance(input); //Destruct a Coin wrapper and keep the balance. + assert!(balance::value(&pool.my_coin) >= output_value, EPoolNotEnough); + // if input value much than amount, change the excess + if (input_value > amount) { + balance::join( + // join 函数用于接收代币 + &mut pool.faucet_coin, + balance::split(&mut input_balance, amount), // split函数用于将pool_balance减去对应于amount的数量,并返回值为amount的Balance + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.faucet_coin, input_balance); + }; + let output_balance = balance::split(&mut pool.my_coin, output_value); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, caller); +} + +public entry fun swap_my_coin_to_faucet_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + let output_value = amount * 2000 / 1000; + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + assert!(balance::value(&pool.faucet_coin) >= output_value, EPoolNotEnough); + if (input_value > amount) { + balance::join( + &mut pool.my_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.my_coin, input_balance); + }; + let output_balance = balance::split(&mut pool.faucet_coin, output_value); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, caller); +} + +``` + +我在注释中已经写明了绝大部分需要注意的内容,但我在这里仍然进行一下细节的讲解。 + +### 代码讲解 + +#### 资金池和管理员权限 + +```rust +public struct AdminCap has key { id: UID } + +public struct Pool has key { + // 如果需要,可以加上两种代币分别的存量属性,这里先不添加 + id: UID, + faucet_coin: Balance, + //faucet_coin_balance: u64, + my_coin: Balance, + //faucet_coin_balance: u64, +} +``` + +这是一个很简单的资金池,它只支持进行两种Coin之间的转换。另外,注意类型:`Balance`。 + +这个资金池必须自身拥有资金,才能进行swap,也就是说我们需要给它注入资金。 + +`AdminCap`的作用与前一节的作用相同,赋予管理员权限,用于构造一些只有拥有管理员权限才能调用的函数。 + +#### 初始化 + +```rust +fun init(ctx: &mut TxContext) { + let pool = Pool { + id: object::new(ctx), + faucet_coin: balance::zero(), + my_coin: balance::zero(), + }; + transfer::share_object(pool); // pool需要公开,通过AdminCap给予自己额外的管理员权限 + transfer::transfer(AdminCap { id: object::new(ctx) }, tx_context::sender(ctx)); +} +``` + +我们初始化一个Pool,将其公开,并将管理员权限赋予自己。 + +#### 踩坑记录 + +```rust +// 这里我踩了个坑,给pool铸造coin无法增加balance,必须使用balance_join +// 由于在单一函数中无法获取铸造的coin的对象(mint函数直接将coin转给recipient) +// 所以我放弃这个实现 +// public entry fun infuse( +// // 本函数用于给pool注入资金,注意调用这个函数的地址需要拥有MY_COIN的TreasuryCap +// // pool: &mut Pool, +// faucet_treasury_cap: &mut coin::TreasuryCap, +// my_treasury_cap: &mut coin::TreasuryCap, +// amount: u64, +// pool_address: address, +// ctx: &mut TxContext, +// ) { +// my_coin::mint(my_treasury_cap, amount, pool_address, ctx); +// faucet_coin::mint(faucet_treasury_cap, amount, pool_address, ctx); +// } +// 但是,我们可以通过deposit函数,将coin转入pool的balance中 +// 我们还可以指定一个amount,并资金是否足够进行检查,与我们在guess_game中的实现类似 +``` + +为什么我们需要注意类型:`Balance`,我就是因为没有注意所以踩了这个坑。 + +我的这个infuse实现仅仅将Coin直接铸造并转给了Pool而已,对它的两种Coin的Balance并没有影响,因为我们不曾调用balance包中的函数给其增加balance。 + +并且由于Coin是属于Pool的,我们无法直接操作它,除非额外在这个包中编写接口,但那太麻烦了。 + +#### 存取函数 + +既然无法直接注入资金,我们就编写deposit函数来进行存入,并编写有权限控制的withdraw函数。 + +```rust +public entry fun deposit_my_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join( + &mut pool.my_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.my_coin, input_balance); + }; +} + +public entry fun deposit__faucet_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + if (input_value > amount) { + balance::join( + &mut pool.faucet_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.faucet_coin, input_balance); + }; +} + +// 我们可以编写一个withdraw函数,并限制只有拥有管理员权限才能提取资金 +public entry fun withdraw_zzf222_coin( + _: &AdminCap, + pool: &mut Pool, + amount: u64, + ctx: &mut TxContext, +) { + let my_coin_balance = balance::split(&mut pool.my_coin, amount); + let my_coin = coin::from_balance(my_coin_balance, ctx); + transfer::public_transfer(my_coin, tx_context::sender(ctx)); +} + +public entry fun withdraw_zzf222_faucet_coin( + _: &AdminCap, + pool: &mut Pool, + amount: u64, + ctx: &mut TxContext, +) { + let faucet_coin_balance = balance::split(&mut pool.faucet_coin, amount); + let faucet_coin = coin::from_balance(faucet_coin_balance, ctx); + transfer::public_transfer(faucet_coin, tx_context::sender(ctx)); +} +``` + +在deposit函数中,我们支持存入定量的资金,并可以使用上一节`game_guess`实现过的资金检查机制来进行检查。 + +#### swap实现 + +```rust +// 在swap函数中,我们可以沿用部分上一节guess_game的代码 +public entry fun swap_faucet_coin_to_my_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + // let faucet_amount = coin::value(& faucet_coin); + // let my_amount = faucet_amount * 1000 / 2000; + // balance::join(&mut pool.faucet_coin, coin::into_balance(faucet_coin)); // join 函数用于接收代币 + // let my_coin_balance = balance::split(&mut pool.my_coin, my_amount); // split函数用于将pool_balance减去对应于amount的数量 + // let my_coin = coin::from_balance(my_coin_balance, ctx); + // transfer::public_transfer(my_coin, tx_context::sender(ctx)); + + let caller = tx_context::sender(ctx); + // get the input value and assert + let input_value = coin::value(&input); + let output_value = amount * 1000 / 2000; // amount千万不要写成input_value! + assert!(input_value >= amount, EInputNotEnough); + // transection the input value to Balance + let mut input_balance = coin::into_balance(input); //Destruct a Coin wrapper and keep the balance. + assert!(balance::value(&pool.my_coin) >= output_value, EPoolNotEnough); + // if input value much than amount, change the excess + if (input_value > amount) { + balance::join( + // join 函数用于接收代币 + &mut pool.faucet_coin, + balance::split(&mut input_balance, amount), // split函数用于将pool_balance减去对应于amount的数量,并返回值为amount的Balance + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.faucet_coin, input_balance); + }; + let output_balance = balance::split(&mut pool.my_coin, output_value); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, caller); +} + +public entry fun swap_my_coin_to_faucet_coin( + pool: &mut Pool, + input: Coin, + amount: u64, + ctx: &mut TxContext, +) { + let caller = tx_context::sender(ctx); + let input_value = coin::value(&input); + let output_value = amount * 2000 / 1000; + assert!(input_value >= amount, EInputNotEnough); + let mut input_balance = coin::into_balance(input); + assert!(balance::value(&pool.faucet_coin) >= output_value, EPoolNotEnough); + if (input_value > amount) { + balance::join( + &mut pool.my_coin, + balance::split(&mut input_balance, amount), + ); + let change = coin::from_balance(input_balance, ctx); + transfer::public_transfer(change, caller); + } else { + balance::join(&mut pool.my_coin, input_balance); + }; + let output_balance = balance::split(&mut pool.faucet_coin, output_value); + let output = coin::from_balance(output_balance, ctx); + transfer::public_transfer(output, caller); +} +``` + +swap函数同样使用了之前我们实现过的资金检查机制。 + +我们设置MY_COIN和FAUCET_COIN的兑换比例为 `1 : 2` 。 + +注意我的注释`// amount千万不要写成input_value!`,阅读一下代码,我们将会发现,如果将amount写成input_value,output_value将是以input_value为乘数的积,这将导致检查不通过或者严重的资金损失。 + +上面的被注释掉的代码是没有检查的实现。 + +对于一些需要注意的函数,例如`balance::split`,我已在代码注释中进行了简单的讲解,请仔细阅读。 + +除此之外,其他你认为需要注意的或者感到好奇的函数,请通过`sui move new`新建一个move项目,将本代码复制进去。如果你正确安装了插件,你按住`Ctrl`并点击该函数将可以跳转到对应的源码。 + +阅读源码永远是理解库最好的办法!!! \ No newline at end of file diff --git "a/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\345\233\233\357\274\211\357\274\232letsmove-task3.md" "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\345\233\233\357\274\211\357\274\232letsmove-task3.md" new file mode 100644 index 000000000..5a83421d2 --- /dev/null +++ "b/mover/ctianming/notes/sui-move\345\237\272\347\241\200\357\274\210\345\233\233\357\274\211\357\274\232letsmove-task3.md" @@ -0,0 +1,286 @@ +--- +title: sui-move基础(四):letsmove-task3 +date: 2024-11-16 22:53:05 +tags: +--- + +# sui-move基础(四):letsmove-task3 + +### 需求 + +- 完成 NFT相关知识的学习 +- 完成可以mint NFT的合约上链 +- 给自己地址mint一个NFT +- NFT必须是自己 github 的头像作为图片 +- mint 一个 nft 发送到地址: `0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2` +- 提交mint到自己地址的浏览器查看(Scan)截图 + +--- + +### sui 上的 nft + +在编写move_nft之前。我们首先需要了解:什么是nft? + +以太坊官方将 NFT 描述为: + +- 唯一的数字资产 + + NFT 是一类 独一无二的数字资产,每个 NFT 都有独特的元数据,能够标识其所有权和具体特性。例如,艺术品、收藏品、游戏内物品等都可以被表示为 NFT。 + +- 基于区块链的所有权证明 + + 通过以太坊区块链上的智能合约,NFT 的所有权是 透明且安全的,每笔转移记录都可以追溯,且不可篡改。 + +- 不可分割 + + 大多数 NFT 是不可分割的(例如,不像比特币可以分割为更小的单位),它们通常只能作为一个完整的实体进行买卖。 + +- 遵循标准协议 + + NFT 的功能和特性是基于以太坊上的标准协议实现的,其中最常见的是: + + ERC-721: NFT 标准,定义了 NFT 的基础功能。 + + ERC-1155: 提供更灵活的功能,可支持同质化代币和非同质化代币的组合。 + +- 具有可编程性 + + NFT 是基于智能合约的,这意味着它们可以支持复杂的交互,例如设置版税(royalties),确保每次转售时,创作者可以获得一定比例的收入。 + +而sui上的NFT除了具有以上特点以外,还因为sui链的特性拥有了一些额外的特点。 + +首先,我们引用一下官方文档: + + +>On Sui, everything is an object. Moreover, everything is a non-fungible token (NFT) as its objects are unique, non-fungible, and owned. +> +>Creating NFTs on Sui differs from other blockchains that are not object based. Those blockchains require a dedicated standard to handle the properties that define NFTs because they are based on a mapping between smart contracts and the token's ID. For instance, the ERC-721 standard on Ethereum was necessary to pair a globally unique ID with the relevant smart contract address to create a unique token instance on the network. +> +>On Sui, every object already has a unique ID, so whether you're dealing with a million fungible tokens, like coins, or thousands of NFTs with individual characteristics, like SuiFrens, your smart contracts on Sui always interact with individual objects. +> +>Imagine you create an Excitable Chimp NFT collection on Sui and another blockchain that isn't object based. To get an attribute like the Chimp's name on the other blockchain, you would need to interact with the smart contract that created the NFT to get that information (typically from off-chain storage) using the NFT ID. On Sui, the name attribute can be a field on the object that defines the NFT itself. This construct provides a much more straightforward process for accessing metadata for the NFT as the smart contract that wants the information can just return the name from the object itself. + +翻译一下(来自gpt): + +>在 Sui 中,一切皆为对象。而且,这些对象是独一无二的、不可替代的,并且有所有权,因此可以将其视为不可替代代币(NFT)。 +> +>在 Sui 上创建 NFT 的方式与其他非对象为基础的区块链不同。那些区块链需要专门的标准来处理定义 NFT 属性的逻辑,因为它们是基于智能合约和代币 ID 的映射。例如,以太坊上的 ERC-721 标准就是为了将全局唯一的 ID 与相关智能合约地址配对,以在网络上创建一个独特的代币实例。 +> +>而在 Sui 上,每个对象已经有了唯一的 ID,因此,无论你处理的是像硬币这样的数百万可替代代币,还是像 SuiFrens 这样的具有个体特性的数千个 NFT,你在 Sui 上的智能合约始终是与单独的对象交互。 +> +>假设你在 Sui 上创建了一个名为“Excitable Chimp”(激动的黑猩猩)的 NFT 收藏品,同时也在其他非对象为基础的区块链上创建了同样的收藏品。在其他区块链上,如果你想获取黑猩猩的名字等属性,你需要通过创建 NFT 的智能合约,利用 NFT 的 ID 来获取这些信息(通常存储在链下)。而在 Sui 上,名称属性可以直接作为定义 NFT 的对象的一个字段。这种设计使得访问 NFT 元数据的过程更加简便,因为想要这些信息的智能合约可以直接从对象本身返回名称,而无需复杂的额外操作。 + +总结一下,就是: + +1. 一切皆对象,且皆为 NFT + +2. 无需专门的 NFT 标准 + +3. 智能合约直接与对象交互 + +了解了以上信息以后,我们很清楚NFT在sui上自然也有其独特的实现。 + +### 代码讲解 + +我们来看一下代码: + +```rust +module move_nft::move_nft { + use std::string; + use sui::url::{Self, Url}; + use sui::event; + + public struct MOVENFT has key, store { + id: UID, + name: string::String, + description: string::String, + url: Url, + } + + public struct NFTMinted has copy, drop { + // The Object ID of the NFT + object_id: ID, + // The creator of the NFT + creator: address, + // The name of the NFT + name: string::String, + } + + + /// Get the NFT's `name` + public fun name(nft: &MOVENFT): &string::String { + &nft.name + } + + /// Get the NFT's `description` + public fun description(nft: &MOVENFT): &string::String { + &nft.description + } + + /// Get the NFT's `url` + public fun url(nft: &MOVENFT): &Url { + &nft.url + } + + // ===== Entrypoints ===== + + #[allow(lint(self_transfer))] + public entry fun mint_to_sender( + name: vector, + description: vector, + url: vector, + ctx: &mut TxContext + ) { + let sender = ctx.sender(); + let nft = MOVENFT { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + url: url::new_unsafe_from_bytes(url) + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: sender, + name: nft.name, + }); + + transfer::public_transfer(nft, sender); + } + + #[allow(lint(self_transfer))] + public entry fun mint( + name: vector, + description: vector, + url: vector, + recipient: address, + ctx: &mut TxContext + ) { + let sender = ctx.sender(); + let nft = MOVENFT { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + url: url::new_unsafe_from_bytes(url) + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: sender, + name: nft.name, + }); + + transfer::public_transfer(nft, recipient); + } + + /// Transfer `nft` to `recipient` + public entry fun transfer( + nft: MOVENFT, recipient: address, _: &mut TxContext + ) { + transfer::public_transfer(nft, recipient) + } + + /// Update the `description` of `nft` to `new_description` + public entry fun update_description( + nft: &mut MOVENFT, + new_description: vector, + _: &mut TxContext + ) { + nft.description = string::utf8(new_description) + } + + /// Permanently delete `nft` + public entry fun burn(nft: MOVENFT, _: &mut TxContext) { + let MOVENFT { id, name: _, description: _, url: _ } = nft; + id.delete() + } +} +``` + +首先我们需要注意两个结构体: + +```rust +public struct MOVENFT has key, store { + id: UID, + name: string::String, + description: string::String, + url: Url, + } + +public struct NFTMinted has copy, drop { + // The Object ID of the NFT + object_id: ID, + // The creator of the NFT + creator: address, + // The name of the NFT + name: string::String, + } +``` + +首先,每一个结构体拥有什么、哪些能力(trait),这都是不可忽视的,在官方文档中,我们可以看到: + +- 具有 key 能力的结构体被认为是一个对象,并且可以在存储函数中使用。Sui 验证器要求结构体的第一个字段必须命名为 id,并且类型为 UID。 + +- >store是一种特殊的能力,允许将类型存储在对象中。该能力是字段可以在具有key能力的结构体中使用的必需条件。换句话说,store能力允许值被包装在对象中。 + +- 在 Move 中,类型上的 copy 能力表示该类型的实例或值可以被复制。 + +- drop 能力是最简单的能力,允许对结构体的实例进行“忽略”或“丢弃”。在Move中,不允许忽略没有drop能力的结构体。 + +另外,注意: + +具有 key 能力的结构体仍然是一个结构体,可以拥有任意数量的字段和关联函数。对于打包、访问或解包结构体,并没有特殊的处理或语法要求。 + +然而,由于对象结构体的第一个字段必须是类型为 UID 的字段 - 一个不可复制也不可丢弃的类型,因此结构体本身在设计上是不可丢弃的。 + +那么现在来看一下`MOVENFT`结构体: + +> 我们定义了这样一个结构体,它有id、name、description、url这四个子项,其中url这个子项我们需要赋值一个外部链接,使得我们的NFT与该链接包含的内容联系起来——反过来说,我们给那个内容添加了一个唯一的token,也就是我们的NFT。 + +而`NFTMinted`结构体,主要用于: + +> 保存NFT的object id、创建者地址、NFT的名字 + +在其余的函数里,逻辑都比较简单,我们主要只看`mint`,以`mint_to_sender`为例: +```rust +#[allow(lint(self_transfer))] + public entry fun mint_to_sender( + name: vector, + description: vector, + url: vector, + ctx: &mut TxContext + ) { + let sender = ctx.sender(); + let nft = MOVENFT { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + url: url::new_unsafe_from_bytes(url) + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: sender, + name: nft.name, + }); + + transfer::public_transfer(nft, sender); + } +``` + +这个函数的主要功能便是使用传入的参数为NFT赋值(也就是相当于锻造了一个新的NFT),当然其中具有唯一性的只有id(这在sui中的实现实在过于简单,使得我们可能容易忽略它)。 + +若对id的产生感兴趣,我们溯源到如下代码: + +```rust +/// Native function for deriving an ID via hash(tx_hash || ids_created) +native fun derive_id(tx_hash: vector, ids_created: u64): address; +``` + +它通过tx_hash和ids_created来产生一个address。 + +在那之后,我们触发一个event,告知我们铸造了一个NFT,另一个结构体`NFTMinted`在这里派上了用场。 + +最后,我们将NFT发送给我们预先通过`let sender = ctx.sender();`获取的sender。 + +在这之后的部署上链和调用,我们在上一节已讲过,大同小异,不再赘述。 \ No newline at end of file diff --git a/mover/ctianming/readme.md b/mover/ctianming/readme.md index ab2e098ee..b71b00663 100644 --- a/mover/ctianming/readme.md +++ b/mover/ctianming/readme.md @@ -16,34 +16,34 @@ ## 任务 ## 01 hello move -- [] Sui cli version: sui 1.37.1-homebrew -- [] Sui钱包截图: ![Sui钱包截图](co-learn-2411/images/wallet.png) -- [] package id: 0x66b06f293cefd4f3dfd242c6909943bdee46c5f62f22b429f84e3ff061b1b1d7 -- [] package id 在 scan上的查看截图:![Scan截图](co-learn-2411/images/task_1_scan.png) +- [x] Sui cli version: sui 1.37.1-homebrew +- [x] Sui钱包截图: ![Sui钱包截图](co-learn-2411/images/wallet.png) +- [x] package id: 0x66b06f293cefd4f3dfd242c6909943bdee46c5f62f22b429f84e3ff061b1b1d7 +- [x] package id 在 scan上的查看截图:![Scan截图](co-learn-2411/images/task_1_scan.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0x2a6acc6295f89f9b4c8b93fd84dfe29f010e9fd279265d93d8ab51fd3fb5338d +- [x] Faucet package id : 0x2a6acc6295f89f9b4c8b93fd84dfe29f010e9fd279265d93d8ab51fd3fb5338d +- [x] 转账 `My Coin` hash:BgEW2PdHCWZgc8H4GTYRvVt6R2osSDcCQmFjd3CYXPz1 +- [x] `Faucet Coin` address1 mint hash:2KvaaNNBrzaqysYfhYCHUjUyRBerB9cMRMueLoNuPW4f +- [x] `Faucet Coin` address2 mint hash:2K1Pzkd4txHh1WqsyskekFvbCRhs3eW4LLVWTA3xQ4S9 ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :0xa376a51b344ba611df52a26df951a20366223f9d973245a4b35a22b836e54261 +- [x] nft object id : 0x67a7ab0bfa731986a69d05e4aceaf268b8aaecaa5a84191ba6dc36397ebe8c07 +- [x] 转账 nft hash:DDAFPPgM9MroQmAc1yFezMAUmYvgFgKBvhJM2eRQ6xJ9 +- [x] scan上的NFT截图:![Scan截图](co-learn-2411/images/task3_image.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id :0xed3a81bb858d2b3807b2ad29597c637b7972dacd60a5120b9a0e92f9c0164087 +- [x] deposit Coin hash:HfvskSw7kM9PjxdFqxLaVJdEHrTTJTnBuVVLhxXiF9Zf +- [x] withdraw `Coin` hash:BntB66wAyoP2ZMvAZUzHgNBbvXsatA3kvJ2eNncPgTbM +- [x] play game hash:4ZBZBzcqpFX99GM2zExSFXgxM84X4Gw8n8xTYSg8ytMx ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [x] swap package id :0x2ef63206c65f457cb14db4806f101958336ac4503675b04fd7120c7c33680ece +- [x] call swap CoinA-> CoinB hash :EmpHg9SsXB2S1m27JLQu3nsn3e8DKS4Cio739K7YRYRc +- [x] call swap CoinB-> CoinA hash :GZKdW1LguJ3yJqjvcP4WHjc3p25iPmZsyBbm3QWXSx5Z ## 06 Dapp-kit SDK PTB - [] save hash : diff --git a/mover/ctrainbow/co-learn-2411/images/readme.md b/mover/ctrainbow/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/ctrainbow/co-learn-2411/project/readme.md b/mover/ctrainbow/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/ctrainbow/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/ctrainbow/co-learn-2411/readme.md b/mover/ctrainbow/co-learn-2411/readme.md new file mode 100644 index 000000000..9b3eccb1d --- /dev/null +++ b/mover/ctrainbow/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/ctrainbow/code/readme.md b/mover/ctrainbow/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/ctrainbow/code/task1/hello_move/Move.toml b/mover/ctrainbow/code/task1/hello_move/Move.toml new file mode 100644 index 000000000..f99a76a8d --- /dev/null +++ b/mover/ctrainbow/code/task1/hello_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hello_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hello_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/ctrainbow/code/task1/hello_move/sources/hello_move.move b/mover/ctrainbow/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..acd018b54 --- /dev/null +++ b/mover/ctrainbow/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,21 @@ +/* +/// Module: hello_move +module hello_move::hello_move; +*/ +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::transfer::transfer; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"ctrainbow"), + }; + transfer(hello_move, ctx.sender()); +} \ No newline at end of file diff --git a/mover/ctrainbow/code/task1/hello_move/tests/hello_move_tests.move b/mover/ctrainbow/code/task1/hello_move/tests/hello_move_tests.move new file mode 100644 index 000000000..7798d8dda --- /dev/null +++ b/mover/ctrainbow/code/task1/hello_move/tests/hello_move_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hello_move::hello_move_tests; +// uncomment this line to import the module +// use hello_move::hello_move; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hello_move() { + // pass +} + +#[test, expected_failure(abort_code = ::hello_move::hello_move_tests::ENotImplemented)] +fun test_hello_move_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/ctrainbow/images/img.png b/mover/ctrainbow/images/img.png new file mode 100644 index 000000000..d9d503085 Binary files /dev/null and b/mover/ctrainbow/images/img.png differ diff --git a/mover/ctrainbow/images/img_1.png b/mover/ctrainbow/images/img_1.png new file mode 100644 index 000000000..45623f386 Binary files /dev/null and b/mover/ctrainbow/images/img_1.png differ diff --git a/mover/ctrainbow/notes/readme.md b/mover/ctrainbow/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/ctrainbow/readme.md b/mover/ctrainbow/readme.md new file mode 100644 index 000000000..abb064f00 --- /dev/null +++ b/mover/ctrainbow/readme.md @@ -0,0 +1,54 @@ +## 基本信息 +- Sui钱包地址: `0xb42585d0cea9794df9910844706c8ee7550722d8cf06ff44d3b17b35829d56bf` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `xxx` + +## 个人简介 +- 工作经验: 0年 +- 技术栈: `xx` `xx` +> 重要提示 请认真写自己的简介 +- 想学习了解move +- 联系方式: tg: `xx` + +## 任务 + +## 01 hello move +- [] Sui cli version: sui 1.37.3-b8eb8920aeca +- [] Sui钱包截图: ![Sui钱包截图](![img.png](images%2Fimg.png)./images/你的图片地址) +- [] package id: package id: 0x3d2862a51624af72b07635ad722a01243fab4a77b504c773fb197fb5b3d30bce +- [] package id 在 scan上的查看截图:![Scan截图](![img_1.png](images%2Fimg_1.png)./images/你的图片地址) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/ctrainbow/scan/readme.md b/mover/ctrainbow/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/ctrainbow/scan/readme.md @@ -0,0 +1 @@ + diff --git a/mover/ddybhm/co-learn-2411/images/b.jpg b/mover/ddybhm/co-learn-2411/images/b.jpg new file mode 100644 index 000000000..fe610e9ca Binary files /dev/null and b/mover/ddybhm/co-learn-2411/images/b.jpg differ diff --git a/mover/ddybhm/co-learn-2411/images/x.jpg b/mover/ddybhm/co-learn-2411/images/x.jpg new file mode 100644 index 000000000..187360f67 Binary files /dev/null and b/mover/ddybhm/co-learn-2411/images/x.jpg differ diff --git a/mover/didigo545/coLearn2411/images/img.png b/mover/didigo545/coLearn2411/images/img.png new file mode 100644 index 000000000..8b5ce69bc Binary files /dev/null and b/mover/didigo545/coLearn2411/images/img.png differ diff --git a/mover/didigo545/coLearn2411/images/img_1.png b/mover/didigo545/coLearn2411/images/img_1.png new file mode 100644 index 000000000..94dcfcf68 Binary files /dev/null and b/mover/didigo545/coLearn2411/images/img_1.png differ diff --git a/mover/didigo545/coLearn2411/images/readme.md b/mover/didigo545/coLearn2411/images/readme.md new file mode 100644 index 000000000..2362026ff --- /dev/null +++ b/mover/didigo545/coLearn2411/images/readme.md @@ -0,0 +1,7 @@ +![img.png](img.png) +![img_1.png](img_1.png) +![B站.png](../../../../../../../Desktop/B%E7%AB%99.png) +![水分子.jpg](../../../../../../../Desktop/%E6%B0%B4%E5%88%86%E5%AD%90.jpg) +![tg关注.jpg](../../../../../../../Desktop/tg%E5%85%B3%E6%B3%A8.jpg) +![仓库标星.jpg](../../../../../../../Desktop/%E4%BB%93%E5%BA%93%E6%A0%87%E6%98%9F.jpg) +![参加会议.jpg](../../../../../../../Desktop/%E5%8F%82%E5%8A%A0%E4%BC%9A%E8%AE%AE.jpg) \ No newline at end of file diff --git a/mover/didigo545/coLearn2411/project/readme.md b/mover/didigo545/coLearn2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/didigo545/coLearn2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/didigo545/coLearn2411/readme.md b/mover/didigo545/coLearn2411/readme.md new file mode 100644 index 000000000..e20223a39 --- /dev/null +++ b/mover/didigo545/coLearn2411/readme.md @@ -0,0 +1,53 @@ + + +## b站,推特关注 + +- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + diff --git a/mover/didigo545/code/readme.md b/mover/didigo545/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/didigo545/code/task1/hellomove/Move.toml b/mover/didigo545/code/task1/hellomove/Move.toml new file mode 100644 index 000000000..be65a17c8 --- /dev/null +++ b/mover/didigo545/code/task1/hellomove/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hellomove" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hellomove = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/didigo545/code/task1/hellomove/sources/hellomove.move b/mover/didigo545/code/task1/hellomove/sources/hellomove.move new file mode 100644 index 000000000..d057c8d1e --- /dev/null +++ b/mover/didigo545/code/task1/hellomove/sources/hellomove.move @@ -0,0 +1,17 @@ +module hellomove::hello ; + +use std::ascii::{String, string}; +use sui::transfer::transfer; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"didigo545"), + }; + transfer(hello_move, ctx.sender()); +} \ No newline at end of file diff --git a/mover/didigo545/code/task1/hellomove/tests/hellomove_tests.move b/mover/didigo545/code/task1/hellomove/tests/hellomove_tests.move new file mode 100644 index 000000000..3f6ec59dc --- /dev/null +++ b/mover/didigo545/code/task1/hellomove/tests/hellomove_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hellomove::hellomove_tests; +// uncomment this line to import the module +// use hellomove::hellomove; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hellomove() { + // pass +} + +#[test, expected_failure(abort_code = ::hellomove::hellomove_tests::ENotImplemented)] +fun test_hellomove_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/didigo545/notes/readme.md b/mover/didigo545/notes/readme.md new file mode 100644 index 000000000..3fabc9c83 --- /dev/null +++ b/mover/didigo545/notes/readme.md @@ -0,0 +1 @@ +//0基础学习的 进度比较慢。加油不放弃 \ No newline at end of file diff --git a/mover/didigo545/readme.md b/mover/didigo545/readme.md new file mode 100644 index 000000000..ef7117a58 --- /dev/null +++ b/mover/didigo545/readme.md @@ -0,0 +1,55 @@ +## 基本信息 +- Sui钱包地址: `0x9b7e6de1e74202218f30513540189b75bf017a3e7dda691bb7038f58c4192e55` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `didigo545` + +## 个人简介 +- 工作经验: 0年 +- 技术栈: +> 重要提示 请认真写自己的简介 +- 没有web2开发经验,对Move特别感兴趣,想通过Move入门区块链 +- 联系方式: tg: `didigo545` + +## 任务 + +## 01 hello move +- [√] Sui cli version:sui 1.37.3 +- [√] Sui钱包截图: ![Sui钱包截图](/Users/shaoweiwang/Desktop/钱包截图1.png) +- [√] package id: 0x37a6d1eeb4cfde0baa41fc7b6849fab777511c4a6c0b92bc026a97d773eb20e6 +- [√] package id 在 scan上的查看截图:![Scan截图](/Users/shaoweiwang/Desktop/浏览器截图.png) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : + diff --git a/mover/didigo545/scan/readme.md b/mover/didigo545/scan/readme.md new file mode 100644 index 000000000..2d1938033 --- /dev/null +++ b/mover/didigo545/scan/readme.md @@ -0,0 +1,13 @@ +![131731764356_.pic.jpg](../../../../../../Library/Containers/com.tencent.xinWeChat/Data/Library/Application%20Support/com.tencent.xinWeChat/2.0b4.0.9/9146c532503958328d0f3a842d5a1d21/Message/MessageTemp/731bbda69d35d134d464a5cfd76437e3/Image/131731764356_.pic.jpg) +![141731764356_.pic.jpg](../../../../../../Library/Containers/com.tencent.xinWeChat/Data/Library/Application%20Support/com.tencent.xinWeChat/2.0b4.0.9/9146c532503958328d0f3a842d5a1d21/Message/MessageTemp/731bbda69d35d134d464a5cfd76437e3/Image/141731764356_.pic.jpg) +![151731764361_.pic.jpg](../../../../../../Library/Containers/com.tencent.xinWeChat/Data/Library/Application%20Support/com.tencent.xinWeChat/2.0b4.0.9/9146c532503958328d0f3a842d5a1d21/Message/MessageTemp/731bbda69d35d134d464a5cfd76437e3/Image/151731764361_.pic.jpg) +![161731764495_.pic.jpg](../../../../../../Library/Containers/com.tencent.xinWeChat/Data/Library/Application%20Support/com.tencent.xinWeChat/2.0b4.0.9/9146c532503958328d0f3a842d5a1d21/Message/MessageTemp/731bbda69d35d134d464a5cfd76437e3/Image/161731764495_.pic.jpg) +![171731764579_.pic.jpg](../../../../../../Library/Containers/com.tencent.xinWeChat/Data/Library/Application%20Support/com.tencent.xinWeChat/2.0b4.0.9/9146c532503958328d0f3a842d5a1d21/Message/MessageTemp/731bbda69d35d134d464a5cfd76437e3/Image/171731764579_.pic.jpg) + + + +![参加会议.jpg](../../../../../../Desktop/%E5%8F%82%E5%8A%A0%E4%BC%9A%E8%AE%AE.jpg) +![B站.png](../../../../../../Desktop/B%E7%AB%99.png) +![水分子.jpg](../../../../../../Desktop/%E6%B0%B4%E5%88%86%E5%AD%90.jpg) +![tg关注.jpg](../../../../../../Desktop/tg%E5%85%B3%E6%B3%A8.jpg) +![仓库标星.jpg](../../../../../../Desktop/%E4%BB%93%E5%BA%93%E6%A0%87%E6%98%9F.jpg) \ No newline at end of file diff --git a/mover/fengfengxiong123/code/readme.md b/mover/fengfengxiong123/code/readme.md index f1af33134..be9e10324 100644 --- a/mover/fengfengxiong123/code/readme.md +++ b/mover/fengfengxiong123/code/readme.md @@ -1,5 +1,15 @@ # 命令 ```shell + +# 学习文档 +https://move.sui-book.com/your-first-move/hello-world.html + +# task代码 +https://github.com/hoh-zone/move-bootcamp + +# fork分支 +https://github.com/move-cn/letsmove + # 配置代理拉取代码 git clone -c http.proxy="127.0.0.1:2334" https://github.com/fengfengxiong123/letsmove.git @@ -9,10 +19,17 @@ sui -V # 零测试网sui币 sui client faucet +# 正在使用的地址 +sui client active-address + # 查看gas sui client gas +# 创建新项目 +sui move new xxx + # 发布上链 +cd xxx sui client publish # 测试网查看package地址 @@ -24,9 +41,146 @@ Transaction Digest: FuxCGHzDKWHko7UfiCxZbUFa7a7KKSLbdwPVgZyNt5Bc # 找到package id changes页 - Type为package/action为published +# PACKAGE_ID +0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667 + +# 账户 +0xd4d7fd4aef735c6da8d394c3f71f9ed5cd48ab277fe2be51c5b13761c0a5300c + +# 使用ptb构建交易 +sui client ptb \ +--gas-budget 100000000 \ +--assign sender @$MY_ADDRESS \ +--move-call $PACKAGE_ID::todo_list::new \ +--assign list \ +--transfer-objects "[list]" sender + +sui client ptb \ +--gas-budget 100000000 \ +--assign sender @0xd4d7fd4aef735c6da8d394c3f71f9ed5cd48ab277fe2be51c5b13761c0a5300c \ +--move-call 0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667::todo_list::new \ +--assign list \ +--transfer-objects "[list]" sender + + +# LIST_ID +0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa + +# ptb交易 +sui client ptb \ +--gas-budget 100000000 \ +--move-call 0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667::todo_list::add @0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa "'Finish the Hello, Sui chapter'" + + + +# 查看list_id +sui client object 0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa + +# 链式命令 +sui client ptb \ +--gas-budget 100000000 \ +--move-call $PACKAGE_ID::todo_list::add @$LIST_ID "'Finish Concepts chapter'" \ +--move-call $PACKAGE_ID::todo_list::add @$LIST_ID "'Read the Move Basics chapter'" \ +--move-call $PACKAGE_ID::todo_list::add @$LIST_ID "'Learn about Object Model'" \ +--move-call $PACKAGE_ID::todo_list::remove @$LIST_ID 0 +sui client ptb \ +--gas-budget 100000000 \ +--move-call 0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667::todo_list::add @0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa "'Finish Concepts chapter'" \ +--move-call 0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667::todo_list::add @0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa "'Read the Move Basics chapter'" \ +--move-call 0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667::todo_list::add @0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa "'Learn about Object Model'" \ +--move-call 0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667::todo_list::remove @0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa 0 +# 查看list_id +sui client object 0xb4e0cc01ad7bcb4bd3debdcb8bfa437b42435c313e2b05a28506dcb4779e49fa -``` \ No newline at end of file +``` + +## task2 调用命令 +```shell +sui client call \ + --package 0x1234567890abcdef \ + --module MyCoin \ + --function mint \ + --args \ + "0xdeadbeef" \ + "1000" \ + "0xrecipient_address" \ + --gas-budget 2000 + + + sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args 0x375aa2e13fdd2b740ed93c9b90e0a1353875b721c2872925e50b92366c65e599::dao::DAO \ + --args \ + 0x1021116270d1bee0eaabd4353a2b998009c74f86573df54a37a291cab33782d1 \ + 1000000000 \ + 0xd790d41adfffd48df8e38607991a297970743decff87517e647008a652587d4c + +``` + +## 共享币 +```shell + sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args 0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824::dao::DAO \ + --args \ + 0x7a2079da6aa6a74d5a3466f98afe96a47cecca0be6c79ef151aa370720f855fd \ + 1000000000 \ + 0x1cf6273dc8d5f7f8189fbae937741434d388fefeabe029ac128c2fed67633498 +``` + +## 主网 +Digest: 9VCLdmeCVTtbcHs6ygV96YYMMSF3qnWrz1o6Aadx84QL + +账户:0x1cf6273dc8d5f7f8189fbae937741434d388fefeabe029ac128c2fed67633498 +pkg id : 0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83 + +### coin对象id +obj id : 0x56d0bb3c37de365e23a2c56180601da49d8b23794b45119f4fbb4c64deb1825a +ObjectType: 0x2::coin::CoinMetadata<0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83::faucetcoin::FAUCETCOIN> + +ObjectID: 0x6a64c9dbce72db96f7cc9cd7be8531f546a5ca3e9ebc43da2569f5e354bd6487 +ObjectType: 0x2::coin::CoinMetadata<0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83::dao::DAO> + +### TreasuryCap信息 +DAO TreasuryCap obj id : 0xe880375ea3d82755a9c387bf3fb705a9bbc5982afc5d16349773e162754a9b86 +faucet coin TreasuryCap obj id : 0x56d0bb3c37de365e23a2c56180601da49d8b23794b45119f4fbb4c64deb1825a + +## mint dao +```shell + sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args 0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83::dao::DAO \ + --args \ + 0xe880375ea3d82755a9c387bf3fb705a9bbc5982afc5d16349773e162754a9b86 \ + 7000000000 \ + 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 \ + --gas-budget 100000000 +``` + +## mint faucet coin + +```shell + sui client call \ + --package 0x2 \ + --module coin \ + --function mint_and_transfer \ + --type-args 0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83::faucetcoin::FAUCETCOIN \ + --args \ + 0x56d0bb3c37de365e23a2c56180601da49d8b23794b45119f4fbb4c64deb1825a \ + 8000000000 \ + 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 \ + --gas-budget 100000000 +``` + +## 使用sui cli转账 +sui client transfer-sui --to 0x2e312e10390700d045ae462dcac090354bda4a81dc151c0d538a250beb0492f5 --amount 13266772 --sui-coin-object-id 0x1feb5ad79c303c52cca592272203b259119fc3fb02e037209ceaf9570474ce08 --gas-budget 100000000 \ No newline at end of file diff --git a/mover/fengfengxiong123/code/task2/my_coin/Move.lock b/mover/fengfengxiong123/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..f61eeb81b --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "2D9D5D84736483D7957D746CB95566597906F9A24C61AA1DFAD580DB2D3EC1AE" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83" +latest-published-id = "0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83" +published-version = "1" diff --git a/mover/fengfengxiong123/code/task2/my_coin/Move.toml b/mover/fengfengxiong123/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..445dfd553 --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +#Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/fengfengxiong123/code/task2/my_coin/sources/dao.move b/mover/fengfengxiong123/code/task2/my_coin/sources/dao.move new file mode 100644 index 000000000..a075c7480 --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin/sources/dao.move @@ -0,0 +1,20 @@ +module my_coin::dao { + + use sui::coin; + + public struct DAO has drop {} + + fun init(witness: DAO, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, 9, + b"DAO", + b"DaoCoin", + b"dao to all", + option::none(), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, tx_context::sender(ctx)); + // 0x54f53f96aa56ca74e3f121b63ed6fdbddaae7d306cf0f30c64dba503726b0cc::dao::DAO + } +} diff --git a/mover/fengfengxiong123/code/task2/my_coin/sources/faucet_coin.move b/mover/fengfengxiong123/code/task2/my_coin/sources/faucet_coin.move new file mode 100644 index 000000000..d320f1982 --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin/sources/faucet_coin.move @@ -0,0 +1,30 @@ +module my_coin::faucetcoin { + // 包id 0x054f53f96aa56ca74e3f121b63ed6fdbddaae7d306cf0f30c64dba503726b0cc + // sender 0x1cf6273dc8d5f7f8189fbae937741434d388fefeabe029ac128c2fed67633498 + + // TreasuryCap 0x8f26e253f0203dd5372db724eb4779bc697579a18d97fc996beb7f16957adb69 + // 类型 0x2::coin::TreasuryCap<0x54f53f96aa56ca74e3f121b63ed6fdbddaae7d306cf0f30c64dba503726b0cc::dao::DAO> + + // TreasuryCap 0x402a9c44f0563db50cc4d40e503730759c9b80c77249f7364ebf39b3e05a51ed + // 类型 0x2::coin::TreasuryCap<0x54f53f96aa56ca74e3f121b63ed6fdbddaae7d306cf0f30c64dba503726b0cc::faucetcoin::FAUCETCOIN> + + use sui::coin; + public struct FAUCETCOIN has drop {} + + fun init(witness: FAUCETCOIN, ctx: &mut TxContext) { + + let (treasury, metadata) = coin::create_currency( + witness, 9, + b"FTN", + b"FaucetCoin", + b"my faucet coin", + option::none(), + ctx + ); + transfer::public_freeze_object(metadata); // 0x2::coin::CoinMetadata<0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824::dao::DAO> + transfer::public_share_object(treasury); + // 0x7a2079da6aa6a74d5a3466f98afe96a47cecca0be6c79ef151aa370720f855fd + // 0x2::coin::TreasuryCap<0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824::dao::DAO> + } + +} diff --git a/mover/fengfengxiong123/code/task2/my_coin/tests/my_coin_tests.move b/mover/fengfengxiong123/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..4be556acf --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module my_coin::my_coin_tests { + // uncomment this line to import the module + // use my_coin::my_coin; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_my_coin() { + // pass + } + + #[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] + fun test_my_coin_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/fengfengxiong123/code/task2/my_coin2/Move.lock b/mover/fengfengxiong123/code/task2/my_coin2/Move.lock new file mode 100644 index 000000000..f61bb70e7 --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin2/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "527040C9D4064960C3424E12CA1A4F4392E2423DACC0F0C922968A9DD971B4D0" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824" +latest-published-id = "0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824" +published-version = "1" diff --git a/mover/fengfengxiong123/code/task2/my_coin2/Move.toml b/mover/fengfengxiong123/code/task2/my_coin2/Move.toml new file mode 100644 index 000000000..77e9accae --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin2/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin2" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin2 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/fengfengxiong123/code/task2/my_coin2/sources/my_coin2.move b/mover/fengfengxiong123/code/task2/my_coin2/sources/my_coin2.move new file mode 100644 index 000000000..90c0317f9 --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin2/sources/my_coin2.move @@ -0,0 +1,24 @@ +module my_coin2::dao { + // 摘要 Coxqzq8Y2EEE9BwANy7wJGvBBBgs8XyH8AvxSKuj1c36 + // sender 0x1cf6273dc8d5f7f8189fbae937741434d388fefeabe029ac128c2fed67633498 + // + use sui::coin; + public struct DAO has drop {} + + fun init(witness: DAO, ctx: &mut TxContext) { + + let (treasury, metadata) = coin::create_currency( + witness, 9, + b"DAO", + b"DaoCoin", + b"dao to all 2", + option::none(), + ctx + ); + transfer::public_freeze_object(metadata); // 0x2::coin::CoinMetadata<0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824::dao::DAO> + transfer::public_share_object(treasury); + // 0x7a2079da6aa6a74d5a3466f98afe96a47cecca0be6c79ef151aa370720f855fd + // 0x2::coin::TreasuryCap<0x71d67141b2c06e7abdf6829aa2ca8e36cb469fe304519e084c3f29e9e6244824::dao::DAO> + } + +} diff --git a/mover/fengfengxiong123/code/task2/my_coin2/tests/my_coin2_tests.move b/mover/fengfengxiong123/code/task2/my_coin2/tests/my_coin2_tests.move new file mode 100644 index 000000000..8707b03b2 --- /dev/null +++ b/mover/fengfengxiong123/code/task2/my_coin2/tests/my_coin2_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin2::my_coin2_tests; +// uncomment this line to import the module +// use my_coin2::my_coin2; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin2() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin2::my_coin2_tests::ENotImplemented)] +fun test_my_coin2_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/fengfengxiong123/code/todo_list/Move.lock b/mover/fengfengxiong123/code/todo_list/Move.lock new file mode 100644 index 000000000..258447eab --- /dev/null +++ b/mover/fengfengxiong123/code/todo_list/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 2 +manifest_digest = "24B05BB09ED82BC03E089F813A1CEF032679C621EECFA63C57659ADE383815CE" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { name = "Sui" }, +] + +[[move.package]] +name = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +name = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.34.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667" +latest-published-id = "0x8eff1442cf00ea873b5d76ebda77d3436503b2f9acdf51da77a007911abe5667" +published-version = "1" diff --git a/mover/fengfengxiong123/code/todo_list/Move.toml b/mover/fengfengxiong123/code/todo_list/Move.toml new file mode 100644 index 000000000..5a5f203d3 --- /dev/null +++ b/mover/fengfengxiong123/code/todo_list/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "todo_list" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +todo_list = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/fengfengxiong123/code/todo_list/sources/todo_list.move b/mover/fengfengxiong123/code/todo_list/sources/todo_list.move new file mode 100644 index 000000000..15de6eaf3 --- /dev/null +++ b/mover/fengfengxiong123/code/todo_list/sources/todo_list.move @@ -0,0 +1,41 @@ +/// Module: todo_list +module todo_list::todo_list { + use std::string::String; + + /// List of todos. Can be managed by the owner and shared with others. + public struct TodoList has key, store { + id: UID, + items: vector + } + + /// Create a new todo list. + public fun new(ctx: &mut TxContext): TodoList { + let list = TodoList { + id: object::new(ctx), + items: vector[] + }; + + (list) + } + + /// Add a new todo item to the list. + public fun add(list: &mut TodoList, item: String) { + list.items.push_back(item); + } + + /// Remove a todo item from the list by index. + public fun remove(list: &mut TodoList, index: u64): String { + list.items.remove(index) + } + + /// Delete the list and the capability to manage it. + public fun delete(list: TodoList) { + let TodoList { id, items: _ } = list; + id.delete(); + } + + /// Get the number of items in the list. + public fun length(list: &TodoList): u64 { + list.items.length() + } +} diff --git a/mover/fengfengxiong123/code/todo_list/tests/todo_list_tests.move b/mover/fengfengxiong123/code/todo_list/tests/todo_list_tests.move new file mode 100644 index 000000000..a88170ed5 --- /dev/null +++ b/mover/fengfengxiong123/code/todo_list/tests/todo_list_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module todo_list::todo_list_tests { + // uncomment this line to import the module + // use todo_list::todo_list; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_todo_list() { + // pass + } + + #[test, expected_failure(abort_code = ::todo_list::todo_list_tests::ENotImplemented)] + fun test_todo_list_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/fengfengxiong123/readme.md b/mover/fengfengxiong123/readme.md index dcbfabbaa..e924fb50e 100644 --- a/mover/fengfengxiong123/readme.md +++ b/mover/fengfengxiong123/readme.md @@ -4,7 +4,7 @@ - github: `fengfengxiong123` ## 个人简介 -- 工作经验: x年 +- 工作经验: 6年 - 技术栈: `python django linux mysql vue flutter` > 重要提示 请认真写自己的简介 - 多年web2开发经验,对Move特别感兴趣,想通过Move入门区块链 @@ -19,11 +19,11 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/pkg_id.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83 +- [x] Faucet package id : 0xae412de9df987063117db968d17e8f4dfa16b92f5f9527e36af47af427070b83 +- [x] 转账 `My Coin` hash: 642AZ1s4jkSpfw8mkwkRZAFAGUFem6mJcWgeLiQpB1h9 +- [x] `Faucet Coin` address1 mint hash:GVbcaUXgakGcHiLDcTpWdN9D4jQoZdtVfXEeGfZKxZXp +- [x] `Faucet Coin` address2 mint hash:249CeKvrqYxujrSGfSAUmuP9Muubvg6wmoyTyw8U5Y9E ## 03 move NFT - [] nft package id : diff --git a/mover/flatflax/co-learn-2411/video_week01.png b/mover/flatflax/co-learn-2411/video_week01.png deleted file mode 100644 index 886ba231a..000000000 Binary files a/mover/flatflax/co-learn-2411/video_week01.png and /dev/null differ diff --git a/mover/flatflax/code/task2/faucet_coin/Move.toml b/mover/flatflax/code/task2/faucet_coin/Move.toml new file mode 100644 index 000000000..02ca76f9d --- /dev/null +++ b/mover/flatflax/code/task2/faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/flatflax/code/task2/faucet_coin/sources/faucet_coin.move b/mover/flatflax/code/task2/faucet_coin/sources/faucet_coin.move new file mode 100644 index 000000000..ae4694571 --- /dev/null +++ b/mover/flatflax/code/task2/faucet_coin/sources/faucet_coin.move @@ -0,0 +1,34 @@ +/// Module: task2 +module faucet_coin::faucet_coin { + + + use sui::coin::{Self, Coin, TreasuryCap}; + + + public struct FAUCET_COIN has drop {} + + fun init(witness: FAUCET_COIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency(witness, 2, b"faucet flatflax coin", b"faucet flatflax coin", b"", + option::none(), ctx); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + + public fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + + + public fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } + + +} diff --git a/mover/flatflax/code/task2/faucet_coin/tests/faucet_coin_tests.move b/mover/flatflax/code/task2/faucet_coin/tests/faucet_coin_tests.move new file mode 100644 index 000000000..74b01751a --- /dev/null +++ b/mover/flatflax/code/task2/faucet_coin/tests/faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucet_coin::faucet_coin_tests; +// uncomment this line to import the module +// use faucet_coin::faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucet_coin::faucet_coin_tests::ENotImplemented)] +fun test_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/flatflax/code/task2/mycoin/Move.toml b/mover/flatflax/code/task2/mycoin/Move.toml new file mode 100644 index 000000000..70032b221 --- /dev/null +++ b/mover/flatflax/code/task2/mycoin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "mycoin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +mycoin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/flatflax/code/task2/mycoin/sources/mycoin.move b/mover/flatflax/code/task2/mycoin/sources/mycoin.move new file mode 100644 index 000000000..dd3d9a73c --- /dev/null +++ b/mover/flatflax/code/task2/mycoin/sources/mycoin.move @@ -0,0 +1,33 @@ +/// Module: task2 +module mycoin::my_coin { + + + use sui::coin::{Self, Coin, TreasuryCap}; + + + public struct MY_COIN has drop {} + + fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury_cap, metadata) = coin::create_currency(witness, 2, b"my flatflax coin", b"my flatflax coin", b"", + option::none(), ctx); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury_cap, tx_context::sender(ctx)) + } + + + public fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } + + public fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } + + +} diff --git a/mover/flatflax/code/task2/mycoin/tests/mycoin_tests.move b/mover/flatflax/code/task2/mycoin/tests/mycoin_tests.move new file mode 100644 index 000000000..d12b2353d --- /dev/null +++ b/mover/flatflax/code/task2/mycoin/tests/mycoin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module mycoin::mycoin_tests; +// uncomment this line to import the module +// use mycoin::mycoin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_mycoin() { + // pass +} + +#[test, expected_failure(abort_code = ::mycoin::mycoin_tests::ENotImplemented)] +fun test_mycoin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/flatflax/code/task3/Move.toml b/mover/flatflax/code/task3/Move.toml new file mode 100644 index 000000000..084bf0aba --- /dev/null +++ b/mover/flatflax/code/task3/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task3" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task3 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/flatflax/code/task3/sources/task3.move b/mover/flatflax/code/task3/sources/task3.move new file mode 100644 index 000000000..4f66797e1 --- /dev/null +++ b/mover/flatflax/code/task3/sources/task3.move @@ -0,0 +1,99 @@ +module task3::my_nft; + +use sui::url::{Url, Self}; +use std::string; +use sui::object::{Self, ID, UID}; +use sui::event; +use sui::transfer; +use sui::tx_context::{TxContext, Self}; + +public struct FlatflaxNFT has key, store { + id: UID, + name: string::String, + description: string::String, + url: Url, +} + +public struct FlatflaxNFTMintEvent has copy, drop { + object_id: ID, + creator: address, + name: string::String, +} + + +public fun description(nft: &FlatflaxNFT): string::String { + nft.description +} + +public fun url(nft: &FlatflaxNFT): Url { + nft.url +} +public struct FlatflaxNFTTransferEvent has copy, drop { + object_id: ID, + from: address, + to: address, +} + +public struct FlatflaxNFTBurnEvent has copy, drop { + object_id: ID, +} + +public fun name(nft: &FlatflaxNFT): string::String { + nft.name +} + +public entry fun mint_nft( + recipient: address, + ctx: &mut TxContext +) { + let sender = tx_context::sender(ctx); + let nft = FlatflaxNFT { + id: object::new(ctx), + name: string::utf8(b"FlatflaxNft"), + description: string::utf8(b"flatflax's NFT"), + url: url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/14267118?v=4"), + }; + + event::emit(FlatflaxNFTMintEvent { + object_id: object::id(&nft), + creator: sender, + name: nft.name, + }); + + transfer::public_transfer(nft, recipient); +} + +public entry fun transfer( + nft: FlatflaxNFT, + recipient: address, + _: &mut TxContext +) { + event::emit(FlatflaxNFTTransferEvent { + object_id: object::id(&nft), + from: tx_context::sender(_), + to: recipient, + }); + + transfer::public_transfer(nft, recipient); +} + +public entry fun update_description( + nft: &mut FlatflaxNFT, + description: vector, + _: &mut TxContext +) { + nft.description = string::utf8(description); +} + +public entry fun burn( + nft: FlatflaxNFT, + _: &mut TxContext +) { + let FlatflaxNFT { id, name: _, description: _, url: _} = nft; + + event::emit(FlatflaxNFTBurnEvent { + object_id: object::uid_to_inner(&id), + }); + + object::delete(id); +} \ No newline at end of file diff --git a/mover/flatflax/code/task3/tests/task3_tests.move b/mover/flatflax/code/task3/tests/task3_tests.move new file mode 100644 index 000000000..d128fbb0f --- /dev/null +++ b/mover/flatflax/code/task3/tests/task3_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task3::task3_tests; +// uncomment this line to import the module +// use task3::task3; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task3() { + // pass +} + +#[test, expected_failure(abort_code = ::task3::task3_tests::ENotImplemented)] +fun test_task3_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/flatflax/images/task3_nft.png b/mover/flatflax/images/task3_nft.png new file mode 100644 index 000000000..fb5b7b28e Binary files /dev/null and b/mover/flatflax/images/task3_nft.png differ diff --git a/mover/flatflax/notes/task1.md b/mover/flatflax/notes/task1.md index b7634f04a..e15e89f02 100644 --- a/mover/flatflax/notes/task1.md +++ b/mover/flatflax/notes/task1.md @@ -22,4 +22,10 @@ sui client switch --address
git config --global http.version HTTP/1.1 git push git config --global --unset http.version +``` + +* publish + +``` +sui client publish --gas-budget --skip-dependency-verification ``` \ No newline at end of file diff --git a/mover/flatflax/notes/task2.md b/mover/flatflax/notes/task2.md new file mode 100644 index 000000000..cb20324f6 --- /dev/null +++ b/mover/flatflax/notes/task2.md @@ -0,0 +1,15 @@ +* mint_and_transfer + +[doc](https://docs.sui.io/references/framework/sui-framework/coin#0x2_coin_mint_and_transfer) +``` +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0xbfb4db281a9519bc902e519d9a5fe2cec8a7be41ce68bdf2e8cce63bbaeaf4df::faucet_coin::FAUCET_COIN --args
+ +public entry fun mint_and_transfer( + c: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, +) { + transfer::public_transfer(mint(c, amount, ctx), recipient) +} +``` \ No newline at end of file diff --git a/mover/flatflax/readme.md b/mover/flatflax/readme.md index ff4d80306..1df9d08c6 100644 --- a/mover/flatflax/readme.md +++ b/mover/flatflax/readme.md @@ -18,17 +18,17 @@ - [✓] package id 在 scan上的查看截图:![Scan截图](./images/l.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [✓] My Coin package id : 0xea5e2369e8d9d502f4aca15d2c72ce4235610381d4a6238e2800ed617a5c28c1 +- [✓] Faucet package id : 0xbfb4db281a9519bc902e519d9a5fe2cec8a7be41ce68bdf2e8cce63bbaeaf4df +- [✓] 转账 `My Coin` hash: 6PoWjtNCMU3qYkEuqQefSLJMT5KHXRBwQPgRESQAtBcW +- [✓] `Faucet Coin` address1 mint hash: E1trg5YyZcTpLAM8u6bMkmn7xQxbRapkFF4nckqS31k +- [✓] `Faucet Coin` address2 mint hash: Cgmd5mbH1Q99WPLGtRUCvGi2zjDs1RytSGR4U625vwkQ ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [✓] nft package id : 0xc523339ec5a1fbb5582c6c67f6ee0feb8724947ea932d0851fe7481bfde0b0c7 +- [✓] nft object id : 0xab30a2b4e5327d531619b609053cfd5ec861c599101b203d22f1445ed87f9670 +- [✓] 转账 nft hash: 2aSzNTYQBYmciUwu4vyPiPjcLbCdE72jkh5vGY3GrjfL +- [✓] scan上的NFT截图:![Scan截图](./images/task3_nft.png) ## 04 Move Game - [] game package id : diff --git "a/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245\345\210\206\344\272\253\344\274\232.png" "b/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245\345\210\206\344\272\253\344\274\232.png" new file mode 100644 index 000000000..92a51bd6e Binary files /dev/null and "b/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245\345\210\206\344\272\253\344\274\232.png" differ diff --git "a/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245.jpg" "b/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245\345\274\200\350\220\245\344\273\252\345\274\217.jpg" similarity index 100% rename from "mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245.jpg" rename to "mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\345\205\261\345\255\246\350\220\245\345\274\200\350\220\245\344\273\252\345\274\217.jpg" diff --git "a/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/office-hour.jpg" "b/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\347\254\254\344\270\200\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" similarity index 100% rename from "mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/office-hour.jpg" rename to "mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\347\254\254\344\270\200\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" diff --git "a/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.png" "b/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.png" new file mode 100644 index 000000000..6d7acb472 Binary files /dev/null and "b/mover/gracecampo/co-learn-2411/images/\347\233\264\346\222\255\347\255\224\347\226\221/\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.png" differ diff --git "a/mover/gracecampo/co-learn-2411/images/\350\257\276\347\250\213\345\255\246\344\271\240/\347\254\254\344\270\211\345\221\250\345\255\246\344\271\240\346\210\252\345\233\276.png" "b/mover/gracecampo/co-learn-2411/images/\350\257\276\347\250\213\345\255\246\344\271\240/\347\254\254\344\270\211\345\221\250\345\255\246\344\271\240\346\210\252\345\233\276.png" new file mode 100644 index 000000000..5bee51280 Binary files /dev/null and "b/mover/gracecampo/co-learn-2411/images/\350\257\276\347\250\213\345\255\246\344\271\240/\347\254\254\344\270\211\345\221\250\345\255\246\344\271\240\346\210\252\345\233\276.png" differ diff --git a/mover/gracecampo/co-learn-2411/readme.md b/mover/gracecampo/co-learn-2411/readme.md index c9d817cc4..1918e412c 100644 --- a/mover/gracecampo/co-learn-2411/readme.md +++ b/mover/gracecampo/co-learn-2411/readme.md @@ -12,30 +12,42 @@ - [√] 第一周:![学习记录截图](images/课程学习/第一周学习截图.png) - [√] 第二周:![学习记录截图](images/课程学习/第二周学习截图.jpg) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [√] 第三周:![学习记录截图](images/课程学习/第三周学习截图.png) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 - -- [√] 第一周:![学习记录截图](images/直播答疑/共学营.jpg) -- [√] 第二周:![学习记录截图](images/直播答疑/office-hour.jpg) +- [√] 第一周:![学习记录截图](images/直播答疑/共学营开营仪式.jpg):参与共学营开营仪式 +- [√] 第一周:![学习记录截图](images/直播答疑/第一周直播答疑.jpg):参与第一周直播答疑 +- [√] 第二周:![学习记录截图](images/直播答疑/第二周直播答疑.png):参与第二周直播答疑 +- [√] 第二周:![学习记录截图](images/直播答疑/共学营分享会.png) :分享并参与共学营讨论 - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 -- [√] 第一篇笔记 【https://learnblockchain.cn/article/9860】 -- [√] 第二篇笔记 【https://learnblockchain.cn/article/9878】 -- [] 第三篇笔记 -- [] 第四篇笔记 - +- [√] 第一篇笔记[如何安装SUI客户端](https://learnblockchain.cn/article/9860) +- [√] 第二篇笔记[MOVE共学营TASK3教程](https://learnblockchain.cn/article/9878) +- [√] 第三篇笔记[move入门之基础概念](https://learnblockchain.cn/article/9931) +- [√] 第四篇笔记[move基本数据类型(一)](https://learnblockchain.cn/article/9932) +- [√] 第五篇笔记[move基本数据类型(二)](https://learnblockchain.cn/article/9933) +- [√] 第六篇笔记[sui-cli使用指南](https://learnblockchain.cn/article/9934) +- [√] 第七篇笔记[move入门之结构体的四大能力](https://learnblockchain.cn/article/9952) +- [√] 第八篇笔记[MOVE共学营TASK4教程](https://learnblockchain.cn/article/9959) +- [√] 第九篇笔记[move入门之基础语法(一)](https://learnblockchain.cn/article/9966) ## 对外输出学习笔记 -- [√] 第一篇笔记【https://blog.csdn.net/jinpeng741143592/article/details/143261589?spm=1001.2014.3001.5502】 -- [√] 第二篇笔记【https://blog.csdn.net/jinpeng741143592/article/details/143251993?spm=1001.2014.3001.5502】 -- [√] 第三篇笔记【https://blog.csdn.net/jinpeng741143592/article/details/143251799?spm=1001.2014.3001.5502】 -- [√] 第四篇笔记【https://learnblockchain.cn/article/9860】 -- [√] 第四篇笔记【https://learnblockchain.cn/article/9878】 +- [√] 第一篇笔记[Git入门到精通](https://blog.csdn.net/jinpeng741143592/article/details/143261589?spm=1001.2014.3001.5502) +- [√] 第二篇笔记[速学150个Linux常用命令笔记](https://blog.csdn.net/jinpeng741143592/article/details/143251993?spm=1001.2014.3001.5502) +- [√] 第三篇笔记[Windows DOS命令 批处理脚本学习笔记](https://blog.csdn.net/jinpeng741143592/article/details/143251799?spm=1001.2014.3001.5502) +- [√] 第四篇笔记[如何安装SUI客户端](https://learnblockchain.cn/article/9860) +- [√] 第五篇笔记[MOVE共学营TASK3教程](https://learnblockchain.cn/article/9878) +- [√] 第六篇笔记[move入门之基础概念](https://learnblockchain.cn/article/9931) +- [√] 第七篇笔记[move基本数据类型(一)](https://learnblockchain.cn/article/9932) +- [√] 第八篇笔记[move基本数据类型(二)](https://learnblockchain.cn/article/9933) +- [√] 第九篇笔记[sui-cli使用指南](https://learnblockchain.cn/article/9934) +- [√] 第十篇笔记[move入门之结构体的四大能力](https://learnblockchain.cn/article/9952) +- [√] 第十一篇笔记[MOVE共学营TASK4教程](https://learnblockchain.cn/article/9959) +- [√] 第十二篇笔记[move入门之基础语法(一)](https://learnblockchain.cn/article/9966) ## 在HOH社区公众号发布自己的技术文章 diff --git a/mover/gracecampo/code/readme.md b/mover/gracecampo/code/readme.md index 65c24bcf5..d9ba1028a 100644 --- a/mover/gracecampo/code/readme.md +++ b/mover/gracecampo/code/readme.md @@ -1,3 +1,10 @@ -### task1: hello_move目录 +### task1 +[task1源码](task1/hello_move.move) +### task2 +[task2源码](task2/my_coin.move) +[task2源码](task2/faucet_coin.move) +### task3 +[task3源码](task3/movenft.move) +### task4 +[task4源码](task4/gracecampo_game.move) -### task2: coins目录 diff --git a/mover/gracecampo/code/hello_move/hello_move.move b/mover/gracecampo/code/task1/hello_move.move similarity index 100% rename from mover/gracecampo/code/hello_move/hello_move.move rename to mover/gracecampo/code/task1/hello_move.move diff --git a/mover/gracecampo/code/coins/faucet_coin.move b/mover/gracecampo/code/task2/faucet_coin.move similarity index 100% rename from mover/gracecampo/code/coins/faucet_coin.move rename to mover/gracecampo/code/task2/faucet_coin.move diff --git a/mover/gracecampo/code/coins/my_coin.move b/mover/gracecampo/code/task2/my_coin.move similarity index 100% rename from mover/gracecampo/code/coins/my_coin.move rename to mover/gracecampo/code/task2/my_coin.move diff --git a/mover/gracecampo/code/coins/publish-info.md b/mover/gracecampo/code/task2/publish-info.md similarity index 100% rename from mover/gracecampo/code/coins/publish-info.md rename to mover/gracecampo/code/task2/publish-info.md diff --git a/mover/gracecampo/code/move_nft/movenft.move b/mover/gracecampo/code/task3/movenft.move similarity index 100% rename from mover/gracecampo/code/move_nft/movenft.move rename to mover/gracecampo/code/task3/movenft.move diff --git a/mover/gracecampo/code/task4/gracecampo_game.move b/mover/gracecampo/code/task4/gracecampo_game.move new file mode 100644 index 000000000..23bb18a22 --- /dev/null +++ b/mover/gracecampo/code/task4/gracecampo_game.move @@ -0,0 +1,58 @@ +module gracecampo_game::gracecampo_game { + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::random::{Self, Random}; + use task2::faucet_coin::FAUCET_COIN; + + const EUserInsufficientBalance: u64 = 1000; + const EGameInsufficientBalance: u64 = 1001; + + public struct Game has key { + id: UID, + balance: Balance, + game_name:vector + } + + public struct Admin has key { + id: UID, + } + + fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + balance: balance::zero(), + game_name:b"GRACECAMPO GAME" + + }; + transfer::share_object(game); + + let admin = Admin {id: object::new(ctx)}; + transfer::transfer(admin, ctx.sender()); + } + + public entry fun deposit(game: &mut Game, coin: &mut Coin, amount: u64, ctx: &mut TxContext) { + assert!(coin.value() >= amount, EUserInsufficientBalance); + let split_balance = coin::balance_mut(coin).split(amount); + game.balance.join(split_balance); + } + + + public entry fun withdraw(game: &mut Game, _: &Admin, amount: u64, ctx: &mut TxContext) { + assert!(game.balance.value() >= amount, EGameInsufficientBalance); + let cash = coin::take(&mut game.balance, amount, ctx); + transfer::public_transfer(cash, ctx.sender()); + } + + public entry fun Play(game: &mut Game, rnd: &Random, guess: bool, coin: &mut Coin, amount: u64, ctx: &mut TxContext) { + assert!(game.balance.value() >= amount, EGameInsufficientBalance); + assert!(coin.value() >= amount, EUserInsufficientBalance); + let mut gen = random::new_generator(rnd, ctx); + let flag = random::generate_bool(&mut gen); + if (flag == guess) { + let reward = coin::take(&mut game.balance, amount, ctx); + coin.join(reward); + }else { + Self::deposit(game, coin, amount,ctx) + } + } +} diff --git a/mover/gracecampo/notes/readme.md b/mover/gracecampo/notes/readme.md index 106465eb5..4e2564d82 100644 --- a/mover/gracecampo/notes/readme.md +++ b/mover/gracecampo/notes/readme.md @@ -3,17 +3,22 @@ ## move基础: ## 环境安装 -安装sui客户端: https://learnblockchain.cn/article/9860 - -## 语法教程 - +- [安装sui客户端:](https://learnblockchain.cn/article/9860) https://learnblockchain.cn/article/9860 ## 工具使用 - - -任务教程: +- [sui-cli使用指南](https://learnblockchain.cn/article/9934):https://learnblockchain.cn/article/9934 +## 语法教程 +- [move入门之基础概念](https://learnblockchain.cn/article/9931):https://learnblockchain.cn/article/9931 +- [move基本数据类型(一)](https://learnblockchain.cn/article/9932):https://learnblockchain.cn/article/9932 +- [move基本数据类型(二)](https://learnblockchain.cn/article/9933):https://learnblockchain.cn/article/9933 +- [move入门之结构体的四大能力](https://learnblockchain.cn/article/9952):https://learnblockchain.cn/article/9952 +- [move入门之基础语法(一)](https://learnblockchain.cn/article/9966):https://learnblockchain.cn/article/9966 +- [move入门之对象概念]() +- [move入门之所有权概念]() +## 任务教程: - [task1教程](任务教程/task1教程.md) - [task2教程](任务教程/task2教程.md) -- [task3教程](任务教程/task3教程.md) +- [task3教程](https://learnblockchain.cn/article/9878) :https://learnblockchain.cn/article/9878 +- [task4教程](https://learnblockchain.cn/article/9959) :https://learnblockchain.cn/article/9959 diff --git "a/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task3\346\225\231\347\250\213.md" "b/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task3\346\225\231\347\250\213.md" index fdd51aa4b..eae30dfe6 100644 --- "a/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task3\346\225\231\347\250\213.md" +++ "b/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task3\346\225\231\347\250\213.md" @@ -1,16 +1,39 @@ # MOVE共学营TASK3教程 -💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) -🌊  [HOH水分子X账号](https://x.com/0xHOH) +🧑‍💻作者:gracecampo -📹  [课程B站账号](https://space.bilibili.com/3493269495352098) +## MOVE共学营中的TASK3教程 -💻  Github仓库 https://github.com/move-cn/letsmove +### 完成NFT的上链部署 -🧑‍💻作者:gracecampo +- 上链网络: 主网(mainnet) + +## 需求 + +- 完成 NFT相关知识的学习 +- 完成可以mint NFT的合约上链 +- 给自己地址mint一个NFT +- NFT必须是自己 github 的头像作为图片 +- mint 一个 nft 发送到地址: `0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2` +- 提交mint到自己地址的浏览器查看(Scan)截图 -## MOVE共学营中的TASK3教程 ### 1. 代码部分 +**在开发之前,我们应了解NFT作为链上资产,它究竟是什么?他的独特性在哪里?NFT在Sui上有什么优势?** + +> NFT释义: +NFT 是“非同质化代币”(Non-Fungible Token)的缩写。它是一种数字资产,每个 NFT 都是独一无二的,无法互换。 +NFT 通常用于表示艺术品、音乐、视频、游戏物品等数字内容的所有权或认证。 +在 Sui 区块链上,NFT 是对象,每个对象都有唯一的 ID,这使得它们天然地具有非同质化的特性。 +Sui 的 NFT 可以直接在链上存储和管理,提供了比传统区块链更高的灵活性和可编程性。 + +#### 接下来我们步入开发环节: +首先作为一个NFT资产,我们定义NFT时,需要赋予这个结构体key和store,key能力使得这个结构体可以在链上作为唯一对象索引, + +store使得这个对象可以进行全局传输和传递。 + +接下来,我们创建一个GRACECAMPO_NFT的结构体体,它拥有key和store能力,并且拥有4个属性,分别是: id 作为链上索引地址,name作为NFT结构体名称, + +description作为一个NFT描述,url是NFT对象的外部图像链接地址。 > 定义NFT结构体 ```sui move public struct GRACECAMPO_NFT has store, key { @@ -20,7 +43,14 @@ url: Url, } ``` ->定义监听事件 + +监听事件:通过监听事件,我们可以对链上事件进行分析,例如跟踪 NFT 的铸造次数或智能合约生成的交易金额。这对于分析和统计非常有用。 + +例如向下的例子,当我们在铸造函数中添加这个事件的时候,我们在应用程序中就可以订阅这个事件,方便我们对铸造人数进行分析,也可用于在铸造完成后,对用户 + +进行通知。当然这个任务我们将不会对这个事件进行采集和统计,只是作为一个代码规范进行引入。 + +>定义铸造监听事件 ```sui move public struct GRACECAMPO_NFT_Minted has copy, drop { object_id: ID, @@ -28,6 +58,15 @@ name: string::String, } ``` +接下来,我们将声明一个铸造函数,可以看到mint_to_sender函数中,我们传入了用户初始化NFT对象的信息,比如name、description、url以及上下文ctx信息,这个函数作为公开函数,可以使任何人调用,当我们调用这个函数时,我们将从上线问中获取调用者信息,将传入的参数信息用于进行NFT对象的初始化,同时我们在代码中注册上面的监听事件。 +当用户调用mint_to_sender,将为用户铸造一个GRACECAMPO_NFT的NFT,以及发送铸造事件,当订阅这个事件的应用,接收到事件,将通知用户(这一步我们将不做实践,感兴趣的朋友可以手动实践下) + +transfer::public_transfer 是 Sui 网络中的一个函数,用于将对象的所有权从一个地址转移到另一个地址。这个函数允许对象在其定义模块之外进行转移, 但前提是对象具有 store 和 key 能力。 + +```sui move +public fun public_transfer(obj: T, recipient: address) +``` + >定义铸造函数 ```sui move public entry fun mint_to_sender( @@ -53,32 +92,63 @@ public entry fun mint_to_sender( transfer::public_transfer(nft, sender); } ``` ->定义转移函数, +接下来,我们声明一个转移函数,用于用户对NFT的转移,此函数,我们可以看到,需要传入的参数依次为:nft(用户拥有的nft对象),address(接收人地址),此函数未用到上下文对象,此处我们以 _ 形式进行忽略。我们在此函数中调用transfer::public_transfer进行对象转移。 + +>定义转移函数 ```sui move public entry fun transfer( nft: GRACECAMPO_NFT, recipient: address, _: &mut TxContext ) { transfer::public_transfer(nft, recipient) } - public entry fun update_description( - nft: &mut GRACECAMPO_NFT, - new_description: vector, - _: &mut TxContext - ) { - nft.description = string::utf8(new_description) - } ``` -### 2. 铸造NFT ->调用铸造函数 + +接下来我们在命令行执行部署以及函数调用(当然,上面的函数,我们都声明entry,也可以进行浏览器调用) + +### 模块发布及函数调用 + +#### 1. 模块部署 + +发布前,可以先在测试网进行调试,无问题后,将环境切换到主网环境(这一点需要注意,测试完成后,因任务要求,必须在主网部署) + +```sui move +sui client publish +``` + +发布之后,控制台将显示我们部署模块的PACKAGEID,记录下来。 + +之后我们将频繁使用到(下文中的PACKAGEID,在运行时,请替换为发布后记录的PACKAGEID) + +#### 2. 铸造NFT + +调用铸造函数: 此命令,需要替换PACKAGEID,GRACECAMPO_NFT替换为你定义的NFT对象名,mint_to_sender替换为你的铸造函数名 + +args 后跟你铸造的NFT名称 NFT描述 NFT图片地址,任务要求NFT图片地址必须是自己 github 的头像作为图片,故你需要替换为你的github 的头像URL + ```shell sui client call --package PACKAGEID --module GRACECAMPO_NFT --function mint_to_sender args NFT名称 NFT描述 NFT图片地址 ``` + 调用成功后,需要记录NFT的OBJECTID,方便区块浏览器查看 + ### 3. 转移NFT +调用转移函数: + +此命令,需要替换 PACKAGEID 为发布记录的 PACKAGEID + +GRACECAMPO_NFT 替换为你定义的NFT对象名 + +transfer 替换为你的转移函数名 + +args 后跟上面铸造函数调用后生成的OBJECTID + +recipient-address 替换为0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 + >转移NFT ```shell sui client call --package PACKAGEID --module GRACECAMPO_NFT --function transfer args NFT-OBJECTID recipient-address ``` + 调用成功后,需要记录交易hash,方便区块浏览器查看 合约中的铸造和转移函数声明为entry,如果不熟悉命令行调用也可支持在区块浏览器调用 @@ -87,11 +157,24 @@ sui client call --package PACKAGEID --module GRACECAMPO_NFT --function transfer 查看NFT信息:(注意合约发布环境) >测试网 >> https://suiscan.xyz/testnet/object/NFT-OBJECTID -> +> >> https://suiscan.xyz/testnet/tx/transfer-hash -> +> >主网 >> https://suiscan.xyz/mainnet/object/NFT-OBJECTID -> +> >> https://suiscan.xyz/mainnet/tx/transfer-hash + + +任务教程结束,如果有疑问,可以评论留言。 + +如有问题,欢迎指正,一起进步,谢谢。:smile:  :smile: :smile: + +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove \ No newline at end of file diff --git "a/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task4\346\225\231\347\250\213.md" "b/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task4\346\225\231\347\250\213.md" new file mode 100644 index 000000000..fdd5d44a9 --- /dev/null +++ "b/mover/gracecampo/notes/\344\273\273\345\212\241\346\225\231\347\250\213/task4\346\225\231\347\250\213.md" @@ -0,0 +1,233 @@ +# MOVE共学营TASK4教程 +🧑‍💻作者:gracecampo + +## 完成游戏的上链部署 + +- 上链网络: 主网(mainnet) + +## 需求 + +- 完成 链游相关知识的学习 +- 完成 随机数的学习,游戏必须包含随机数 +- 完成 存和取游戏资金池 +- 完成 如何存储Coin在合约的学习,游戏必须能存取[task2] 发行的`Faucet Coin`,用`task2`的 `Faucet Coin`作为游戏输赢的资产 +- 完成 第一个游戏合约部署主网 +- 的game 必须包含自己的 `github id`的元素 + +## 任务指南 +### 链游是什么 +链游(Blockchain Games)是指利用区块链技术开发的网络游戏。与传统游戏不同,链游通常具有以下特点: + +资产所有权:玩家可以真正拥有游戏内的数字资产(如角色、道具、皮肤等),这些资产通常以NFT(非同质化代币)的形式存在于区块链上。 + +去中心化:游戏的某些或全部逻辑运行在区块链上,确保游戏规则的透明和公平。 + +可交易性:玩家可以在区块链上自由交易他们的游戏资产,这为玩家提供了新的经济激励。 + +互操作性:某些链游允许玩家在不同的游戏中使用相同的资产,这种特性通常被称为“跨游戏互操作性”。 + +### 随机数 +在 Sui 区块链上,你可以使用 sui::random 模块来生成安全的随机数。这个模块提供了多种生成随机数的方法,确保了随机数的不可预测性和不可操控性。以下是一些关键功能: + +创建随机生成器: + +```sui move +public fun new_generator(r: &random::Random, ctx: &mut tx_context::TxContext): random::RandomGenerator +``` + +生成随机数: + +参考官方库:sui::random模块 + +以下是官方库中的函数: + +生成一个 u8 类型的随机数: +```sui move +public fun generate_u8(g: &mut random::RandomGenerator): u8 +``` +生成一个范围内的 u32 类型随机数: +```sui move +public fun generate_u32_in_range(g: &mut random::RandomGenerator, min: u32, max: u32): u32 + +``` +使用示例: 你可以在 Move 语言中使用这些功能来实现一个简单的掷骰子功能: +```sui move + public entry fun roll_dice(r: &Random, ctx: &mut TxContext): Dice { + let mut generator = new_generator(r, ctx); + //生成1范围在1-6的随机数 + Dice { value: random::generate_u8_in_range(&mut generator, 1, 6) } +} +``` +这些功能确保了在 Sui 上生成的随机数是安全的,并且可以用于各种应用场景,如游戏、抽奖等。 + +### 游戏合约开发 +#### 定义奖池结构体 +```sui move + public struct Game has key { + id: UID, + balance: Balance, + game_name:vector + } +``` +#### 定义管理员结构体 +```sui move + public struct Admin has key { + id: UID, + } +``` +#### 定义初始化函数 +```sui move + fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + balance: balance::zero(), + game_name:b"GRACECAMPO GAME" + + }; + transfer::share_object(game); + + let admin = Admin {id: object::new(ctx)}; + transfer::transfer(admin, ctx.sender()); + } +``` +#### 定义存款函数 +```sui move + public entry fun deposit(game: &mut Game, coin: &mut Coin, amount: u64, ctx: &mut TxContext) { + assert!(coin.value() >= amount, EUserInsufficientBalance); + let split_balance = coin::balance_mut(coin).split(amount); + game.balance.join(split_balance); + } +``` +#### 定义取款函数 +```sui move + public entry fun withdraw(game: &mut Game, _: &Admin, amount: u64, ctx: &mut TxContext) { + assert!(game.balance.value() >= amount, EGameInsufficientBalance); + let cash = coin::take(&mut game.balance, amount, ctx); + transfer::public_transfer(cash, ctx.sender()); + } +``` +#### 定义游戏主逻辑 +```sui move + public entry fun play(game: &mut Game, rnd: &Random, guess: bool, coin: &mut Coin, amount: u64, ctx: &mut TxContext) { + assert!(game.balance.value() >= amount, EGameInsufficientBalance); + assert!(coin.value() >= amount, EUserInsufficientBalance); + //创建随机数生成器 + let mut gen = random::new_generator(rnd, ctx); + //根据随机数生成器生成布尔值 + let flag = random::generate_bool(&mut gen); + //判断是否猜对,如果猜对将奖励发送到玩家账户 + if (flag == guess) { + let reward = coin::take(&mut game.balance, amount, ctx); + coin.join(reward); + }else + //如果猜错,将赌注存入奖池 + Self::deposit(game, coin, amount,ctx) + } + } +``` +#### 整体代码如下 + +```sui move +module task4::game{ + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::random::{Self, Random}; + use task2::faucet_coin::FAUCET_COIN; + + const EUserInsufficientBalance: u64 = 1000; + const EGameInsufficientBalance: u64 = 1001; + + public struct Game has key { + id: UID, + balance: Balance, + game_name:vector + } + + public struct Admin has key { + id: UID, + } + + fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + balance: balance::zero(), + game_name:b"GRACECAMPO GAME" + + }; + transfer::share_object(game); + + let admin = Admin {id: object::new(ctx)}; + transfer::transfer(admin, ctx.sender()); + } + + public entry fun deposit(game: &mut Game, coin: &mut Coin, amount: u64, ctx: &mut TxContext) { + assert!(coin.value() >= amount, EUserInsufficientBalance); + let split_balance = coin::balance_mut(coin).split(amount); + game.balance.join(split_balance); + } + + + public entry fun withdraw(game: &mut Game, _: &Admin, amount: u64, ctx: &mut TxContext) { + assert!(game.balance.value() >= amount, EGameInsufficientBalance); + let cash = coin::take(&mut game.balance, amount, ctx); + transfer::public_transfer(cash, ctx.sender()); + } + + public entry fun Play(game: &mut Game, rnd: &Random, guess: bool, coin: &mut Coin, amount: u64, ctx: &mut TxContext) { + assert!(game.balance.value() >= amount, EGameInsufficientBalance); + assert!(coin.value() >= amount, EUserInsufficientBalance); + let mut gen = random::new_generator(rnd, ctx); + let flag = random::generate_bool(&mut gen); + // 如果获胜 + if (flag == guess) { + let reward = coin::take(&mut game.balance, amount, ctx); + coin.join(reward); + }else { + Self::deposit(game, coin, amount,ctx) + } + } +} +``` + +发布合约后,需要你记录 +1. 合约的packageId +2. 合约的game结构体的ObjectID +3. 合约的admin结构体ObjectID +4. 获取调用地址的FAUCET_COIN的ObjectID +5. +#### 执行合约函数 +此合约函数都声明了entry,允许在区块浏览器进行函数调用。 + +packageId替换为你发布的包对象id + +[访问地址](https://suivision.xyz/package/0xd5bc31660d727e41fcf1fc12c315045d2de4fa2ac176573088a4a67f2c0ab8a0?tab=Code):https://suivision.xyz/package/packageId?tab=Code + + +## 学习要点 +1.导入coin模块 +需要在move.toml中引入之前发布的coin包 +例如: +```toml +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +task2 = { local = "../task2" } #引入你之前task2发布的coin包 +``` + +task2是我的包名,你需要根据自己的包名做修改 + +Move.lock 记录了你的包发布的信息,此文件不能删除或者修改 + +2.理解管理员结构体 + +我们创建了一个admin结构体,赋予它key能力,用于在调用withdraw函数,控制只能拥有这个对象的地址进行调用,在实践中一定注意这点。 + + +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove + + diff --git "a/mover/gracecampo/notes/\345\267\245\345\205\267\344\275\277\347\224\250/sui-cli\344\275\277\347\224\250\346\214\207\345\215\227.md" "b/mover/gracecampo/notes/\345\267\245\345\205\267\344\275\277\347\224\250/sui-cli\344\275\277\347\224\250\346\214\207\345\215\227.md" index fb3fe82a4..b87339c3e 100644 --- "a/mover/gracecampo/notes/\345\267\245\345\205\267\344\275\277\347\224\250/sui-cli\344\275\277\347\224\250\346\214\207\345\215\227.md" +++ "b/mover/gracecampo/notes/\345\267\245\345\205\267\344\275\277\347\224\250/sui-cli\344\275\277\347\224\250\346\214\207\345\215\227.md" @@ -129,6 +129,7 @@ sui client faucet --address ADDRESS --指定地址通过水龙头获取测试 sui client faucet --url CUSTOM_FAUCET_URL ----指定水龙头URL地址获取测试代币 sui client gas ----获取当前地址测试代币余额 sui client gas ADDRESS ----获取指定地址测试代币余额 +sui client objects ----获取地址的拥有对象 ``` > sui client faucet ```text diff --git "a/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\345\237\272\347\241\200\346\246\202\345\277\265.md" "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\345\237\272\347\241\200\346\246\202\345\277\265.md" new file mode 100644 index 000000000..a2f3d0df9 --- /dev/null +++ "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\345\237\272\347\241\200\346\246\202\345\277\265.md" @@ -0,0 +1,139 @@ +# move入门之基础概念 +🧑‍💻作者:gracecampo +## 重要性 +对于刚入门的开发人员来说,必然需要对sui和move的基本概念有了解,才能更好的理解以及开发应用。 + +本节将对sui和move中的基础概念进行讲解,希望可以带来一定的帮助。 + +### package-包 +在一个项目中,一个包是包含了move.toml文件,以及source目录的文件夹,move.toml中定义了一个该项目的各项配置信息,source则用于储存项目源码。 + +![package.png](https://img.learnblockchain.cn/attachments/2024/11/28IZjjKq67388dc324e8c.png) +如图所示: source文件夹是存放源码的目录,move.toml文件是存放项目相关信息及依赖的文件,test文件夹是防止测试文件的目录 + +在move中一个项目通常被组织为一个包(package),包将被发布在区块链上,并生成一个地址用于识别,通过将包发布到区块链上,我们可以通过与区块链的交互进行调用。 + +创建包可以使用: +```shell +sui move new 你的项目名称 +``` +一个包可以有多个模块,每个模块可以有单独的作用域,变量,结构体,函数组成。 +```sui move +//clidemo是包名,mycoin为模块名 +module packagedemo::demo { + //定义一个结构体 + public struct DEMO has drop {} + + //定义函数 + public fun fun1(){ + //定义变量 + let A:u8 = 13; + } + //定义函数 + public fun fun2(){ + //定义变量 + let B:u8 = 13; + } +} +``` +发布包: +```shell +sui move publish +``` +发布后的包将会在链上生成不可变更的唯一地址,其中包含了该包下的模块源码,我们可以通过使用链上交互工具(例如钱包)进行交互。 + +### Manifest-包清单 +Move.toml 是描述 包 及其依赖关系的清单文件,采用 TOML 格式,包含多个部分,其中最重要的是 [package]、[dependencies] 和 [addresses]。 + +下图是一个基础的包清单配置 +```toml +[package] +name = "packagedemo" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +packagedemo = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" +``` +[package] 部分用于描述包。该部分的字段不会被发布到链上,但会用于工具和版本管理;它还指定了编译器使用的 Move 版本。 + +[dependencies] 部分用于指定项目的依赖关系。每个依赖关系都以键值对的形式指定,键是依赖的名称,值是依赖的规范。依赖规范可以是 git 仓库的 URL 或本地目录的路径。 + +[dev-dependencies] 部分,用于在开发和测试模式下覆盖依赖关系。 + +[addresses] 部分用于为地址添加别名。 + +[dev-addresses] 部分与 [addresses] 类似,但仅在测试和开发模式下有效。 + + +### address 地址 +地址是区块链上位置的唯一标识符。它用于标识包 (package)、账户 (account)和对象 (object)。地址的固定大小为32字节,通常表示为以 0x 开头的十六进制字符串。地址不区分大小写。 + +sui预留了一部分地址,用于底层依赖包,例如以下几个: + +0x1 - Sui 标准库的地址(别名 std) + +0x2 - Sui 框架的地址(别名 sui) + +0x6 - 系统 Clock 对象的地址 + +### account 账户 +账户 (account) 是识别用户的一种方式。账户由私钥生成,并通过地址来识别。账户可以拥有对象,并且可以发送交易。每个交易都有一个发送者,发送者通过地址来识别。 + +Sui 支持多种加密算法用于生成账户。支持的曲线有 ed25519、secp256k1。Sui 的加密灵活性使得账户生成具有灵活性和多样性。 + +我们可以通过第三方钱包进行地址生成,例如sui Wallet + +也可以使用sui-cli进行本地生成,命令如下: + +```shell +sui client new-address ed25519 +``` + +### transaction 交易 +transaction(交易)是区块链系统中一个重要概念,它与现实中的交易不同,在区块链系统中,transaction是与链上交互中,任何改变区块链系统状态的变动都可视为交易。 + +此类活动可以是转账,调用函数,部署合约,升级合约等操作。 + +用户通过调用程序中的公开函数与区块链上的智能合约进行交互。这些公开函数定义了可以在交易中执行的操作。交易是由账户发起的,账户发送交易时指定它要操作的对象。 + +我们可以通过区块浏览器,查看对应的transaction信息 + +![transaction.png](https://img.learnblockchain.cn/attachments/2024/11/l8HgxLhk67388ddb7c023.png) + +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove \ No newline at end of file diff --git "a/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\345\237\272\347\241\200\350\257\255\346\263\225(\344\270\200).md" "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\345\237\272\347\241\200\350\257\255\346\263\225(\344\270\200).md" new file mode 100644 index 000000000..c903201c8 --- /dev/null +++ "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\345\237\272\347\241\200\350\257\255\346\263\225(\344\270\200).md" @@ -0,0 +1,238 @@ +# move入门之基础语法(一) :模块,注释,常量,结构体 + +🧑‍💻作者:gracecampo + +> 说明:本章将介绍在move中如何去新建模块,代码注释,声明常量,声明结构体语法的使用。 + +## 新建模块 +> 模块的定义: 模块是move的基本构成组件,利用模块特性可以优化代码结构以及功能解耦,模块中定义的所有成员,例如常量,结构体,函数方法都是模块私有的。 + +新建模块语法: +```sui move +module package::module_name { + // module body +} +``` +从以上代码,我们可以看出,当我们想要声明一个模块是,我们需要用 module 关键字后跟 包名:模块名,在{}中添加模块代码。 + +在 Move 中,模块可以包含以下几类代码: + +1. Structs:定义数据结构,用于存储和操作数据。 +2. Functions:定义可执行的代码块,可以对数据进行操作和逻辑处理。 +3. Constants:定义不可变的值,通常用于配置或常量数据。 +4. Imports:导入其他模块中的代码,以便重用和模块化。 +5. Struct Methods:与特定结构关联的方法,用于操作该结构的数据。 + +模块名规范: +1. 模块名必须包内唯一 +2. 模块名应采用snake_case形式的命名格式,即模块名小写,并以下划线分割 + +通常我们使用 `sui move new 项目名` 命令 即可创建出一个项目模板,其中模块源码写在source文件加下。 + +## 代码注释的使用 + +> 在 Move 中,代码注释用于添加说明或文档到代码中,帮助开发者理解代码的功能和逻辑。注释不会被编译器处理,也不会生成 Move 字节码。 + +注释的主要用途包括: +1. 解释代码:帮助开发者理解代码的目的和实现细节。 +2. 添加备注:为自己或其他开发者添加开发过程中的备注。 +3. 临时移除代码:在调试或测试时,临时移除某些代码行。 +4. 生成文档:使用文档注释生成代码文档。 + +接下来,我们将以代码方式演示下在不同场景下,如何合理利用注释,方便我们的开发。 + +### 行注释 +> 语法:使用 // 来标识,被双斜杠标记后的行代码不参与编译 + +通常我们用行注释,来描述变量说明,或注释掉对应代码行,使其不参与编译 + +行注释的主要作用是帮助开发者解释代码的功能或逻辑,或者在代码中添加开发过程中的备注。 + +```sui move +module package::module_name { + // 常量说明 + const ENOT_IMPLEMENTED: u64 = 0; //常量说明也可以放在这里 + //该常量被注释,不参与编译,move编译器将或略此行代码 + //const AN_ADDRESS: address = @0x0; + +} + +``` +### 块注释 +> 语法:使用/* 开始,以 */ 结束,来标识被包括的代码语句,代码块不参与编译 + +通常我们用块注释,注释掉对应代码块,在/* 和 */之间的代码,将不参与编译 + +块注释非常适合用于注释掉多行代码或在代码中添加更长的说明 + +```sui move +module package::module_name { + /*可以放在这里*/ + fun /*可以放在这里*/ add_method() : u64 { + /*可以放在这里*/ + let a:u64 = 10; + let b:u64 = 10; + a + b + } +} + +``` +### 文档注释 +> 语法:使用 /// 开始,为相关代码生成文档说明 + +在 Move 中,文档注释用于为代码生成文档。它们类似于块注释,文档注释的主要作用是为模块、函数、结构体等提供详细的说明, +帮助开发者和用户理解代码的功能和用法 + +```sui move +///模块功能说明 +module package::module_name { + ///方法功能说明 + fun add_method() : u64 { + ///变量说明 + let a:u64 = 10; + let b:u64 = 10; + a + b + } +} +``` +**文档注释和行注释类似,只不过对应的注释信息约定需要放于需要描述的代码上一行** + +## 如何声明常量 +> 常量的定义:常量是在模块中,属于模块私有的的成员,一旦声明,值便不可再修改; + +常量是在模块级别定义的不可变值,常量通常用于为模块中使用的静态值命名 + +我们通常使用const关键字来声明一个常量,编译器强制要求,常量必须以大写字母开头 + +常量在模块的字节码中存储,每次使用时都会复制其值 + +> 编译器强制要求,常量必须以大写字母开头,我们通常约定为全大写,以下划线分割形式 +>> 语法: const CONST_NAME: type = value; +```sui move +module package::module_name { + // 此为一个常量 + const ENOT_IMPLEMENTED: u64 = 0; + +} +``` +> 应用:常量是私有的,默认情况下不能在其他模块中访问。 +> 为了在其他模块中使用常量,可以使用“配置模式”来解决这个问题。通过定义一个“配置”模块并导出常量,其他模块就可以导入并读取这些常量。 + +```sui move +module package::module_name { + // 此为一个常量 + const ENOT_IMPLEMENTED: u64 = 0; + public fun enot_implemented(): u64 { ENOT_IMPLEMENTED } +} +``` +通过这种方式,其他模块可以通过导入 package::module_name 模块并调用相应的函数(enot_implemented)来访问这些常量。 + + +## 如何声明结构体 +>结构体:在 Move 中,结构体是用户定义的数据结构,可以包含多个字段。要声明一个结构体,使用 struct 关键字,后跟结构体名称和字段定义。 +字段定义使用 field_name: field_type 语法,并用逗号分隔。 + +```sui move +module package::module_name { + // 结构体 + public struct Person has copy, drop{ + name: vector, + age: u8 + } +} +``` + +限制: +1. 结构体的类型可以在其他模块中引用,但字段和创建或销毁结构体的能力仍然是定义该结构体的模块内部的 +2. 结构体不能是递归的,一个结构体不能包含自身作为字段 +3. 结构体名称必须以大写字母开头(A-Z),名称可以包含下划线、字母和数字,但不能以数字开头 +4. 默认情况下,结构体是线性和短暂的,意味着它们不能被复制或丢弃。可以通过为结构体添加能力(如 copy 和 drop)来放宽这些限制 + + +在上述示例中,我们定义了一个Person的结构体,它拥有copy, drop能力,声明了age字段。 +如果要开放外部可见,结构体必须加必须加public关键字,并提供一个公共构造函数,访问结构体字段提供对应的公共函数来访问 + +```sui move +module package::module_name { + // 提供一个公共构造函数 + public fun new_person(name: vector,age: u8): Person { + Person { name,age } + } + // 提供一个公共函数来访问结构体的字段 + public fun get_age(person: &Person):u8{ + person.age + } +} +``` +要创建结构体的实例,可以使用结构体名称,后跟字段的值。 +对于命名字段,字段的顺序无关紧要,但必须提供字段名称。 +对于位置字段,字段的顺序必须与结构体定义中的顺序匹配,并且必须使用 () 而不是 {} 来封装参数。 +```sui move +module package::module_name { + ///创建和使用实例 + public fun use_person():u8{ + let person = Person {name: b"zhangsan",age:16}; + //访问字段 + person.age + } +} +``` + +解构结构体,并返回age字段值 +在 Move 中,解构结构体是指将结构体分解为其字段。 +> 解构命名字段的结构体 +```sui move +module package::module_name { + ///解构结构体 + public fun unpack_person(): u8 { + let person = Person { name: b"zhangsan", age: 16 }; + let Person { name, age } = person; + age + } +} +``` +在这个例子中,Person { name,age } = person, 将 Person 结构体解构为name,age两个个变量,并在接下来的代码中,使用结构出的变量名,进行使用 +> 使用通配符解构:如果不需要所有字段,可以使用通配符 _ 忽略某些字段: +```sui move +module package::module_name { + ///解构结构体 + public fun unpack_person():u8{ + let person = Person {name: b"zhangsan",age:16}; + let Person { name,age: _ } = person; + name + } +} +``` +在这个例子中,let Person { name,age: _ } = person; 将 Person 结构体解构为name,age两个个变量,并忽略了age属性 + +>解构嵌套结构体 +```sui move +module package::module_name { + // 结构体 + public struct Person has copy, drop{ + name: vector, + age: u8 + } + // 结构体 + public struct House has copy, drop{ + person: Person + } + + fun unpack_person() { + let house = House{person : Person {name: b"zhangsan",age:16}}; + let House{person} = house; + let Person { name, age } = person; + } +c + +``` + +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove + + diff --git "a/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\347\273\223\346\236\204\344\275\223\347\232\204\345\233\233\345\244\247\350\203\275\345\212\233.md" "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\347\273\223\346\236\204\344\275\223\347\232\204\345\233\233\345\244\247\350\203\275\345\212\233.md" new file mode 100644 index 000000000..87b7be41c --- /dev/null +++ "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\205\245\351\227\250\344\271\213\347\273\223\346\236\204\344\275\223\347\232\204\345\233\233\345\244\247\350\203\275\345\212\233.md" @@ -0,0 +1,173 @@ +# move入门之结构体的四大能力 +🧑‍💻作者:gracecampo +本文将介绍在move中很重要的的结构体知识点,以及结构体的四大能力。 +就像人有运动,说话,思考的能力一样,一个结构体我们也可以赋予它一定的能力。 +## 结构体定义 +结构体是面向结构体编程思想的重要体现,我们将现实事物抽象成代码,必然需要一个载体,而这个载体在move编程中的体现就是结构体,将现实事物的一些特征, +用结构体属性来表示出来。 + +比如我们要抽象出一个人,而这个人具备三种基本属性:姓名,性别,年龄,我们在代码中可以这样定义 +```sui move +//定义人的结构体,存在姓名,年龄,性别三个属性 +module person::person{ + use std::string::String; + + public struct Person{ + name: String, + age: u8, + sex: String + } +} +``` +### 结构体限制: +结构体模式是私有的,只能模块内部访问,但是我们可以通过可见性声明,比如添加public或者public(package),来提高它的可见性。 + +public :公共可见,凡是导入该模块的,都可以使用 + +public(package): 包内可用,只能在包内访问及使用,相比public要更严格。 + +## copy能力 +move是用于表示数字资产或者资源的,而数字资产或者资源在某种程度上是不允许复制的。 +而在一些业务场景下,是需要一些资源或者数字资产具备copy能力。 +copy能力表示该类型的实例或者值可以被复制,在move中自定义类型如果不加说明,默认是不具备copy能力的。此能力作用于结构体上。 +举例说明: +```sui move +module person::person { + use std::string::String; + + public struct Person has copy{ + name: String, + age: u8, + sex: String + } +} +``` +在上面的例子中,我们添加has copy,使得person结构体拥有被复制的能力,但在常识中,人是不能被复制的,但是通过copy能力我们可以让person这个结构体 +被复制。 +接下来,我们来看代码: +```sui move +module person::person { + use std::string::String; + + public struct Person has copy,drop{ + name: vector, + age: u8, + sex: vector, + } + + public fun copy_persion(){ + let personA = Person{name: b"zhangsan",age:18,sex:b"男"}; + //可以复制到personB + let personB = personA; + //通过解引用,复制到personC + let personC = *&personB; + } +} +``` +在上述代码中personA被隐性的复制到personB,personB通过解引用操作符复制到personC。 +在上述代码中,如果Person没有copy能力,编译将失败。 +在编译上述代码时,Person不仅需要声明copy,也应当具有drop能力,否则编译会失败。 +drop能力会在下面的drop能力介绍。 +## drop能力 +定义: +在move中,为了是所有资源或者资产得到正确处理,是不允许声明结构体后不使用它忽略的,否则会导致编译失败。 +而拥有drop能力允许对结构体进行忽略或者丢弃。 +```sui move +module book::drop_ability { + + /// + public struct PersonHasDrop has drop{ + name: vector, + age: u8, + sex: vector, + } + + public struct NoDropPerson{ + } + + #[test] + fun test_drop() { + //声明一个无drop能力的结构体 + let no_drop = NoDropPerson {}; + //声明拥有drop能力的结构体,但是可以忽略它 + let _ = PersonHasDrop{name:b"zhangsan",age:19,sex:b"nan"}; + //无drop能力的我们必须解包结构体,才能通过编译 + let NoDropPerson {name:_,age:_,sex:_} = no_drop; + } +} +``` +drop能力通常在自定义的结构体上使用,以防在不需要的时候,可以或略它。 +例如,vector 类型具有 drop 能力,这使得在不再需要时可以忽略该向量。 +sui提供的标准库中,很多原生类型是已经声明drop能力的,此项设计,极大减轻了我们对于对于结构体属性的管理。 +## key能力 +在move的设计中,drop和copy是针对结构体的,他们主要影响的是结构体行为,而key和store能力主要影响的是结构体的储存。 +key通常是标识一个对象的唯一性,用于标识该对象在区块链系统中的储存位置。 +sui验证器要求结构体的第一个字段必须明明为id,并且类型是UID. +```sui move +module book::key_ability { + use sui::object::{Self, ID, UID}; + public struct Person has key{ + id: UID, + name: vector, + age: u8, + sex: vector, + } + + public fun copy_persion(ctx: &mut TxContext): Person{ + Person{ + id:object::new(ctx),name: b"zhangsan",age:18,sex:b"男" + } + } +} +``` +当我们需要对象进行链上转移的时候,必须使结构体拥有key的能力。否则将无法转移。 +故而具备key能力的对象是不可复制以及丢弃的,故而它是不能被赋予copy,drop能力的。 +## store能力 +store能力是一种特殊的能力,允许将结构体作为另一个结构体的字段来使用。 +如果不声明store能力,源码将无法编译成功。 +```sui move +module book::store_ability { + use sui::object::{Self, ID, UID}; + + public struct Currency has store{ + currency_type: vector, + } + + public struct PersonWallet has key,store{ + id: UID, + money: Currency + } + + public struct Person has key{ + id: UID, + name: vector, + age: u8, + sex: vector, + wallet: PersonWallet + } + + public fun copy_persion(ctx: &mut TxContext): Person{ + let currency = Currency{ + currency_type:b"usd" + }; + let person_wallet = PersonWallet{ + id: object::new(ctx),money:currency + }; + Person{ + id:object::new(ctx),name: b"zhangsan",age:18,sex:b"男",wallet:person_wallet + } + } +} +``` +在例子中,我们声明了一个拥有store的结构体Currency,而钱包结构体(PersonWallet)将Currency类型作为对象的一个字段, +钱包结构体(PersonWallet)同样拥有store,它同样可以被Person作为一部分来使用。 + +在move中,除了引用之外,所有原生类型都具有store能力,比如address,vector等。 + +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove \ No newline at end of file diff --git "a/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213(\344\270\200).md" "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213(\344\270\200).md" new file mode 100644 index 000000000..7d7de774d --- /dev/null +++ "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213(\344\270\200).md" @@ -0,0 +1,164 @@ +## move的基本数据类型: 整型/布尔型/地址类型 +🧑‍💻作者:gracecampo +学习一门语言,必须先打好基础功,学习一门语言,必然需要掌握其对应的数据类型。 +而move作为一门面向对象的编程语言,在对象定义中,选择合适的数据类型,才能更好的实现功能。 +本文讲述在move中的基本数据结构,希望可能为你带来帮助。 + +在move语言中,分为基本数据类型,包装数据类型,这些数据类型是组成语言的基本构件。基本的数据类型可以单独使用定义变量,也可以组合起来在结构体中组成复杂对象。 + +### 整型类型 +Move 语言支持六种无符号整数类型:u8、u16、u32、u64、u128 和 u256,它们表示的数值由大到小,适用于不同的场景,你可以根据自身业务进行使用。 + +下图举几个数值范围表: + +| 类型 | 值范围 | +|---------------| ------------------------------| +| u | 0~255 | +| u16 | 0~65535 | +| u32 | 0~4294967295 | +| u64 | 0~18446744073709551615 | + +>定义整型变量 +```sui move +module test::test { + public entry fun test(){ + let x = 10u8; + let y = 10u16; + } +} +``` + +#### 支持的操作符 +##### 算术运算: + +加法 (+):用于两个数值相加。如果结果超出整数类型的范围,会中止操作。 +减法 (-):用于从一个数值中减去另一个数值。如果结果小于零,会中止操作。 +乘法 (*):用于两个数值相乘。如果结果超出整数类型的范围,会中止操作。 +模除 (%):用于计算两个数值的余数。如果除数为0,会中止操作。 +截断除法 (/):用于两个数值相除并取整。如果除数为0,会中止操作。 +这些运算要求操作数的类型必须匹配,否则编译器会报错。运算结果的类型与操作数相同。 +```sui move +module test::test { + public entry fun test(){ + //算法运算,必须是同类型 + let x = 10u8; + let y = 10u8; + let z = x+y; + let z = x-y; + let z = x*y; + let z = x/y; + } +} +``` + +##### 比较运算 +整数类型是 Move 语言中唯一可以使用比较运算符的类型。两个操作数需要是相同类型。如果需要比较不同类型的整数,必须先进行类型转换。 + +比较运算不会中止。 + +语法 操作 +```text +< 小于 +> 大于 +<= 小于等于 +>= 大于等于 +``` +```sui move +module movenft::test { + /*比较运算,返回值为布尔类型*/ + public entry fun test(){ + let x = 10u8; + let y = 10u8; + let z = x< y; + let z = x>y; + let z = x<=y; + let z = x>=y; + } +} +``` + +##### 相等运算 +与所有具有 drop 能力的类型一样,所有整数类型都支持 "相等" 和 "不相等" 运算。两个操作数需要是相同类型。如果需要比较不同类型的整数,必须先进行类型转换。 + +语法 操作 +```text +== 相等 +!= 不相等 +``` +```sui move +module movenft::test { + public entry fun test(){ + let x = 10u8; + let y = 10u8; + let z = (x== y); + let z = (x!=y); + } +} +``` +##### 类型转换 +整型是move中唯一支持类型转换的类型,当由高转低是,move并不会如其他语言以损失精度转换,而是会中断转换,简单说低转高可以,高转低不行。 +语法: (x AS type) +解释: x转化位其他整型,其中type只能是整数类型。 +```sui move + module movenft::test { + public entry fun test(){ + let x = 10u8; + let y = 10u16; + let z= (x as u16); + } + } +``` +#### 布尔类型 +布尔类型和其他语言一样,用来表示true 和 false的原始类型。 + +#### 操作运算: +> 短路逻辑: && +> 短路逻辑或:|| +> 逻辑非:! + +上述操作一般用于流程运算中,比如 +```sui move + module movenft::test { + public entry fun test(){ + let x = true; + let y = false; + if(x){ + + }; + while (y){ + + }; + assert!(x,10u8) + } +} + +``` + +#### 地址类型 +在move中就是就是用来表示在一个对象在区块链储存中的位置, 地址类型在move中表示为 address,这个和大多数区块链语言一样,属于内置类型.。 +address类型就是一个32字节(256字节)的 标识符。 +在sui区块链中,主要应用方向有两种 +账户类型地址: 对于sui来说,address就是“账户”,用户区块链用户的转账,交易,参与链上活动。 +例如: +```text +│ elastic-topaz │ 0x9ae8ca9263455c1a1d9243ebc5986496bb315b1c3343f1100851e218e7575348 │ +│ vigilant-quartz │ 0xb76dbc0cab651095651eb550a522d450ab2a1c267ddc5ea70a263fe5b51a6013 │ +│ determined-labradorite │ 0xc33c26e95d20423c2a4a9179ae59e845712f01682ac6bcbccf39f0f8542e6cdd │ +``` +命名对象地址:表示一个模块的包地址,用于确定部署上链的对象位置,用户与合约对象交互。 +例如: +```text +│ ╭────────────┬──────────────────────────────────────────────────────────────────────╮ │ +│ │ objectId │ 0x618967f768a9ffd20aeba77ae2659eb34dffd78a42afd30bc5086cb93e427816 │ │ +│ │ version │ 206235085 │ │ +│ │ digest │ jdSP7agpetC4IJKVqtu8rFQFtvwIKNd6j+fxFEu3BRY= │ │ +│ │ objectType │ 0x0000..0002::package::UpgradeCap │ │ +│ ╰────────────┴──────────────────────────────────────────────────────────────────────╯ +``` +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove \ No newline at end of file diff --git "a/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213(\344\272\214).md" "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213(\344\272\214).md" new file mode 100644 index 000000000..cd8966133 --- /dev/null +++ "b/mover/gracecampo/notes/\350\257\255\346\263\225\346\225\231\347\250\213/move\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213(\344\272\214).md" @@ -0,0 +1,121 @@ +## move的基本数据类型: 向量/引用/元组与单位类型 +🧑‍💻作者:gracecampo +## move的基本数据类型: 向量/引用/元组与单位类型 +### 向量类型(vector) + +向量(vector)是move中提供的唯一集合类型的数据,向量类型支持泛型vector,move也提供了一系列函数进行对向量类型的数据进行操作。 +T可以是整型,地址型,包类型,甚至是向量类型。 +如果要在包中调用,需要导入std::vector + +### 向量声明 +``` + + // 泛型为布尔型的空集合 + let empty: vector = vector[]; + + // 泛型为u8类型的集合 + let v: vector = vector[10, 20, 30]; + + // 泛型为集合是u8的集合 + let vv: vector> = vector[ + vector[10, 20], + vector[30, 40] + ]; +``` +### 向量操作函数 +push_back: 在向量末尾添加一个元素。 +pop_back: 移除向量的最后一个元素。 +length: 返回向量中元素的数量。 +is_empty: 如果向量为空则返回 true。 +remove: 移除给定索引处的元素。 + +``` + let mut v = vector[10, 20, 30]; + vector::push_back(&mut v, 5); + vector::push_back(&mut v, 6); + vector::pop_back(&mut v); + vector::length(&mut v); + vector::is_empty(&mut v); + vector::removetest(&mut v, 1); +``` + +### 向量复制及销毁 + +``` +/*当且仅当T具有copy能力时,vector才具有copy能力*/ +let x = vector[10]; +let y = x; // 隐式复制 +let z = x; +(y, z) + + +/*如果不具备drop能力的泛型需要显式销毁*/ +let v = vector[]; +v.destroy_empty(); +``` +## 引用类型 +move中声明引用类型方式有两种:&e(不可变) 和 &mut e(可变) 。 + +区别: + +不可变引用为只读,不能修改值 + +可变引用可以进行修改值。**通常用于将值传递,但是保留对象的所有权** + +接下来我们定义两个函数来说明: + + +```sui move +module movetest::test { + use std::string; + + /*定义一商品库存结构体,我们规定商品名称不可修改,库存数量可以修改*/ + public struct Shop{ + shopName:string::String, + num:u8 + } + + /*定义一个不可变引用,用于返回商品的库存*/ + public fun showNum(shop: &Shop): u8{ + shop.num + } + /*定义一个可变引用,用于修改库存*/ + public fun editNum(shop: &mut Shop){ + shop.num = shop.num - 1; + } +} +``` +总结来说,& 用于只读访问,而 &mut 用于读写访问。 + +## 元组与单位类型 +元组释义: 拥有0或者多个元素的数组,可用于变量定义以及函数返回值 +定义元组:元组通过在括号内使用逗号分隔的表达式列表创建。 +元组限制: +1. 只能出现在表达式中(通常在函数的返回位置)。 +2. 不能绑定到局部变量。 +3. 不能存储在结构体中。 +4. 元组类型不能用于实例化泛型。 + () 空元组 + (e1, ..., en) 包含N个元素的元组 + + +变量应用 +```sui move + let (x0, x1) = (0, 1); + let (y0, y1, y2) = (0, 1, 2); + let (z0, z1, z2, z3) = (0, 1, 2, 3); +``` +函数应用 +```sui move + + fun returns_unit() {} + fun returns_2_values(): (bool, bool) { (true, false) } + fun returns_4_values(x: &u64): (&u64, u8, u128, vector) { (x, 0, 1, b"foobar") } +``` +💧  [HOH水分子公众号](https://mp.weixin.qq.com/s/d0brr-ao6cZ5t8Z5OO1Mog) + +🌊  [HOH水分子X账号](https://x.com/0xHOH) + +📹  [课程B站账号](https://space.bilibili.com/3493269495352098) + +💻  Github仓库 https://github.com/move-cn/letsmove \ No newline at end of file diff --git a/mover/gracecampo/readme.md b/mover/gracecampo/readme.md index 7964d1e26..612425718 100644 --- a/mover/gracecampo/readme.md +++ b/mover/gracecampo/readme.md @@ -31,17 +31,17 @@ ## 03 move NFT -- [] nft package id : 0xaf873773b0ec5ec38e22891afac1b8b4a66f02a569fdd2220e87777d545ae69b -- [] nft object id : 0xa7b2de518c067b6fc7b62f92d99a930362eb6a98bed92e8ed233f194bc6167bc -- [] 转账 nft hash: BcW8xPGv8kZUKn4MtDyq4U49F7KMJiPSeBwt51tAeA14 -- [] scan 上的 NFT 截图:![Scan截图](./scan/moveNFT.png) +- [√] nft package id : 0xaf873773b0ec5ec38e22891afac1b8b4a66f02a569fdd2220e87777d545ae69b +- [√] nft object id : 0xa7b2de518c067b6fc7b62f92d99a930362eb6a98bed92e8ed233f194bc6167bc +- [√] 转账 nft hash: BcW8xPGv8kZUKn4MtDyq4U49F7KMJiPSeBwt51tAeA14 +- [√] scan 上的 NFT 截图:![Scan截图](./scan/moveNFT.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [√] game package id : 0xd5bc31660d727e41fcf1fc12c315045d2de4fa2ac176573088a4a67f2c0ab8a0 +- [√] deposit Coin hash: 8x5jM31YA6GdG1gwM5cqReAQj1amytcsFwZkWrnH9u58 +- [√] withdraw `Coin` hash: 8GgCL7MuexN955nDnp4P5cBHkJDo4a4RFgxEop6syZ7Z +- [√] play game hash: A9miomg8CSDZkJH7B6Emgabb3RNuXV48aPQoweXFYuZB ## 05 Move Swap diff --git a/mover/greyhao/co-learn-2411/readme.md b/mover/greyhao/co-learn-2411/readme.md index a34a3fd39..e6a158cd9 100644 --- a/mover/greyhao/co-learn-2411/readme.md +++ b/mover/greyhao/co-learn-2411/readme.md @@ -29,6 +29,7 @@ - [x] 第二篇笔记 - [x] 第三篇笔记 - [x] 第四篇笔记 +- [x] 第五篇笔记 ## 对外输出学习笔记 @@ -36,6 +37,7 @@ - [x] 第二篇笔记 [学习笔记链接](https://learnblockchain.cn/article/9839) - [x] 第三篇笔记 [学习笔记链接](https://learnblockchain.cn/article/9866) - [x] 第四篇笔记 [学习笔记链接](https://learnblockchain.cn/article/9876) +- [x] 第五篇笔记 [学习笔记链接](https://learnblockchain.cn/article/9925) ## 在HOH社区公众号发布自己的技术文章 diff --git a/mover/greyhao/code/nft_greyhao/sources/nft_greyhao.move b/mover/greyhao/code/nft_greyhao/sources/nft_greyhao.move index e21ff15e2..9b3eb9a0a 100644 --- a/mover/greyhao/code/nft_greyhao/sources/nft_greyhao.move +++ b/mover/greyhao/code/nft_greyhao/sources/nft_greyhao.move @@ -4,14 +4,19 @@ module nft_greyhao::nft_greyhao; use std::string::{String , utf8}; use sui::url::{Self, Url}; use sui::event; +use sui::package; +use sui::display; public struct GreyhaoNFT has key, store { id: UID, name: String, description: String, - url: Url, + image_url: Url, } +// OTW for module +public struct NFT_GREYHAO has drop {} + // ====Evens ==== public struct NFTMinted has copy, drop { object_id: ID, @@ -32,8 +37,8 @@ public fun description(nft: &GreyhaoNFT): &String { } /// Get NFT's url -public fun url(nft: &GreyhaoNFT): &Url { - &nft.url +public fun image_url(nft: &GreyhaoNFT): &Url { + &nft.image_url } /// update the `description` of `nft` to `new_description` @@ -41,6 +46,33 @@ public fun update_description(nft: &mut GreyhaoNFT, new_description: vector, nft.description = utf8(new_description) } +fun init(otw: NFT_GREYHAO, ctx: &mut TxContext) { + // key包含的值就是 GreyhaoNFT 对象中除 id 外的字段 + let keys = vector[ + b"name".to_string(), + b"description".to_string(), + b"image_url".to_string(), + ]; + + let values = vector[ + b"{name}".to_string(), + b"{description}".to_string(), + b"{image_url}".to_string(), + ]; + + let publisher = package::claim(otw, ctx); + + let mut display = display::new_with_fields(&publisher, keys, values, ctx); + + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + let nft = nftInfo(ctx); + transfer::transfer(nft, tx_context::sender(ctx)); +} + #[allow(lint(self_transfer))] public fun mint(ctx: &mut TxContext){ let recipient = tx_context::sender(ctx); @@ -74,12 +106,12 @@ fun nftInfo(ctx: &mut TxContext): GreyhaoNFT { id: object::new(ctx), name: utf8(b"GREYHAO"), description: utf8(b"NFT was created by GreyHao."), - url: url, + image_url: url, } } /// delete `nft` public fun burn(nft: GreyhaoNFT, _: &mut TxContext) { - let GreyhaoNFT {id, name: _, description: _, url: _} = nft; + let GreyhaoNFT {id, name: _, description: _, image_url: _} = nft; id.delete() } \ No newline at end of file diff --git a/mover/happy8bit/code/readme.md b/mover/happy8bit/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/happy8bit/code/task1/hello_move/Move.lock b/mover/happy8bit/code/task1/hello_move/Move.lock new file mode 100644 index 000000000..a860ff0bc --- /dev/null +++ b/mover/happy8bit/code/task1/hello_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "FEE953CD79BB029E97D66B68EB6E2B29CA82D652A80929C4F66B63E37099BE1A" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/mystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/mystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xd3ed7eb25de307ea35944c1105cb84a421371f0573ee33323fb5e8b39ca6680a" +latest-published-id = "0xd3ed7eb25de307ea35944c1105cb84a421371f0573ee33323fb5e8b39ca6680a" +published-version = "1" diff --git a/mover/happy8bit/code/task1/hello_move/Move.toml b/mover/happy8bit/code/task1/hello_move/Move.toml new file mode 100644 index 000000000..3344c9df6 --- /dev/null +++ b/mover/happy8bit/code/task1/hello_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hello_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/mystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hello_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/happy8bit/code/task1/hello_move/sources/hello_move.move b/mover/happy8bit/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..1ae32812e --- /dev/null +++ b/mover/happy8bit/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,19 @@ +module hello_move::hello { + use std::ascii::{String, string}; + use sui::object::{Self,UID}; + use sui::transfer::transfer; + use sui::tx_context::{TxContext, sender}; + + public struct Hello has key{ + id:UID, + say: String + } + + fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id:object::new(ctx), + say: string(b"hello8bit"), + }; + transfer(hello_move, sender(ctx)); + } +} \ No newline at end of file diff --git a/mover/happy8bit/images/PackageIDimage.png b/mover/happy8bit/images/PackageIDimage.png new file mode 100644 index 000000000..6479cc1e7 Binary files /dev/null and b/mover/happy8bit/images/PackageIDimage.png differ diff --git a/mover/happy8bit/images/readme.md b/mover/happy8bit/images/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/happy8bit/images/readme.md @@ -0,0 +1 @@ + diff --git a/mover/happy8bit/images/suiwallet.png b/mover/happy8bit/images/suiwallet.png new file mode 100644 index 000000000..9b42a13f8 Binary files /dev/null and b/mover/happy8bit/images/suiwallet.png differ diff --git a/mover/happy8bit/notes/readme.md b/mover/happy8bit/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/happy8bit/readme.md b/mover/happy8bit/readme.md new file mode 100644 index 000000000..300b95272 --- /dev/null +++ b/mover/happy8bit/readme.md @@ -0,0 +1,55 @@ +## 基本信息 +- Sui钱包地址: `0x32099be78a0f2941d0c06efee5bd6d765f8fd9f0de4c20405c7edee3c5992ab8` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `happy8bit` + +## 个人简介 +- 工作经验: 5年 +- 技术栈: `C` `JAVA` +> 重要提示 请认真写自己的简介 +- 嵌入式开发3年,网络安全2年(物联网) +- 联系方式: tg: `@Makerz` + +## 任务 + +## 01 hello move +- [x] Sui cli version: +- [x] Sui钱包截图: ![Sui钱包截图](./images/suiwallet.png) +- [x] package id: 0xd3ed7eb25de307ea35944c1105cb84a421371f0573ee33323fb5e8b39ca6680a +- [x] package id 在 scan上的查看截图:![Scan截图](./images/PackageIDimage.png) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : + diff --git a/mover/happy8bit/scan/readme.md b/mover/happy8bit/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/happy8bit/scan/readme.md @@ -0,0 +1 @@ + diff --git "a/mover/huahuahua1223/co-learn-2411/images/b\347\253\231\345\205\263\346\263\250.png" "b/mover/huahuahua1223/co-learn-2411/images/b\347\253\231\345\205\263\346\263\250.png" new file mode 100644 index 000000000..ff3fa0311 Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/b\347\253\231\345\205\263\346\263\250.png" differ diff --git a/mover/huahuahua1223/co-learn-2411/images/readme.md b/mover/huahuahua1223/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git "a/mover/huahuahua1223/co-learn-2411/images/\345\210\206\344\272\253\350\275\254\345\217\221.jpg" "b/mover/huahuahua1223/co-learn-2411/images/\345\210\206\344\272\253\350\275\254\345\217\221.jpg" new file mode 100644 index 000000000..e62a37dfe Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\345\210\206\344\272\253\350\275\254\345\217\221.jpg" differ diff --git "a/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" new file mode 100644 index 000000000..477989244 Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" differ diff --git "a/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\347\233\264\346\222\255.jpg" "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\347\233\264\346\222\255.jpg" new file mode 100644 index 000000000..b07ca99ac Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\200\345\221\250\347\233\264\346\222\255.jpg" differ diff --git "a/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" new file mode 100644 index 000000000..b5d6748c3 Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" differ diff --git "a/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255.jpg" "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255.jpg" new file mode 100644 index 000000000..6a8b895b1 Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255.jpg" differ diff --git "a/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" new file mode 100644 index 000000000..26cd748c0 Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\345\255\246\344\271\240\350\256\260\345\275\225.png" differ diff --git "a/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255.jpg" "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255.jpg" new file mode 100644 index 000000000..02fd2072e Binary files /dev/null and "b/mover/huahuahua1223/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255.jpg" differ diff --git a/mover/huahuahua1223/co-learn-2411/project/readme.md b/mover/huahuahua1223/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/huahuahua1223/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/huahuahua1223/co-learn-2411/readme.md b/mover/huahuahua1223/co-learn-2411/readme.md new file mode 100644 index 000000000..04a5052a2 --- /dev/null +++ b/mover/huahuahua1223/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [x] b站,推特关注截图: ![关注截图](./images/b站关注.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [x] 宣传截图:![宣传截图](./images/分享转发.jpg) + +## 每周课程学习 + +- [x] 第一周:![学习记录截图](./images/第一周学习记录.png) +- [x] 第二周:![学习记录截图](./images/第二周学习记录.png) +- [x] 第三周:![学习记录截图](./images/第三周学习记录.png) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [x] 第一周:![学习记录截图](./images/第一周直播.jpg) +- [x] 第二周:![学习记录截图](./images/第二周直播.jpg) +- [x] 第三周:![学习记录截图](./images/第三周直播.jpg) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [x] 第一篇笔记 +- [x] 第二篇笔记 +- [x] 第三篇笔记 +- [x] 第四篇笔记 + +## 对外输出学习笔记 + +- [x] 第一篇笔记【[学习笔记链接](https://blog.csdn.net/Huahua_1223/article/details/143750762)】 +- [x] 第二篇笔记【[学习笔记链接](https://hua1223.blog.csdn.net/article/details/143866005)】 +- [x] 第三篇笔记【[学习笔记链接](https://hua1223.blog.csdn.net/article/details/143895408)】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/huahuahua1223/code/task1/hello_move/Move.lock b/mover/huahuahua1223/code/task1/hello_move/Move.lock index becd37a02..edf4b5680 100644 --- a/mover/huahuahua1223/code/task1/hello_move/Move.lock +++ b/mover/huahuahua1223/code/task1/hello_move/Move.lock @@ -2,7 +2,7 @@ [move] version = 3 -manifest_digest = "8B7DC3EDF1D81F9E2D46D8251E70F4B8D7097878F02438454C30AEF9F05D81D0" +manifest_digest = "15C92DB7143AE506431E8FE14625189CE312456B12D01A47D7711D0BFBD6A124" deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" dependencies = [ { id = "Sui", name = "Sui" }, @@ -10,11 +10,11 @@ dependencies = [ [[move.package]] id = "MoveStdlib" -source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } [[move.package]] id = "Sui" -source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } dependencies = [ { id = "MoveStdlib", name = "MoveStdlib" }, @@ -29,6 +29,6 @@ flavor = "sui" [env.testnet] chain-id = "4c78adac" -original-published-id = "0x93bad0875bd458ed7b387bce99def8f04fb20a0a1c3dfa22d21fbed100f11324" -latest-published-id = "0x93bad0875bd458ed7b387bce99def8f04fb20a0a1c3dfa22d21fbed100f11324" +original-published-id = "0x928bdfbbbabe63c511c23b1bc494d02f076f64648f36a51add0a122b0aff82af" +latest-published-id = "0x928bdfbbbabe63c511c23b1bc494d02f076f64648f36a51add0a122b0aff82af" published-version = "1" diff --git a/mover/huahuahua1223/code/task1/hello_move/Move.toml b/mover/huahuahua1223/code/task1/hello_move/Move.toml index f99a76a8d..2fd3b0f2a 100644 --- a/mover/huahuahua1223/code/task1/hello_move/Move.toml +++ b/mover/huahuahua1223/code/task1/hello_move/Move.toml @@ -5,7 +5,7 @@ edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move # authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] [dependencies] -Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } # For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. # Revision can be a branch, a tag, and a commit hash. diff --git a/mover/huahuahua1223/code/task2/my_coin/Move.lock b/mover/huahuahua1223/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..388612bc2 --- /dev/null +++ b/mover/huahuahua1223/code/task2/my_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "F736B510287895B9E312F466011986BB6BE314FD8023E38FFD53560AA5EFBB84" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.35.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x6c1e664cc9cab212a59c7d2f8d30554ce8ace9efd2858074bb59fb14c60ef0ff" +latest-published-id = "0x6c1e664cc9cab212a59c7d2f8d30554ce8ace9efd2858074bb59fb14c60ef0ff" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036" +latest-published-id = "0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036" +published-version = "1" diff --git a/mover/huahuahua1223/code/task2/my_coin/Move.toml b/mover/huahuahua1223/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..a51b96f89 --- /dev/null +++ b/mover/huahuahua1223/code/task2/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/huahuahua1223/code/task2/my_coin/sources/huahuahua1223_coin.move b/mover/huahuahua1223/code/task2/my_coin/sources/huahuahua1223_coin.move new file mode 100644 index 000000000..25210ffb8 --- /dev/null +++ b/mover/huahuahua1223/code/task2/my_coin/sources/huahuahua1223_coin.move @@ -0,0 +1,23 @@ +module my_coin::huahuahua1223_coin{ + use sui::coin::create_currency; + use std::option::{Self, none, some}; + use sui::transfer::{ public_transfer, public_freeze_object }; + use sui::url::{Self, Url}; + + + public struct HUAHUAHUA1223_COIN has drop {} + + fun init(huahuahua1223_coin: HUAHUAHUA1223_COIN, ctx: &mut TxContext) { + let url = url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/138219491"); + let yes = some(url); + // let no = none(); + + let (treasury, coin_metadata) = + create_currency(huahuahua1223_coin, 8, b"HUAHUAHUA1223_COIN", b"HUAHUAHUA1223_COIN", b"this is my coin", yes, ctx); + + public_freeze_object(coin_metadata); + + public_transfer(treasury, ctx.sender()) + } + +} \ No newline at end of file diff --git a/mover/huahuahua1223/code/task2/my_coin/sources/huahuahua1223_faucet_coin.move b/mover/huahuahua1223/code/task2/my_coin/sources/huahuahua1223_faucet_coin.move new file mode 100644 index 000000000..5677b31d5 --- /dev/null +++ b/mover/huahuahua1223/code/task2/my_coin/sources/huahuahua1223_faucet_coin.move @@ -0,0 +1,23 @@ +module my_coin::huahuahua1223_faucet_coin{ + use sui::coin::create_currency; + use std::option::{Self, none, some}; + use sui::transfer::{ public_share_object, public_freeze_object }; + use sui::url::{Self, Url}; + + + public struct HUAHUAHUA1223_FAUCET_COIN has drop {} + + fun init(huahuahua1223_faucet_coin: HUAHUAHUA1223_FAUCET_COIN, ctx: &mut TxContext) { + let url = url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/138219491"); + let yes = some(url); + // let no = none(); + + let (treasury, coin_metadata) = + create_currency(huahuahua1223_faucet_coin, 8, b"HUAHUAHUA1223_FAUCET_COIN", b"HUAHUAHUA1223_FAUCET_COIN", b"this is my faucet coin", yes, ctx); + + public_freeze_object(coin_metadata); + + public_share_object(treasury) + } + +} \ No newline at end of file diff --git a/mover/huahuahua1223/code/task2/my_coin/tests/my_coin_tests.move b/mover/huahuahua1223/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/huahuahua1223/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/huahuahua1223/code/task3/my_nft/Move.lock b/mover/huahuahua1223/code/task3/my_nft/Move.lock new file mode 100644 index 000000000..53fa849f4 --- /dev/null +++ b/mover/huahuahua1223/code/task3/my_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1C7E4E6784885553F41F77ACBDC5306913E332B17CDD69A828BE8590288858D2" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.35.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x2f7822ab2a65f1a15dfbe475e24ff39cc13f1bd7b824265d697e4aeab3998258" +latest-published-id = "0x2f7822ab2a65f1a15dfbe475e24ff39cc13f1bd7b824265d697e4aeab3998258" +published-version = "1" diff --git a/mover/huahuahua1223/code/task3/my_nft/Move.toml b/mover/huahuahua1223/code/task3/my_nft/Move.toml new file mode 100644 index 000000000..1f5914ca6 --- /dev/null +++ b/mover/huahuahua1223/code/task3/my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/huahuahua1223/code/task3/my_nft/sources/display_nft.move b/mover/huahuahua1223/code/task3/my_nft/sources/display_nft.move new file mode 100644 index 000000000..05295e4a4 --- /dev/null +++ b/mover/huahuahua1223/code/task3/my_nft/sources/display_nft.move @@ -0,0 +1,62 @@ +module my_nft::display_nft{ + use std::string; + use std::string::{utf8, String}; + use sui::tx_context::{sender}; + use sui::package; + use sui::display; + + public struct MyNFT has key, store { + id: UID, + name: String, + image_url: String, + } + + public struct DISPLAY_NFT has drop {} + + fun init(otw: DISPLAY_NFT, ctx: &mut TxContext) { + let keys = vector[ + utf8(b"name"), + utf8(b"link"), + utf8(b"image_url"), + utf8(b"description"), + utf8(b"project_url"), + utf8(b"creator"), + ]; + + let values = vector[ + utf8(b"{name}"), + utf8(b"https://sui-heroes.io/hero/{id}"), + utf8(b"{image_url}"), + utf8(b"A true Hero of the Sui ecosystem!"), + utf8(b"https://sui-heroes.io"), + utf8(b"Unknown Sui Fan") + ]; + + let publisher = package::claim(otw, ctx); + + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + display::update_version(&mut display); + + transfer::public_transfer(publisher, sender(ctx)); + transfer::public_transfer(display, sender(ctx)); + + let nft = MyNFT { + id: object::new(ctx), + name: string::utf8(b"huahuahua1223 display nft"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/138219491"), + }; + + transfer::public_transfer(nft, sender(ctx)); + } + + + public entry fun mint(name: String, image_url: String, ctx: &mut TxContext) { + let id = object::new(ctx); + let nft = MyNFT { id, name, image_url }; + transfer::public_transfer(nft, sender(ctx)); + } +} + diff --git a/mover/huahuahua1223/code/task3/my_nft/tests/my_nft_tests.move b/mover/huahuahua1223/code/task3/my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/huahuahua1223/code/task3/my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git "a/mover/huahuahua1223/images/NFT\346\210\252\345\233\276.png" "b/mover/huahuahua1223/images/NFT\346\210\252\345\233\276.png" new file mode 100644 index 000000000..3eb4d790c Binary files /dev/null and "b/mover/huahuahua1223/images/NFT\346\210\252\345\233\276.png" differ diff --git a/mover/huahuahua1223/notes/readme.md b/mover/huahuahua1223/notes/readme.md index 96fa95b46..534bd15aa 100644 --- a/mover/huahuahua1223/notes/readme.md +++ b/mover/huahuahua1223/notes/readme.md @@ -1,16 +1,125 @@ # task1 -1. 创建项目 +1. sui安装 +sui --version + +2. 安装IDE,vscode插件 + +3. 安装钱包 + + +4. 运行hello_move +创建项目 ```shell sui move new hello_move ``` -2. 发布上链 +发布上链 `cd hello_move` sui move build sui move test +查看当前地址 ```shell sui client addresses +``` + +获取测试sui +```shell +sui client faucet +``` + +查看余额 +```shell +sui client gas +``` + +部署合约 +```shell sui client publish --gas-budget 100000000 ``` -事务数据、事务效果、事务块事件、对象更改和余额更改 \ No newline at end of file + + + +事务数据、事务效果、事务块事件、对象更改和余额更改 + + +# task2 +## 1. 创建项目 +sui move new my_coin +cd .\my_coin\ +空编译 +sui move build + +## 2. 测试网部署 +```bash +sui client publish --skip-dependency-verification +``` +```bash +sui client call --help +``` + +调用铸造coin模块的 mint_and_transfer 函数,`0x2`是coin模块的包 +sui client call --package 0x2 +--module coin +--function mint_and_transfer +--type-args packageID::模块名::模块 +--args TreasuryCap的object id 铸造数量 接收地址 + +- my_coin::HUAHUAHUA1223_COIN +```bash +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x7caf338071535a6f0df38211d34cd475b4c5ae3958b591ffb967b947cf6b787b::huahuahua1223_coin::HUAHUAHUA1223_COIN --args 0x02ca6c177ab698e12e374270299c32019aaac562f37d20f5c108fe47b90d0daf 10000000000 0xfcaab3c6b0758f32b8e6782a23ab10a59ff0884a0785cd3d8ee391ccf96ca50a +``` + +- my_coin::HUAHUAHUA1223_FAUCET_COIN +```bash +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x7caf338071535a6f0df38211d34cd475b4c5ae3958b591ffb967b947cf6b787b::huahuahua1223_faucet_coin::HUAHUAHUA1223_FAUCET_COIN --args 0x4b543b18ce5f903d7bf8c63aaacacb63db414110bc696ddd058fdda2f0e4dcba 10000000000 0xfcaab3c6b0758f32b8e6782a23ab10a59ff0884a0785cd3d8ee391ccf96ca50a +``` + +## 3. 主网部署 +添加主网 +```bash +sui client new-env --alias mainnet --rpc https://fullnode.mainnet.sui.io:443 +``` + +切换到主网 +```bash +sui client switch --env mainnet +``` + +查看所有环境 +```bash +sui client envs +``` + +查看当前激活的地址 +```bash +sui client active-address +``` + +sui client publish --skip-dependency-verification + +- my_coin::HUAHUAHUA1223_COIN +```bash +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036::huahuahua1223_coin::HUAHUAHUA1223_COIN --args 0xeb347cf0d593756d04a7f56eb7d71864ecc1b0d4db4f131dc58d8c735581d5e6 10000000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 +``` + +- my_coin::HUAHUAHUA1223_FAUCET_COIN +```bash +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036::huahuahua1223_faucet_coin::HUAHUAHUA1223_FAUCET_COIN --args 0x0b1d96bcc48a001596fd1b8a98c9166f8653aee9888a12d221e807c0f5be0009 10000000000 0xfcaab3c6b0758f32b8e6782a23ab10a59ff0884a0785cd3d8ee391ccf96ca50a + +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036::huahuahua1223_faucet_coin::HUAHUAHUA1223_FAUCET_COIN --args 0x0b1d96bcc48a001596fd1b8a98c9166f8653aee9888a12d221e807c0f5be0009 10000000000 0xba05e5ff69321ed26d686dc08ecb9df43113139f6483893740b35a8361c6c4a7 +``` + + +# task3 +## 1. 创建项目 +sui move new my_nft +cd .\my_nft\ +sui move build + +[nft对象标准](https://docs.sui.io/standards/display) + +部署合约 +```bash +sui client publish --skip-dependency-verification +``` \ No newline at end of file diff --git a/mover/huahuahua1223/readme.md b/mover/huahuahua1223/readme.md index 4e8b51800..334368946 100644 --- a/mover/huahuahua1223/readme.md +++ b/mover/huahuahua1223/readme.md @@ -1,5 +1,5 @@ ## 基本信息 -- Sui钱包地址: `0xdbbf5b1fcca21cdd5bfc5c0653ff1186e58227b9f255e9b3e85ee28915946813` +- Sui钱包地址: `0xba05e5ff69321ed26d686dc08ecb9df43113139f6483893740b35a8361c6c4a7` > 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 - github: `huahuahua1223` @@ -19,17 +19,17 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/hello_scan.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : `0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036` +- [x] Faucet package id : `0x4e393fad36baba534f8cbfa9852665c49a69be64cf5b82576f267007e187d036` +- [x] 转账 `My Coin` hash:`4DafrEdShrs2JpCEubqMvQABB7f51iid2j3yNfgDAFsp` +- [x] `Faucet Coin` address1 mint hash:`F9xZ7fnvucHvviSNeJQ3EiUX3599kBv1yVMw2vpyQpD9` +- [x] `Faucet Coin` address2 mint hash:`825rrdSMnRQwKB6ebNvVjhzYPhE4Wk3LVPwWt7STxJGc` ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :`0x2f7822ab2a65f1a15dfbe475e24ff39cc13f1bd7b824265d697e4aeab3998258` +- [x] nft object id : `0xac19559587d38820e6b88089dc5cb22abe9296c2f0d10e7bcdd778733bb36103` +- [x] 转账 nft hash:`H9s6UewebGgA2QVZsKutfZh72vFDHfuBUv7hnWw4qpZg` +- [x] scan上的NFT截图:![Scan截图](./images/NFT截图.png) ## 04 Move Game - [] game package id : diff --git a/mover/huahuahua1223/scan.jpg b/mover/huahuahua1223/scan.jpg deleted file mode 100644 index d16ebb649..000000000 Binary files a/mover/huahuahua1223/scan.jpg and /dev/null differ diff --git a/mover/huochai666/code/readme.md b/mover/huochai666/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/huochai666/code/task1/hello_move/Move.lock b/mover/huochai666/code/task1/hello_move/Move.lock new file mode 100644 index 000000000..185abf657 --- /dev/null +++ b/mover/huochai666/code/task1/hello_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "8B7DC3EDF1D81F9E2D46D8251E70F4B8D7097878F02438454C30AEF9F05D81D0" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x247bd81400851c690d0db60c6b4a5cc69490414bf2ad10caf66c9268c2fcaaa6" +latest-published-id = "0x247bd81400851c690d0db60c6b4a5cc69490414bf2ad10caf66c9268c2fcaaa6" +published-version = "1" diff --git a/mover/huochai666/code/task1/hello_move/Move.toml b/mover/huochai666/code/task1/hello_move/Move.toml new file mode 100644 index 000000000..f99a76a8d --- /dev/null +++ b/mover/huochai666/code/task1/hello_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hello_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hello_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/huochai666/code/task1/hello_move/sources/hello_move.move b/mover/huochai666/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..03c7103b5 --- /dev/null +++ b/mover/huochai666/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,19 @@ +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"huochai666"), + }; + transfer(hello_move, ctx.sender()); +} \ No newline at end of file diff --git a/mover/huochai666/code/task1/hello_move/tests/hello_move_tests.move b/mover/huochai666/code/task1/hello_move/tests/hello_move_tests.move new file mode 100644 index 000000000..7798d8dda --- /dev/null +++ b/mover/huochai666/code/task1/hello_move/tests/hello_move_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hello_move::hello_move_tests; +// uncomment this line to import the module +// use hello_move::hello_move; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hello_move() { + // pass +} + +#[test, expected_failure(abort_code = ::hello_move::hello_move_tests::ENotImplemented)] +fun test_hello_move_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/huochai666/images/package_id.png b/mover/huochai666/images/package_id.png new file mode 100644 index 000000000..2d7a2dd4a Binary files /dev/null and b/mover/huochai666/images/package_id.png differ diff --git a/mover/huochai666/images/sui wallet.png b/mover/huochai666/images/sui wallet.png new file mode 100644 index 000000000..b3e08a633 Binary files /dev/null and b/mover/huochai666/images/sui wallet.png differ diff --git a/mover/huochai666/notes/readme.md b/mover/huochai666/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/huochai666/readme.md b/mover/huochai666/readme.md new file mode 100644 index 000000000..9be06d980 --- /dev/null +++ b/mover/huochai666/readme.md @@ -0,0 +1,53 @@ +## 基本信息 +- Sui钱包地址: `0x248465477bdf19a426cd45f2d185c416cf07f49b0b9d7cd3d9382297ab7f4633` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `huochai666` + +## 个人简介 +- 工作经验: 1年 +- 技术栈: `java` `spring` +- Web2后端开发 想要和在Web3里进步 +- 联系方式: 微信: `huochaiyoo` + +## 任务 + +## 01 hello move +- [x] Sui cli version: sui 1.37.1-7839b9501066 +- [x] Sui钱包截图: ![sui wallet.png](./images/sui wallet.png)! +- [x] package id: 0x247bd81400851c690d0db60c6b4a5cc69490414bf2ad10caf66c9268c2fcaaa6 +- [x] package id 在 scan上的查看截图:![Scan截图](./images/package_id.png) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/hwen227/co-learn-2411/images/readme.md b/mover/hwen227/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/hwen227/code/task2/hwen_coin/Move.lock b/mover/hwen227/code/task2/hwen_coin/Move.lock index 2c140a4c9..4b6f93fc4 100644 --- a/mover/hwen227/code/task2/hwen_coin/Move.lock +++ b/mover/hwen227/code/task2/hwen_coin/Move.lock @@ -32,3 +32,9 @@ chain-id = "4c78adac" original-published-id = "0x14a832d436ae3c6156d76db46ea64574abf29643b29788221b6cee5ddfa8e5fc" latest-published-id = "0x14a832d436ae3c6156d76db46ea64574abf29643b29788221b6cee5ddfa8e5fc" published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x025c077dd399fe7d9a18271df29ea6b4922782d64f6aee06e218c0af9586546b" +latest-published-id = "0x025c077dd399fe7d9a18271df29ea6b4922782d64f6aee06e218c0af9586546b" +published-version = "1" diff --git a/mover/hwen227/code/task2/hwen_faucet_coin/Move.lock b/mover/hwen227/code/task2/hwen_faucet_coin/Move.lock new file mode 100644 index 000000000..7f2779a45 --- /dev/null +++ b/mover/hwen227/code/task2/hwen_faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "9D642DF2896AE1BF9C5C9ED6CCB3EF1135524A84D3489A37B7AB887B0A3699BC" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xc4a538a0f477051636e06e2cea07a179f5a62e8125ed1eef92fa84993eb729ac" +latest-published-id = "0xc4a538a0f477051636e06e2cea07a179f5a62e8125ed1eef92fa84993eb729ac" +published-version = "1" diff --git a/mover/hwen227/code/task2/hwen_faucet_coin/Move.toml b/mover/hwen227/code/task2/hwen_faucet_coin/Move.toml new file mode 100644 index 000000000..fef31bab5 --- /dev/null +++ b/mover/hwen227/code/task2/hwen_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hwen_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hwen_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/hwen227/code/task2/hwen_faucet_coin/sources/hwen_faucet_coin.move b/mover/hwen227/code/task2/hwen_faucet_coin/sources/hwen_faucet_coin.move new file mode 100644 index 000000000..5a34a09b9 --- /dev/null +++ b/mover/hwen227/code/task2/hwen_faucet_coin/sources/hwen_faucet_coin.move @@ -0,0 +1,46 @@ +module hwen_faucet_coin::hwen_faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct HWEN_FAUCET_COIN has drop {} + + fun init( + witness: HWEN_FAUCET_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"HFC", + b"HWEN_FAUCET_COIN", + b"Hwen Faucet Coin", + option::some( + url::new_unsafe_from_bytes( + b"https://postimg.cc/ZWLQPcWp" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} + + diff --git a/mover/hwen227/code/task2/hwen_faucet_coin/tests/hwen_faucet_coin_tests.move b/mover/hwen227/code/task2/hwen_faucet_coin/tests/hwen_faucet_coin_tests.move new file mode 100644 index 000000000..94ec03d6a --- /dev/null +++ b/mover/hwen227/code/task2/hwen_faucet_coin/tests/hwen_faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hwen_faucet_coin::hwen_faucet_coin_tests; +// uncomment this line to import the module +// use hwen_faucet_coin::hwen_faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hwen_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::hwen_faucet_coin::hwen_faucet_coin_tests::ENotImplemented)] +fun test_hwen_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/hwen227/code/task3/hwen_nft/Move.lock b/mover/hwen227/code/task3/hwen_nft/Move.lock new file mode 100644 index 000000000..683a35a75 --- /dev/null +++ b/mover/hwen227/code/task3/hwen_nft/Move.lock @@ -0,0 +1,122 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "847DCC043D286198AFF2797D1ED0D735FAD15667396A013AE0DF40BE5EC722D3" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "NftProtocol", name = "NftProtocol" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Allowlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\allowlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Authlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\authlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Kiosk" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\kiosk" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "NftProtocol" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/nft_protocol" } + +dependencies = [ + { id = "Allowlist", name = "Allowlist" }, + { id = "Authlist", name = "Authlist" }, + { id = "Kiosk", name = "Kiosk" }, + { id = "Originmate", name = "Originmate" }, + { id = "Permissions", name = "Permissions" }, + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Originmate" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\originmate" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Permissions" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\permissions" } + +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Pseudorandom" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\pseudorandom" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Request" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\request" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "Utils" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts\\utils" } + +dependencies = [ + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x8e2e51ec7307cd7a525e46b158e932d971fbf4c46cd7e7dd0b0ed90e5413d223" +latest-published-id = "0x8e2e51ec7307cd7a525e46b158e932d971fbf4c46cd7e7dd0b0ed90e5413d223" +published-version = "1" diff --git a/mover/hwen227/code/task3/hwen_nft/Move.toml b/mover/hwen227/code/task3/hwen_nft/Move.toml new file mode 100644 index 000000000..68843d1c2 --- /dev/null +++ b/mover/hwen227/code/task3/hwen_nft/Move.toml @@ -0,0 +1,39 @@ +[package] +name = "hwen_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.19.1" } +NftProtocol = { git = "https://github.com/Origin-Byte/nft-protocol.git", subdir = "contracts/nft_protocol", rev = "main" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hwen_nft = "0x0" +std = "0x1" +sui = "0x2" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/hwen227/code/task3/hwen_nft/sources/hwen_nft.move b/mover/hwen227/code/task3/hwen_nft/sources/hwen_nft.move new file mode 100644 index 000000000..a59c47e5a --- /dev/null +++ b/mover/hwen227/code/task3/hwen_nft/sources/hwen_nft.move @@ -0,0 +1,83 @@ +module hwen_nft::hwen { + use nft_protocol::attributes::{Self, Attributes}; + use nft_protocol::collection; + use std::ascii::String; + use std::string; + use sui::url::{Self, Url}; + use nft_protocol::display_info; + use nft_protocol::mint_cap::{Self, MintCap}; + use nft_protocol::mint_event; + use ob_permissions::witness; + use sui::vec_map; + + public struct HWEN has drop {} + + public struct Witness has drop {} + + public struct HwenNFT has key, store { + id: UID, + name: String, + description: String, + url: Url, + attributes: Attributes, + } + + fun init(otw: HWEN, ctx: &mut TxContext) { + let (mut collection, mint_cap) = collection::create_with_mint_cap( + &otw, option::none(), ctx + ); + let delegated_witness = witness::from_witness(Witness {}); + + collection::add_domain( + delegated_witness, + &mut collection, + display_info::new( + string::utf8(b"Hwen"), + string::utf8(b"A NFT collection of Hwen on Sui"), + ), + ); + transfer::public_share_object(collection); + transfer::public_share_object(mint_cap); + } + + public entry fun mint_nft( + mint_cap: &MintCap, + name: String, + description: String, + url: String, + ctx: &mut TxContext, + ) { + let nft = HwenNFT { + id: object::new(ctx), + name, + description, + url: url::new_unsafe(url), + attributes: attributes::from_vec(vector[], vector[]) + }; + + mint_event::emit_mint( + witness::from_witness(Witness {}), + mint_cap::collection_id(mint_cap), + &nft, + ); + transfer::public_transfer(nft, tx_context::sender(ctx)); + } + + public entry fun add_new_attributes( + rex_nft: &mut HwenNFT, + new_attribute_name: String, + new_attribute_value: String + ) { + let mut add_new_attributes = vec_map::empty(); + vec_map::insert( + &mut add_new_attributes, + new_attribute_name, + new_attribute_value + ); + attributes::add_new(&mut rex_nft.id, add_new_attributes); + } + + public entry fun transfer_nft(rex_nft: HwenNFT, to: address) { + transfer::public_transfer(rex_nft, to); + } +} \ No newline at end of file diff --git a/mover/hwen227/code/task3/hwen_nft/tests/hwen_nft_tests.move b/mover/hwen227/code/task3/hwen_nft/tests/hwen_nft_tests.move new file mode 100644 index 000000000..9dd78ada7 --- /dev/null +++ b/mover/hwen227/code/task3/hwen_nft/tests/hwen_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hwen_nft::hwen_nft_tests; +// uncomment this line to import the module +// use hwen_nft::hwen_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hwen_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::hwen_nft::hwen_nft_tests::ENotImplemented)] +fun test_hwen_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/hwen227/images/l.png b/mover/hwen227/images/l.png new file mode 100644 index 000000000..97644e060 Binary files /dev/null and b/mover/hwen227/images/l.png differ diff --git a/mover/hwen227/images/myNFT.png b/mover/hwen227/images/myNFT.png new file mode 100644 index 000000000..55e83c98c Binary files /dev/null and b/mover/hwen227/images/myNFT.png differ diff --git a/mover/hwen227/images/qb.png b/mover/hwen227/images/qb.png new file mode 100644 index 000000000..685603038 Binary files /dev/null and b/mover/hwen227/images/qb.png differ diff --git "a/mover/hwen227/images/week2\347\233\264\346\222\255.png" "b/mover/hwen227/images/week2\347\233\264\346\222\255.png" new file mode 100644 index 000000000..8d7463c76 Binary files /dev/null and "b/mover/hwen227/images/week2\347\233\264\346\222\255.png" differ diff --git "a/mover/hwen227/images/week2\347\233\264\346\222\2552.png" "b/mover/hwen227/images/week2\347\233\264\346\222\2552.png" new file mode 100644 index 000000000..36c68a08a Binary files /dev/null and "b/mover/hwen227/images/week2\347\233\264\346\222\2552.png" differ diff --git "a/mover/hwen227/notes/Task1 - \347\216\257\345\242\203\345\256\211\350\243\205\344\270\216Hello World.md" "b/mover/hwen227/notes/Task1 - \347\216\257\345\242\203\345\256\211\350\243\205\344\270\216Hello World.md" new file mode 100644 index 000000000..516b36233 --- /dev/null +++ "b/mover/hwen227/notes/Task1 - \347\216\257\345\242\203\345\256\211\350\243\205\344\270\216Hello World.md" @@ -0,0 +1,125 @@ +# 安装Sui CLI + +**Sui CLI**可以用于编译、部署和测试Move智能合约,但它不仅仅是Move编译器。Sui CLI(命令行界面)是专门为Sui区块链设计的工具,可以管理**Move合约**的编译、发布、交互等操作,并执行其他与Sui节点交互的命令。这套工具是Sui生态系统中的官方CLI工具,提供了一个集成的开发环境。 + +### Step1 在Github中找到安装包 + +在sui-cli的[github地址](https://github.com/MystenLabs/sui)中找到对应系统的最新的release版本,后缀为`.tgz`,windows系统自带解压的功能,解压结束后的文件有以下几个exe程序组成 + +| 名称 | 描述 | +|---------------------|-------------------------------------------| +| move-analyzer | 语言服务器协议实现。 | +| sui | Sui 主二进制文件。 | +| sui-bridge | Sui 原生桥接。 | +| sui-data-ingestion | 捕获全节点数据供索引器存储到数据库中。 | +| sui-faucet | 在本地网络上铸造代币的本地水龙头。 | +| sui-graphql-rpc | Sui RPC 的 GraphQL 服务。 | +| sui-node | 运行本地节点。 | +| sui-test-validator | 在本地网络上运行测试验证器以进行开发。 | +| sui-tool | 提供 Sui 实用工具。 | + +### Step2 添加sui到环境变量 + +#### Windows 系统 + +1. 打开系统环境变量: + - 右键点击“此电脑”或“计算机”,选择“属性”。 + - 点击“高级系统设置”,然后点击“环境变量”按钮。 +2. 在系统变量中添加sui的安装路径 + - 在“环境变量”窗口中,找到**系统变量**部分,选择 `Path` 变量,然后点击“编辑”。 + - 在“编辑环境变量”窗口中,点击“新建”,然后输入 `D:\Program Files\sui-cli`(你的 Sui CLI 文件夹路径)。 + - 确保路径输入正确,点击“确定”保存设置,直到所有窗口关闭。 +3. 在命令行中使用`sui --version`,以测试是否正确安装 + +#### Mac系统 + +1. 打开配置文件,用文本编辑器打开`nano ~/.bashrc` +2. 在打开的文本编辑器中输入`export PATH="path-to-sui"`(你的 Sui CLI 文件夹路径) +3. 保存并退出使用 + 1. 按下 `Ctrl+O` 保存文件,然后按下 `Enter` 确认文件名。 + 2. 按下 `Ctrl+X` 退出编辑器。 +4. 使配置生效,输入`source ~/.bashrc` +5. 关闭当前终端,打开一个新终端输入`sui --version`查看配置是否生效 +# 新建Hello World项目 + +在需要创立项目的目录下打开cmd命令行,输入`sui move new hello_move`,随后在vscode中打开该项目 + +在vscode的拓展中下载move syntax,以获得高亮的move代码 + +在`source`文件夹下的`hello_move.move`文件中复制以下的hello word代码 +```move +module hello_move::hello { + use std::ascii::{String, string}; + use sui::object::{Self,UID}; + use sui::transfer::transfer; + use sui::tx_context::{TxContext, sender}; + + public struct Hello has key{ + id:UID, + say: String + } + + fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id:object::new(ctx), + say: string(b"move"), + }; + transfer(hello_move, sender(ctx)); + } +} +``` + +这个代码定义了一个简单的模块 `hello_move::hello`,可以用来初始化一个“Hello”对象,并将其转移给当前交易的发送者 +* `use std::ascii::{String, string};`等行代码是导入必要的库和模块 +* 之后,程序定义了一个名为 `Hello` 的结构体,具有 `key` 特性。这是一个 `Move` 中的自定义对象,表示它可以用作链上资源 +* `init`是一个公开函数,用于初始化 `Hello` 结构体对象并将其转移给交易发送者 + + * `ctx: &mut TxContext`:`ctx` 是一个可变引用类型的交易上下文,它用于获取创建对象所需的上下文信息 + * **`TxContext` 是一个结构体**,它包含了有关交易的上下文信息 + * **`ctx` 是 `TxContext` 类型的一个变量**,表示当前交易的上下文 + * `&mut`表示一个**可变引用**(mutable reference),在sui中`&`表示一个 不可变引用 + + * `let hello_move= Hello{}`的部分创建了一个新的 `Hello` 对象 + * 字段 `id` 通过 `object::new(ctx)` 函数生成 + * `object::new` 表示调用 `object` 模块中的 `new` 函数。`new` 函数接收一个 `TxContext` 参数,根据交易上下文生成一个独特的 ID,确保不同的对象不会拥有相同的 ID。 + * `say` 字段则通过 `string(b"move")` 设置成 "move"。 + +* `transfer` 函数将 `hello_move` 对象转移给交易的发送者,`sender(ctx)` 返回的是交易的发送者地址。 + +## TxContext是什么 + +在 Sui 区块链中,`TxContext` 是一个重要的结构体,它包含了与当前交易相关的一些关键数据和操作,可以帮助智能合约安全地创建对象、获取交易发送者地址等。 + +`TxContext` 可以理解为是**交易的“环境记录”**,用来存储和追踪有关交易的一些重要信息。在一个智能合约(比如 Move 合约)运行时,`TxContext` 就像是一个助手,帮我们处理和保存交易过程中所需要的各种数据和上下文。 + +`TxContext`通常包括了: + +- **谁发起了这笔交易**: + 交易的发送者是谁(也就是账户地址)?通过 `TxContext`,合约可以获取到发起交易的用户地址,这样合约就可以知道该把资产或信息分配给谁。 + +- **生成独一无二的 ID**: + 在区块链上,每一个资产或对象都需要一个独特的“身份证”(ID),以保证它是唯一的。`TxContext` 提供了生成这些独特 ID 的工具,以确保即使很多用户同时创建同种类型的资产,它们之间也不会混淆。 + +- **交易的其他信息**: + `TxContext` 还会包含一些额外的交易信息,比如交易的时间、交易的标识等。这些信息虽然不是直接操作资产时必须的,但在一些复杂的合约逻辑中可能会有帮助,比如记录操作历史等。 + +# 部署合约到Sui测试网 + +1. 先通过`sui client faucet`获取测试的sui代币 +2. 使用命令`sui client publish`部署合约 + * 在第一个选项中默认空格则发布到测试网中 + * 第二个选项选择0,使用ed25519密钥对方案 + * 在发布之前可以使用`sui move build` 编译move合约 + +## 遇到的问题 + +可能会遇到严重的卡顿,通常是网络问题,这时候可以 + +1. 设置代理(以下是cmd命令,powshell则用`$env:HTTPS_PROXY = "http://127.0.0.1:7897`) +```cmd +set HTTPS_PROXY=http://127.0.0.1:7897 +set HTTP_PROXY=http://127.0.0.1:7897 +``` +2. 把`Move.toml`中依赖项的下载源换成gitee + +我这边使用了以上步骤后还是遇到同样的问题,在文件夹中打开一个新终端执行命令设置代理,并把VPN开至全局模式才成功部署 \ No newline at end of file diff --git a/mover/hwen227/readme.md b/mover/hwen227/readme.md index 5c1b450cf..8c9d95fcb 100644 --- a/mover/hwen227/readme.md +++ b/mover/hwen227/readme.md @@ -18,17 +18,17 @@ - [✓] package id 在 scan上的查看截图:![Scan截图](./images/task1_code.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [✓] My Coin package id : 0x025c077dd399fe7d9a18271df29ea6b4922782d64f6aee06e218c0af9586546b +- [✓] Faucet package id : 0xc4a538a0f477051636e06e2cea07a179f5a62e8125ed1eef92fa84993eb729ac +- [✓] 转账 `My Coin` hash: GYtZkdMo8RjJsMHhqm5Bv1V56EAPDjNpRwTZy9bSKKTG +- [✓] `Faucet Coin` address1 mint hash: BeCYs1GUxkWeqq1wqFeunCb8SegEM1EuqqGXiMyr4FcZ +- [✓] `Faucet Coin` address2 mint hash: HxVBpPgtD4DVPPu4VHuFw12CtAQhGXCNTcUAkR1A6x4P ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [✓] nft package id : 0x8e2e51ec7307cd7a525e46b158e932d971fbf4c46cd7e7dd0b0ed90e5413d223 +- [✓] nft object id : 0x81549006100165cfa96f4635d09b340b564dd899c632be38ca6e6e09e2c3e0ae +- [✓] 转账 nft hash: FVhVDEE4gb9VKK3Lu79SyEJnGD4sCN2X5SVPucUE7wdK +- [✓] scan上的NFT截图:![Scan截图](./images/myNFT.png) ## 04 Move Game - [] game package id : diff --git a/mover/itpika/code/task6/inedx.js b/mover/itpika/code/task6/inedx.js index cf63c7a81..2054c5fd1 100644 --- a/mover/itpika/code/task6/inedx.js +++ b/mover/itpika/code/task6/inedx.js @@ -6,7 +6,7 @@ const { pool, USDC } = require('navi-sdk/dist/address'); (async() => { let cli = new navi.NAVISDKClient({ - mnemonic: "oxygen live segment arrange divide snack nuclear stand cherry family travel doll", + mnemonic: "oxygen office_hour segment arrange divide snack nuclear stand cherry family travel doll", wordLength: 12, networkType: 'mainnet', numberOfAccounts: 2 }); let acc = cli.accounts[0]; diff --git a/mover/janrone/co-learn-2411/images/nft_move_img_1.jpg b/mover/janrone/co-learn-2411/images/nft_move_img_1.jpg new file mode 100644 index 000000000..90e3d56b8 Binary files /dev/null and b/mover/janrone/co-learn-2411/images/nft_move_img_1.jpg differ diff --git a/mover/janrone/code/move_game/Move.lock b/mover/janrone/code/move_game/Move.lock new file mode 100644 index 000000000..f07e5ae00 --- /dev/null +++ b/mover/janrone/code/move_game/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "8DDBC927B5F7856D296FDABA5B37C37289D26E381F8A6BD06625BB0F9FFA9A76" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucet_j_coin", name = "faucet_j_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucet_j_coin" +source = { local = "../move_coin/faucet_j_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xef7757243da29bc7efe22a38a27200c9f826cfd045739ee3c79e13b6b93ae78a" +latest-published-id = "0xef7757243da29bc7efe22a38a27200c9f826cfd045739ee3c79e13b6b93ae78a" +published-version = "1" diff --git a/mover/janrone/code/move_game/Move.toml b/mover/janrone/code/move_game/Move.toml new file mode 100644 index 000000000..4c926aba8 --- /dev/null +++ b/mover/janrone/code/move_game/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "move_game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +faucet_j_coin = { local = "../move_coin/faucet_j_coin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/janrone/code/move_game/sources/move_game.move b/mover/janrone/code/move_game/sources/move_game.move new file mode 100644 index 000000000..407ce1599 --- /dev/null +++ b/mover/janrone/code/move_game/sources/move_game.move @@ -0,0 +1,100 @@ +/* +/// Module: move_game +module move_game::move_game; +*/ + +module move_game::game { + use sui::coin::{Self, Coin}; + use faucet_j_coin::faucet_j_coin::FAUCET_J_COIN; + use sui::balance::{Self, Balance}; + use sui::random::{Self, Random}; + + const EUserInsufficientBalance: u64 = 1000; + const EGameInsufficientBalance: u64 = 1001; + + public struct Game has key { + id: UID, + balance: Balance, + } + + public struct Admin has key { + id: UID, + } + + fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + balance: balance::zero(), + }; + transfer::share_object(game); + + let admin = Admin {id: object::new(ctx)}; + transfer::transfer(admin, ctx.sender()); + } + + public entry fun Deposit( + game: &mut Game, + coin: &mut Coin, + amount: u64, + ) { + assert!( + coin::value(coin) >= amount, + EUserInsufficientBalance + ); + let split_balance = balance::split(coin::balance_mut(coin), amount); + balance::join(&mut game.balance, split_balance); + } + + // 只有管理员能够提现 + public entry fun Withdraw( + game: &mut Game, + _: &Admin, + amount: u64, + ctx: &mut TxContext + ) { + assert!( + game.balance.value() >= amount, + EGameInsufficientBalance + ); + let cash = coin::take(&mut game.balance, amount, ctx); + transfer::public_transfer(cash, ctx.sender()); + } + + // 如果用户猜对了,获得双倍奖励。如果用户猜错了,损失投入的代币 + + public entry fun Play( + game: &mut Game, + rnd: &Random, + guess: bool, + coin: &mut Coin, + amount: u64, + ctx: &mut TxContext + ) { + // 检查合约余额是否充足,确保用户获胜时有足够金额奖励 + assert!( + game.balance.value() >= amount, + EGameInsufficientBalance + ); + // 检查用户的余额是否充足 + assert!( + coin::value(coin) >= amount, + EUserInsufficientBalance + ); + + // 生成随机数 + let mut gen = random::new_generator(rnd, ctx); + let flag = random::generate_bool(&mut gen); + + // 如果获胜 + if (flag == guess) { + // 投入的代币不变,另外奖励等额的代币 + let reward = coin::take(&mut game.balance, amount, ctx); + coin::join(coin, reward); + } + // 猜错了就损失投入的代币 + else { + Self::Deposit(game, coin, amount) + } + } +} + diff --git a/mover/janrone/code/move_game/tests/move_game_tests.move b/mover/janrone/code/move_game/tests/move_game_tests.move new file mode 100644 index 000000000..c5ca6e5e8 --- /dev/null +++ b/mover/janrone/code/move_game/tests/move_game_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_game::move_game_tests; +// uncomment this line to import the module +// use move_game::move_game; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_game() { + // pass +} + +#[test, expected_failure(abort_code = ::move_game::move_game_tests::ENotImplemented)] +fun test_move_game_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/janrone/code/move_nft/Move.lock b/mover/janrone/code/move_nft/Move.lock new file mode 100644 index 000000000..5657e27fc --- /dev/null +++ b/mover/janrone/code/move_nft/Move.lock @@ -0,0 +1,122 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "D397C0F71A254E9E3D60D19C8CEE8EF7FAD140A5BF38964BD74A9CDF804A1D47" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "NftProtocol", name = "NftProtocol" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Allowlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/allowlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Authlist" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/authlist" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Kiosk" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/kiosk" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "NftProtocol" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/nft_protocol" } + +dependencies = [ + { id = "Allowlist", name = "Allowlist" }, + { id = "Authlist", name = "Authlist" }, + { id = "Kiosk", name = "Kiosk" }, + { id = "Originmate", name = "Originmate" }, + { id = "Permissions", name = "Permissions" }, + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Request", name = "Request" }, + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Originmate" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/originmate" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Permissions" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/permissions" } + +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "Utils", name = "Utils" }, +] + +[[move.package]] +id = "Pseudorandom" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/pseudorandom" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Request" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/request" } + +dependencies = [ + { id = "Permissions", name = "Permissions" }, + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "mainnet-v1.19.1", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "Utils" +source = { git = "https://github.com/Origin-Byte/nft-protocol.git", rev = "main", subdir = "contracts/utils" } + +dependencies = [ + { id = "Pseudorandom", name = "Pseudorandom" }, + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xfa39712553ea4b508f755819b2b4946f9f93c3dfc76d4348305c9b0804f6b08d" +latest-published-id = "0xfa39712553ea4b508f755819b2b4946f9f93c3dfc76d4348305c9b0804f6b08d" +published-version = "1" diff --git a/mover/janrone/code/move_nft/Move.toml b/mover/janrone/code/move_nft/Move.toml new file mode 100644 index 000000000..9fcf573f3 --- /dev/null +++ b/mover/janrone/code/move_nft/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "move_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "mainnet-v1.19.1" } +NftProtocol = { git = "https://github.com/Origin-Byte/nft-protocol.git", subdir = "contracts/nft_protocol", rev = "main" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/janrone/code/move_nft/sources/move_nft.move b/mover/janrone/code/move_nft/sources/move_nft.move new file mode 100644 index 000000000..a4b2f9e0f --- /dev/null +++ b/mover/janrone/code/move_nft/sources/move_nft.move @@ -0,0 +1,77 @@ +/* +/// Module: move_nft +module move_nft::move_nft; +*/ + +module move_nft::move_nft { + use nft_protocol::attributes::{Self, Attributes}; + use nft_protocol::collection; + use std::ascii::String; + use std::string; + use sui::url::{Self, Url}; + use nft_protocol::display_info; + use nft_protocol::mint_cap::{Self, MintCap}; + use nft_protocol::mint_event; + use ob_permissions::witness; + + public struct MOVE_NFT has drop {} + + /// 可用于创建后授权其他操作。至关重要的是,这个结构体不能随意提供给任何合约,因为它充当了授权令牌。 + public struct Witness has drop {} + + public struct NFT has key, store { + id: UID, + name: String, + description: String, + url: Url, + attributes: Attributes, + } + + fun init(otw: MOVE_NFT, ctx: &mut TxContext) { + let (mut collection, mint_cap) = collection::create_with_mint_cap( + &otw, option::none(), ctx + ); + let delegated_witness = witness::from_witness(Witness {}); + + collection::add_domain( + delegated_witness, + &mut collection, + display_info::new( + string::utf8(b"J_NFT"), + string::utf8(b"A NFT collection of NFTs on Sui by Janrone"), + ), + ); + transfer::public_share_object(collection); + transfer::public_share_object(mint_cap); + } + + public entry fun mint_nft( + mint_cap: &MintCap, + name: String, + description: String, + url: String, + ctx: &mut TxContext, + ) { + let nft = NFT { + id: object::new(ctx), + name, + description, + url: url::new_unsafe(url), + attributes: attributes::from_vec(vector[], vector[]) + }; + + mint_event::emit_mint( + witness::from_witness(Witness {}), + mint_cap::collection_id(mint_cap), + &nft, + ); + transfer::public_transfer(nft, tx_context::sender(ctx)); + } + + public entry fun transfer_nft(nft: NFT, to: address) { + transfer::public_transfer(nft, to); + } +} + + + diff --git a/mover/janrone/code/move_nft/tests/move_nft_tests.move b/mover/janrone/code/move_nft/tests/move_nft_tests.move new file mode 100644 index 000000000..d35681af0 --- /dev/null +++ b/mover/janrone/code/move_nft/tests/move_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_nft::move_nft_tests; +// uncomment this line to import the module +// use move_nft::move_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::move_nft::move_nft_tests::ENotImplemented)] +fun test_move_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/janrone/code/move_swap/Move.lock b/mover/janrone/code/move_swap/Move.lock new file mode 100644 index 000000000..ceceb6009 --- /dev/null +++ b/mover/janrone/code/move_swap/Move.lock @@ -0,0 +1,52 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "65694E33221820194A825115D087FB92A603CDAC0EF7ADB70A900252AC49124B" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucet_j_coin", name = "faucet_j_coin" }, + { id = "j_coin", name = "j_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucet_j_coin" +source = { local = "../move_coin/faucet_j_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "j_coin" +source = { local = "../move_coin/j_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xac069d4c34a5af5f663e8a6e3fd8dfcf442f841e088e1f0ced3da5f9cb0a07ba" +latest-published-id = "0xac069d4c34a5af5f663e8a6e3fd8dfcf442f841e088e1f0ced3da5f9cb0a07ba" +published-version = "1" diff --git a/mover/janrone/code/move_swap/Move.toml b/mover/janrone/code/move_swap/Move.toml new file mode 100644 index 000000000..17999fe18 --- /dev/null +++ b/mover/janrone/code/move_swap/Move.toml @@ -0,0 +1,39 @@ +[package] +name = "move_swap" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +j_coin = { local = "../move_coin/j_coin" } +faucet_j_coin = { local = "../move_coin/faucet_j_coin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_swap = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/janrone/code/move_swap/sources/move_swap.move b/mover/janrone/code/move_swap/sources/move_swap.move new file mode 100644 index 000000000..7347ae492 --- /dev/null +++ b/mover/janrone/code/move_swap/sources/move_swap.move @@ -0,0 +1,154 @@ +/* +/// Module: move_swap +module move_swap::move_swap; +*/ + +module move_swap::move_swap { + + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + use sui::coin::{Self, Coin}; + use sui::balance::{Self, Balance}; + use sui::event; + use std::string::{Self, String}; + + // 导入自定义的代币模块 + use j_coin::j_coin::J_COIN; + use faucet_j_coin::faucet_j_coin::FAUCET_J_COIN; + + const E_INSUFFICIENT_LIQUIDITY: u64 = 0; + const E_ZERO_AMOUNT: u64 = 1; + + // 流动性池结构体 + public struct Pool has key { + id: UID, // 流动性池的唯一标识符 + coin_a: Balance, // 代币A的余额 + coin_b: Balance, // 代币B的余额 + } + + // 添加流动性事件结构体 + public struct LiquidityEvent has copy, drop { + provider: address, // 提供流动性的地址 + coin_a_amount: u64, // 代币A的数量 + coin_b_amount: u64, // 代币B的数量 + coin_a_type: String, // 代币A的类型 + coin_b_type: String, // 代币B的类型 + timestamp: u64 // 时间戳 + } + + // 交换事件结构体 + public struct SwapEvent has copy, drop { + sender: address, // 发起交换的地址 + coin_in_amount: u64, // 输入代币的数量 + coin_out_amount: u64, // 输出代币的数量 + coin_in_type: String, // 输入代币的类型 + coin_out_type: String, // 输出代币的类型 + timestamp: u64 // 时间戳 + } + + // 初始化函数,创建一个新的流动性池 + fun init(ctx: &mut TxContext) { + let pool = Pool { + id: object::new(ctx), // 生成新的唯一标识符 + coin_a: balance::zero(), // 初始代币A的余额为零 + coin_b: balance::zero(), // 初始代币B的余额为零 + }; + transfer::share_object(pool); // 将流动性池共享 + } + + // 添加流动性函数 + public entry fun add_liquidity( + pool: &mut Pool, + j_coin: Coin, + faucet_j_coin: Coin, + ctx: &mut TxContext + ) { + let a_amount = coin::value(&j_coin); // 获取代币A的数量 + let b_amount = coin::value(&faucet_j_coin); // 获取代币B的数量 + + assert!(a_amount > 0 && b_amount > 0, E_ZERO_AMOUNT); // 确保提供的代币数量大于零 + + balance::join(&mut pool.coin_a, coin::into_balance(j_coin)); // 将代币A加入流动性池 + balance::join(&mut pool.coin_b, coin::into_balance(faucet_j_coin)); // 将代币B加入流动性池 + + // 记录添加流动性的事件 + event::emit(LiquidityEvent { + provider: tx_context::sender(ctx), // 提供流动性的地址 + coin_a_amount: a_amount, // 代币A的数量 + coin_b_amount: b_amount, // 代币B的数量 + coin_a_type: string::utf8(b"J_COIN"), // 代币A的类型 + coin_b_type: string::utf8(b"FAUCET_J_COIN"), // 代币B的类型 + timestamp: tx_context::epoch(ctx), // 当前时间戳 + }); + } + + // 代币A换代币B的函数 + public entry fun swap_a_to_b( + pool: &mut Pool, + j_coin_in: Coin, + ctx: &mut TxContext + ) { + let a_amount = coin::value(&j_coin_in); // 获取输入的代币A的数量 + assert!(a_amount > 0, E_ZERO_AMOUNT); // 确保输入的代币数量大于零 + + let b_reserve = balance::value(&pool.coin_b); // 获取代币B的储备量 + assert!(b_reserve > 0, E_INSUFFICIENT_LIQUIDITY); // 确保代币B的储备量大于零 + + let a_reserve = balance::value(&pool.coin_a); // 获取代币A的储备量 + let b_out = (a_amount * b_reserve) / (a_reserve + a_amount); // 计算可以换取的代币B的数量 + + assert!(b_out > 0 && b_out <= b_reserve, E_INSUFFICIENT_LIQUIDITY); // 确保可以换取的代币B数量有效 + + // 更新流动性池的余额 + balance::join(&mut pool.coin_a, coin::into_balance(j_coin_in)); // 将输入的代币A加入流动性池 + let coin_b_out = coin::take(&mut pool.coin_b, b_out, ctx); // 从流动性池中取出代币B + transfer::public_transfer(coin_b_out, tx_context::sender(ctx)); // 将代币B转给发起者 + + // 记录交换事件 + event::emit(SwapEvent { + sender: tx_context::sender(ctx), // 发起交换的地址 + coin_in_amount: a_amount, // 输入的代币A的数量 + coin_out_amount: b_out, // 输出的代币B的数量 + coin_in_type: string::utf8(b"J_COIN"), // 输入的代币A的类型 + coin_out_type: string::utf8(b"FAUCET_J_COIN"), // 输出的代币B的类型 + timestamp: tx_context::epoch(ctx), // 当前时间戳 + }); + } + + + + // 代币B换代币A的函数 + public entry fun swap_b_to_a( + pool: &mut Pool, + faucet_j_coin_in: Coin, + ctx: &mut TxContext + ) { + let b_amount = coin::value(&faucet_j_coin_in); // 获取输入的代币b的数量 + assert!(b_amount > 0, E_ZERO_AMOUNT); // 确保输入的代币数量大于零 + + let a_reserve = balance::value(&pool.coin_a); // 获取代币a的储备量 + assert!(a_reserve > 0, E_INSUFFICIENT_LIQUIDITY); // 确保代币B的储备量大于零 + + let b_reserve = balance::value(&pool.coin_b); // 获取代币b的储备量 + let a_out = (b_amount * a_reserve) / (b_reserve + b_amount); // 计算可以换取的代币B的数量 + + assert!(a_out > 0 && a_out <= a_reserve, E_INSUFFICIENT_LIQUIDITY); // 确保可以换取的代币B数量有效 + + // 更新流动性池的余额 + balance::join(&mut pool.coin_b, coin::into_balance(faucet_j_coin_in)); // 将输入的代币A加入流动性池 + let coin_b_out = coin::take(&mut pool.coin_b, a_out, ctx); // 从流动性池中取出代币a + transfer::public_transfer(coin_b_out, tx_context::sender(ctx)); // 将代币B转给发起者 + + // 记录交换事件 + event::emit(SwapEvent { + sender: tx_context::sender(ctx), // 发起交换的地址 + coin_in_amount: b_amount, // 输入的代币b的数量 + coin_out_amount: a_out, // 输出的代币a的数量 + coin_in_type: string::utf8(b"FAUCET_J_COIN"), // 输入的代币b的类型 + coin_out_type: string::utf8(b"J_COIN"), // 输出的代币a的类型 + timestamp: tx_context::epoch(ctx), // 当前时间戳 + }); + } + +} diff --git a/mover/janrone/code/move_swap/tests/move_swap_tests.move b/mover/janrone/code/move_swap/tests/move_swap_tests.move new file mode 100644 index 000000000..cfd3c3deb --- /dev/null +++ b/mover/janrone/code/move_swap/tests/move_swap_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_swap::move_swap_tests; +// uncomment this line to import the module +// use move_swap::move_swap; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_swap() { + // pass +} + +#[test, expected_failure(abort_code = ::move_swap::move_swap_tests::ENotImplemented)] +fun test_move_swap_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/janrone/code/my-first-sui-dapp/README.md b/mover/janrone/code/my-first-sui-dapp/README.md new file mode 100644 index 000000000..d0889dcae --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/README.md @@ -0,0 +1,35 @@ +# Sui dApp Starter Template + +This dApp was created using `@mysten/create-dapp` that sets up a basic React +Client dApp using the following tools: + +- [React](https://react.dev/) as the UI framework +- [TypeScript](https://www.typescriptlang.org/) for type checking +- [Vite](https://vitejs.dev/) for build tooling +- [Radix UI](https://www.radix-ui.com/) for pre-built UI components +- [ESLint](https://eslint.org/) +- [`@mysten/dapp-kit`](https://sdk.mystenlabs.com/dapp-kit) for connecting to + wallets and loading data +- [pnpm](https://pnpm.io/) for package management + +## Starting your dApp + +To install dependencies you can run + +```bash +pnpm install +``` + +To start your dApp in development mode run + +```bash +pnpm dev +``` + +## Building + +To build your app for deployment you can run + +```bash +pnpm build +``` diff --git a/mover/janrone/code/my-first-sui-dapp/dist/assets/index-C5TUXiHQ.js b/mover/janrone/code/my-first-sui-dapp/dist/assets/index-C5TUXiHQ.js new file mode 100644 index 000000000..f80f04ab8 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/dist/assets/index-C5TUXiHQ.js @@ -0,0 +1,215 @@ +var _D=Object.defineProperty;var CE=t=>{throw TypeError(t)};var xD=(t,e,r)=>e in t?_D(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Fe=(t,e,r)=>xD(t,typeof e!="symbol"?e+"":e,r),Yg=(t,e,r)=>e.has(t)||CE("Cannot "+r);var C=(t,e,r)=>(Yg(t,e,"read from private field"),r?r.call(t):e.get(t)),Te=(t,e,r)=>e.has(t)?CE("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),le=(t,e,r,n)=>(Yg(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),be=(t,e,r)=>(Yg(t,e,"access private method"),r);var ou=(t,e,r,n)=>({set _(i){le(t,e,i,r)},get _(){return C(t,e,n)}});function SD(t,e){for(var r=0;rn[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=r(i);fetch(i.href,s)}})();var ft=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Sf(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Ny(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var r=function n(){return this instanceof n?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};r.prototype=e.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}),r}var NT={exports:{}},Ry={},RT={exports:{}},Et={};/** + * @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 sp=Symbol.for("react.element"),ED=Symbol.for("react.portal"),OD=Symbol.for("react.fragment"),CD=Symbol.for("react.strict_mode"),TD=Symbol.for("react.profiler"),PD=Symbol.for("react.provider"),ID=Symbol.for("react.context"),kD=Symbol.for("react.forward_ref"),AD=Symbol.for("react.suspense"),jD=Symbol.for("react.memo"),MD=Symbol.for("react.lazy"),TE=Symbol.iterator;function $D(t){return t===null||typeof t!="object"?null:(t=TE&&t[TE]||t["@@iterator"],typeof t=="function"?t:null)}var DT={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},BT=Object.assign,UT={};function Ef(t,e,r){this.props=t,this.context=e,this.refs=UT,this.updater=r||DT}Ef.prototype.isReactComponent={};Ef.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=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,t,e,"setState")};Ef.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function FT(){}FT.prototype=Ef.prototype;function t_(t,e,r){this.props=t,this.context=e,this.refs=UT,this.updater=r||DT}var r_=t_.prototype=new FT;r_.constructor=t_;BT(r_,Ef.prototype);r_.isPureReactComponent=!0;var PE=Array.isArray,LT=Object.prototype.hasOwnProperty,n_={current:null},zT={key:!0,ref:!0,__self:!0,__source:!0};function VT(t,e,r){var n,i={},s=null,o=null;if(e!=null)for(n in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)LT.call(e,n)&&!zT.hasOwnProperty(n)&&(i[n]=e[n]);var a=arguments.length-2;if(a===1)i.children=r;else if(1>>1,v=N[P];if(0>>1;Pi(de,B))Eei(Xe,de)?(N[P]=Xe,N[Ee]=B,P=Ee):(N[P]=de,N[ue]=B,P=ue);else if(Eei(Xe,B))N[P]=Xe,N[Ee]=B,P=Ee;else break e}}return j}function i(N,j){var B=N.sortIndex-j.sortIndex;return B!==0?B:N.id-j.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();t.unstable_now=function(){return o.now()-a}}var u=[],c=[],l=1,f=null,d=3,h=!1,m=!1,g=!1,x=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,S=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function O(N){for(var j=r(c);j!==null;){if(j.callback===null)n(c);else if(j.startTime<=N)n(c),j.sortIndex=j.expirationTime,e(u,j);else break;j=r(c)}}function D(N){if(g=!1,O(N),!m)if(r(u)!==null)m=!0,$(z);else{var j=r(c);j!==null&&L(D,j.startTime-N)}}function z(N,j){m=!1,g&&(g=!1,_(J),J=-1),h=!0;var B=d;try{for(O(j),f=r(u);f!==null&&(!(f.expirationTime>j)||N&&!Oe());){var P=f.callback;if(typeof P=="function"){f.callback=null,d=f.priorityLevel;var v=P(f.expirationTime<=j);j=t.unstable_now(),typeof v=="function"?f.callback=v:f===r(u)&&n(u),O(j)}else n(u);f=r(u)}if(f!==null)var U=!0;else{var ue=r(c);ue!==null&&L(D,ue.startTime-j),U=!1}return U}finally{f=null,d=B,h=!1}}var G=!1,K=null,J=-1,fe=5,pe=-1;function Oe(){return!(t.unstable_now()-peN||125P?(N.sortIndex=B,e(c,N),r(u)===null&&N===r(c)&&(g?(_(J),J=-1):g=!0,L(D,B-P))):(N.sortIndex=v,e(u,N),m||h||(m=!0,$(z))),N},t.unstable_shouldYield=Oe,t.unstable_wrapCallback=function(N){var j=d;return function(){var B=d;d=j;try{return N.apply(this,arguments)}finally{d=B}}}})(KT);qT.exports=KT;var GD=qT.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 qD=I,Ci=GD;function Se(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),jb=Object.prototype.hasOwnProperty,KD=/^[: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]*$/,kE={},AE={};function XD(t){return jb.call(AE,t)?!0:jb.call(kE,t)?!1:KD.test(t)?AE[t]=!0:(kE[t]=!0,!1)}function JD(t,e,r,n){if(r!==null&&r.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function YD(t,e,r,n){if(e===null||typeof e>"u"||JD(t,e,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Yn(t,e,r,n,i,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=t,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var Sn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Sn[t]=new Yn(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Sn[e]=new Yn(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Sn[t]=new Yn(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Sn[t]=new Yn(t,2,!1,t,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(t){Sn[t]=new Yn(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Sn[t]=new Yn(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Sn[t]=new Yn(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Sn[t]=new Yn(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Sn[t]=new Yn(t,5,!1,t.toLowerCase(),null,!1,!1)});var s_=/[\-:]([a-z])/g;function o_(t){return t[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(t){var e=t.replace(s_,o_);Sn[e]=new Yn(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(s_,o_);Sn[e]=new Yn(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(s_,o_);Sn[e]=new Yn(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Sn[t]=new Yn(t,1,!1,t.toLowerCase(),null,!1,!1)});Sn.xlinkHref=new Yn("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Sn[t]=new Yn(t,1,!1,t.toLowerCase(),null,!0,!0)});function a_(t,e,r,n){var i=Sn.hasOwnProperty(e)?Sn[e]:null;(i!==null?i.type!==0:n||!(2a||i[o]!==s[a]){var u=` +`+i[o].replace(" at new "," at ");return t.displayName&&u.includes("")&&(u=u.replace("",t.displayName)),u}while(1<=o&&0<=a);break}}}finally{ev=!1,Error.prepareStackTrace=r}return(t=t?t.displayName||t.name:"")?gd(t):""}function QD(t){switch(t.tag){case 5:return gd(t.type);case 16:return gd("Lazy");case 13:return gd("Suspense");case 19:return gd("SuspenseList");case 0:case 2:case 15:return t=tv(t.type,!1),t;case 11:return t=tv(t.type.render,!1),t;case 1:return t=tv(t.type,!0),t;default:return""}}function Rb(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case sl:return"Fragment";case il:return"Portal";case Mb:return"Profiler";case u_:return"StrictMode";case $b:return"Suspense";case Nb:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case YT:return(t.displayName||"Context")+".Consumer";case JT:return(t._context.displayName||"Context")+".Provider";case c_:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case l_:return e=t.displayName||null,e!==null?e:Rb(t.type)||"Memo";case ga:e=t._payload,t=t._init;try{return Rb(t(e))}catch{}}return null}function ZD(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Rb(e);case 8:return e===u_?"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 e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Ha(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function ZT(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function eB(t){var e=ZT(t)?"checked":"value",r=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),n=""+t[e];if(!t.hasOwnProperty(e)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,s=r.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(o){n=""+o,s.call(this,o)}}),Object.defineProperty(t,e,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(o){n=""+o},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Mp(t){t._valueTracker||(t._valueTracker=eB(t))}function eP(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var r=e.getValue(),n="";return t&&(n=ZT(t)?t.checked?"true":"false":t.value),t=n,t!==r?(e.setValue(t),!0):!1}function Sm(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function Db(t,e){var r=e.checked;return Ir({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??t._wrapperState.initialChecked})}function ME(t,e){var r=e.defaultValue==null?"":e.defaultValue,n=e.checked!=null?e.checked:e.defaultChecked;r=Ha(e.value!=null?e.value:r),t._wrapperState={initialChecked:n,initialValue:r,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function tP(t,e){e=e.checked,e!=null&&a_(t,"checked",e,!1)}function Bb(t,e){tP(t,e);var r=Ha(e.value),n=e.type;if(r!=null)n==="number"?(r===0&&t.value===""||t.value!=r)&&(t.value=""+r):t.value!==""+r&&(t.value=""+r);else if(n==="submit"||n==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?Ub(t,e.type,r):e.hasOwnProperty("defaultValue")&&Ub(t,e.type,Ha(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function $E(t,e,r){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var n=e.type;if(!(n!=="submit"&&n!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,r||e===t.value||(t.value=e),t.defaultValue=e}r=t.name,r!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,r!==""&&(t.name=r)}function Ub(t,e,r){(e!=="number"||Sm(t.ownerDocument)!==t)&&(r==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+r&&(t.defaultValue=""+r))}var vd=Array.isArray;function Sl(t,e,r,n){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=$p.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function dh(t,e){if(e){var r=t.firstChild;if(r&&r===t.lastChild&&r.nodeType===3){r.nodeValue=e;return}}t.textContent=e}var Dd={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},tB=["Webkit","ms","Moz","O"];Object.keys(Dd).forEach(function(t){tB.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Dd[e]=Dd[t]})});function sP(t,e,r){return e==null||typeof e=="boolean"||e===""?"":r||typeof e!="number"||e===0||Dd.hasOwnProperty(t)&&Dd[t]?(""+e).trim():e+"px"}function oP(t,e){t=t.style;for(var r in e)if(e.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=sP(r,e[r],n);r==="float"&&(r="cssFloat"),n?t.setProperty(r,i):t[r]=i}}var rB=Ir({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 zb(t,e){if(e){if(rB[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(Se(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(Se(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(Se(61))}if(e.style!=null&&typeof e.style!="object")throw Error(Se(62))}}function Vb(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){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 Wb=null;function f_(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Hb=null,El=null,Ol=null;function DE(t){if(t=up(t)){if(typeof Hb!="function")throw Error(Se(280));var e=t.stateNode;e&&(e=Ly(e),Hb(t.stateNode,t.type,e))}}function aP(t){El?Ol?Ol.push(t):Ol=[t]:El=t}function uP(){if(El){var t=El,e=Ol;if(Ol=El=null,DE(t),e)for(t=0;t>>=0,t===0?32:31-(hB(t)/pB|0)|0}var Np=64,Rp=4194304;function bd(t){switch(t&-t){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 t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Tm(t,e){var r=t.pendingLanes;if(r===0)return 0;var n=0,i=t.suspendedLanes,s=t.pingedLanes,o=r&268435455;if(o!==0){var a=o&~i;a!==0?n=bd(a):(s&=o,s!==0&&(n=bd(s)))}else o=r&~i,o!==0?n=bd(o):s!==0&&(n=bd(s));if(n===0)return 0;if(e!==0&&e!==n&&!(e&i)&&(i=n&-n,s=e&-e,i>=s||i===16&&(s&4194240)!==0))return e;if(n&4&&(n|=r&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=n;0r;r++)e.push(t);return e}function op(t,e,r){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-Es(e),t[e]=r}function vB(t,e){var r=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var n=t.eventTimes;for(t=t.expirationTimes;0=Ud),GE=" ",qE=!1;function PP(t,e){switch(t){case"keyup":return GB.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function IP(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ol=!1;function KB(t,e){switch(t){case"compositionend":return IP(e);case"keypress":return e.which!==32?null:(qE=!0,GE);case"textInput":return t=e.data,t===GE&&qE?null:t;default:return null}}function XB(t,e){if(ol)return t==="compositionend"||!b_&&PP(t,e)?(t=CP(),w0=y_=ja=null,ol=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:r,offset:e-t};t=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=YE(r)}}function MP(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?MP(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function $P(){for(var t=window,e=Sm();e instanceof t.HTMLIFrameElement;){try{var r=typeof e.contentWindow.location.href=="string"}catch{r=!1}if(r)t=e.contentWindow;else break;e=Sm(t.document)}return e}function w_(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function i7(t){var e=$P(),r=t.focusedElem,n=t.selectionRange;if(e!==r&&r&&r.ownerDocument&&MP(r.ownerDocument.documentElement,r)){if(n!==null&&w_(r)){if(e=n.start,t=n.end,t===void 0&&(t=e),"selectionStart"in r)r.selectionStart=e,r.selectionEnd=Math.min(t,r.value.length);else if(t=(e=r.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=r.textContent.length,s=Math.min(n.start,i);n=n.end===void 0?s:Math.min(n.end,i),!t.extend&&s>n&&(i=n,n=s,s=i),i=QE(r,s);var o=QE(r,n);i&&o&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==o.node||t.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),s>n?(t.addRange(e),t.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),t.addRange(e)))}}for(e=[],t=r;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,al=null,Yb=null,Ld=null,Qb=!1;function ZE(t,e,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;Qb||al==null||al!==Sm(n)||(n=al,"selectionStart"in n&&w_(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Ld&&vh(Ld,n)||(Ld=n,n=km(Yb,"onSelect"),0ll||(t.current=iw[ll],iw[ll]=null,ll--)}function cr(t,e){ll++,iw[ll]=t.current,t.current=e}var Ga={},Bn=nu(Ga),oi=nu(!1),oc=Ga;function uf(t,e){var r=t.type.contextTypes;if(!r)return Ga;var n=t.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===e)return n.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in r)i[s]=e[s];return n&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function ai(t){return t=t.childContextTypes,t!=null}function jm(){pr(oi),pr(Bn)}function oO(t,e,r){if(Bn.current!==Ga)throw Error(Se(168));cr(Bn,e),cr(oi,r)}function VP(t,e,r){var n=t.stateNode;if(e=e.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var i in n)if(!(i in e))throw Error(Se(108,ZD(t)||"Unknown",i));return Ir({},r,n)}function Mm(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Ga,oc=Bn.current,cr(Bn,t),cr(oi,oi.current),!0}function aO(t,e,r){var n=t.stateNode;if(!n)throw Error(Se(169));r?(t=VP(t,e,oc),n.__reactInternalMemoizedMergedChildContext=t,pr(oi),pr(Bn),cr(Bn,t)):pr(oi),cr(oi,r)}var Eo=null,zy=!1,mv=!1;function WP(t){Eo===null?Eo=[t]:Eo.push(t)}function y7(t){zy=!0,WP(t)}function iu(){if(!mv&&Eo!==null){mv=!0;var t=0,e=Yt;try{var r=Eo;for(Yt=1;t>=o,i-=o,jo=1<<32-Es(e)+i|r<J?(fe=K,K=null):fe=K.sibling;var pe=d(_,K,O[J],D);if(pe===null){K===null&&(K=fe);break}t&&K&&pe.alternate===null&&e(_,K),S=s(pe,S,J),G===null?z=pe:G.sibling=pe,G=pe,K=fe}if(J===O.length)return r(_,K),_r&&bu(_,J),z;if(K===null){for(;JJ?(fe=K,K=null):fe=K.sibling;var Oe=d(_,K,pe.value,D);if(Oe===null){K===null&&(K=fe);break}t&&K&&Oe.alternate===null&&e(_,K),S=s(Oe,S,J),G===null?z=Oe:G.sibling=Oe,G=Oe,K=fe}if(pe.done)return r(_,K),_r&&bu(_,J),z;if(K===null){for(;!pe.done;J++,pe=O.next())pe=f(_,pe.value,D),pe!==null&&(S=s(pe,S,J),G===null?z=pe:G.sibling=pe,G=pe);return _r&&bu(_,J),z}for(K=n(_,K);!pe.done;J++,pe=O.next())pe=h(K,_,J,pe.value,D),pe!==null&&(t&&pe.alternate!==null&&K.delete(pe.key===null?J:pe.key),S=s(pe,S,J),G===null?z=pe:G.sibling=pe,G=pe);return t&&K.forEach(function(Ue){return e(_,Ue)}),_r&&bu(_,J),z}function x(_,S,O,D){if(typeof O=="object"&&O!==null&&O.type===sl&&O.key===null&&(O=O.props.children),typeof O=="object"&&O!==null){switch(O.$$typeof){case jp:e:{for(var z=O.key,G=S;G!==null;){if(G.key===z){if(z=O.type,z===sl){if(G.tag===7){r(_,G.sibling),S=i(G,O.props.children),S.return=_,_=S;break e}}else if(G.elementType===z||typeof z=="object"&&z!==null&&z.$$typeof===ga&&lO(z)===G.type){r(_,G.sibling),S=i(G,O.props),S.ref=Yf(_,G,O),S.return=_,_=S;break e}r(_,G);break}else e(_,G);G=G.sibling}O.type===sl?(S=tc(O.props.children,_.mode,D,O.key),S.return=_,_=S):(D=P0(O.type,O.key,O.props,null,_.mode,D),D.ref=Yf(_,S,O),D.return=_,_=D)}return o(_);case il:e:{for(G=O.key;S!==null;){if(S.key===G)if(S.tag===4&&S.stateNode.containerInfo===O.containerInfo&&S.stateNode.implementation===O.implementation){r(_,S.sibling),S=i(S,O.children||[]),S.return=_,_=S;break e}else{r(_,S);break}else e(_,S);S=S.sibling}S=Sv(O,_.mode,D),S.return=_,_=S}return o(_);case ga:return G=O._init,x(_,S,G(O._payload),D)}if(vd(O))return m(_,S,O,D);if(Gf(O))return g(_,S,O,D);Vp(_,O)}return typeof O=="string"&&O!==""||typeof O=="number"?(O=""+O,S!==null&&S.tag===6?(r(_,S.sibling),S=i(S,O),S.return=_,_=S):(r(_,S),S=xv(O,_.mode,D),S.return=_,_=S),o(_)):r(_,S)}return x}var lf=KP(!0),XP=KP(!1),Rm=nu(null),Dm=null,hl=null,E_=null;function O_(){E_=hl=Dm=null}function C_(t){var e=Rm.current;pr(Rm),t._currentValue=e}function aw(t,e,r){for(;t!==null;){var n=t.alternate;if((t.childLanes&e)!==e?(t.childLanes|=e,n!==null&&(n.childLanes|=e)):n!==null&&(n.childLanes&e)!==e&&(n.childLanes|=e),t===r)break;t=t.return}}function Tl(t,e){Dm=t,E_=hl=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(ii=!0),t.firstContext=null)}function Gi(t){var e=t._currentValue;if(E_!==t)if(t={context:t,memoizedValue:e,next:null},hl===null){if(Dm===null)throw Error(Se(308));hl=t,Dm.dependencies={lanes:0,firstContext:t}}else hl=hl.next=t;return e}var Uu=null;function T_(t){Uu===null?Uu=[t]:Uu.push(t)}function JP(t,e,r,n){var i=e.interleaved;return i===null?(r.next=r,T_(e)):(r.next=i.next,i.next=r),e.interleaved=r,zo(t,n)}function zo(t,e){t.lanes|=e;var r=t.alternate;for(r!==null&&(r.lanes|=e),r=t,t=t.return;t!==null;)t.childLanes|=e,r=t.alternate,r!==null&&(r.childLanes|=e),r=t,t=t.return;return r.tag===3?r.stateNode:null}var va=!1;function P_(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function YP(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function Ro(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function Ba(t,e,r){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,$t&2){var i=n.pending;return i===null?e.next=e:(e.next=i.next,i.next=e),n.pending=e,zo(t,r)}return i=n.interleaved,i===null?(e.next=e,T_(n)):(e.next=i.next,i.next=e),n.interleaved=e,zo(t,r)}function x0(t,e,r){if(e=e.updateQueue,e!==null&&(e=e.shared,(r&4194240)!==0)){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,h_(t,r)}}function fO(t,e){var r=t.updateQueue,n=t.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var i=null,s=null;if(r=r.firstBaseUpdate,r!==null){do{var o={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};s===null?i=s=o:s=s.next=o,r=r.next}while(r!==null);s===null?i=s=e:s=s.next=e}else i=s=e;r={baseState:n.baseState,firstBaseUpdate:i,lastBaseUpdate:s,shared:n.shared,effects:n.effects},t.updateQueue=r;return}t=r.lastBaseUpdate,t===null?r.firstBaseUpdate=e:t.next=e,r.lastBaseUpdate=e}function Bm(t,e,r,n){var i=t.updateQueue;va=!1;var s=i.firstBaseUpdate,o=i.lastBaseUpdate,a=i.shared.pending;if(a!==null){i.shared.pending=null;var u=a,c=u.next;u.next=null,o===null?s=c:o.next=c,o=u;var l=t.alternate;l!==null&&(l=l.updateQueue,a=l.lastBaseUpdate,a!==o&&(a===null?l.firstBaseUpdate=c:a.next=c,l.lastBaseUpdate=u))}if(s!==null){var f=i.baseState;o=0,l=c=u=null,a=s;do{var d=a.lane,h=a.eventTime;if((n&d)===d){l!==null&&(l=l.next={eventTime:h,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var m=t,g=a;switch(d=e,h=r,g.tag){case 1:if(m=g.payload,typeof m=="function"){f=m.call(h,f,d);break e}f=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,d=typeof m=="function"?m.call(h,f,d):m,d==null)break e;f=Ir({},f,d);break e;case 2:va=!0}}a.callback!==null&&a.lane!==0&&(t.flags|=64,d=i.effects,d===null?i.effects=[a]:d.push(a))}else h={eventTime:h,lane:d,tag:a.tag,payload:a.payload,callback:a.callback,next:null},l===null?(c=l=h,u=f):l=l.next=h,o|=d;if(a=a.next,a===null){if(a=i.shared.pending,a===null)break;d=a,a=d.next,d.next=null,i.lastBaseUpdate=d,i.shared.pending=null}}while(!0);if(l===null&&(u=f),i.baseState=u,i.firstBaseUpdate=c,i.lastBaseUpdate=l,e=i.shared.interleaved,e!==null){i=e;do o|=i.lane,i=i.next;while(i!==e)}else s===null&&(i.shared.lanes=0);cc|=o,t.lanes=o,t.memoizedState=f}}function dO(t,e,r){if(t=e.effects,e.effects=null,t!==null)for(e=0;er?r:4,t(!0);var n=gv.transition;gv.transition={};try{t(!1),e()}finally{Yt=r,gv.transition=n}}function p3(){return qi().memoizedState}function w7(t,e,r){var n=Fa(t);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},m3(t))y3(e,r);else if(r=JP(t,e,r,n),r!==null){var i=qn();Os(r,t,n,i),g3(r,e,n)}}function _7(t,e,r){var n=Fa(t),i={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(m3(t))y3(e,i);else{var s=t.alternate;if(t.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,r);if(i.hasEagerState=!0,i.eagerState=a,Ps(a,o)){var u=e.interleaved;u===null?(i.next=i,T_(e)):(i.next=u.next,u.next=i),e.interleaved=i;return}}catch{}finally{}r=JP(t,e,i,n),r!==null&&(i=qn(),Os(r,t,n,i),g3(r,e,n))}}function m3(t){var e=t.alternate;return t===Pr||e!==null&&e===Pr}function y3(t,e){zd=Fm=!0;var r=t.pending;r===null?e.next=e:(e.next=r.next,r.next=e),t.pending=e}function g3(t,e,r){if(r&4194240){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,h_(t,r)}}var Lm={readContext:Gi,useCallback:Pn,useContext:Pn,useEffect:Pn,useImperativeHandle:Pn,useInsertionEffect:Pn,useLayoutEffect:Pn,useMemo:Pn,useReducer:Pn,useRef:Pn,useState:Pn,useDebugValue:Pn,useDeferredValue:Pn,useTransition:Pn,useMutableSource:Pn,useSyncExternalStore:Pn,useId:Pn,unstable_isNewReconciler:!1},x7={readContext:Gi,useCallback:function(t,e){return Ls().memoizedState=[t,e===void 0?null:e],t},useContext:Gi,useEffect:pO,useImperativeHandle:function(t,e,r){return r=r!=null?r.concat([t]):null,E0(4194308,4,c3.bind(null,e,t),r)},useLayoutEffect:function(t,e){return E0(4194308,4,t,e)},useInsertionEffect:function(t,e){return E0(4,2,t,e)},useMemo:function(t,e){var r=Ls();return e=e===void 0?null:e,t=t(),r.memoizedState=[t,e],t},useReducer:function(t,e,r){var n=Ls();return e=r!==void 0?r(e):e,n.memoizedState=n.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},n.queue=t,t=t.dispatch=w7.bind(null,Pr,t),[n.memoizedState,t]},useRef:function(t){var e=Ls();return t={current:t},e.memoizedState=t},useState:hO,useDebugValue:R_,useDeferredValue:function(t){return Ls().memoizedState=t},useTransition:function(){var t=hO(!1),e=t[0];return t=b7.bind(null,t[1]),Ls().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,r){var n=Pr,i=Ls();if(_r){if(r===void 0)throw Error(Se(407));r=r()}else{if(r=e(),mn===null)throw Error(Se(349));uc&30||t3(n,e,r)}i.memoizedState=r;var s={value:r,getSnapshot:e};return i.queue=s,pO(n3.bind(null,n,s,t),[t]),n.flags|=2048,Ch(9,r3.bind(null,n,s,r,e),void 0,null),r},useId:function(){var t=Ls(),e=mn.identifierPrefix;if(_r){var r=Mo,n=jo;r=(n&~(1<<32-Es(n)-1)).toString(32)+r,e=":"+e+"R"+r,r=Eh++,0<\/script>",t=t.removeChild(t.firstChild)):typeof n.is=="string"?t=o.createElement(r,{is:n.is}):(t=o.createElement(r),r==="select"&&(o=t,n.multiple?o.multiple=!0:n.size&&(o.size=n.size))):t=o.createElementNS(t,r),t[Xs]=e,t[_h]=n,T3(t,e,!1,!1),e.stateNode=t;e:{switch(o=Vb(r,n),r){case"dialog":lr("cancel",t),lr("close",t),i=n;break;case"iframe":case"object":case"embed":lr("load",t),i=n;break;case"video":case"audio":for(i=0;ihf&&(e.flags|=128,n=!0,Qf(s,!1),e.lanes=4194304)}else{if(!n)if(t=Um(o),t!==null){if(e.flags|=128,n=!0,r=t.updateQueue,r!==null&&(e.updateQueue=r,e.flags|=4),Qf(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!_r)return In(e),null}else 2*Gr()-s.renderingStartTime>hf&&r!==1073741824&&(e.flags|=128,n=!0,Qf(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(r=s.last,r!==null?r.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=Gr(),e.sibling=null,r=Or.current,cr(Or,n?r&1|2:r&1),e):(In(e),null);case 22:case 23:return z_(),n=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==n&&(e.flags|=8192),n&&e.mode&1?gi&1073741824&&(In(e),e.subtreeFlags&6&&(e.flags|=8192)):In(e),null;case 24:return null;case 25:return null}throw Error(Se(156,e.tag))}function k7(t,e){switch(x_(e),e.tag){case 1:return ai(e.type)&&jm(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return ff(),pr(oi),pr(Bn),A_(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return k_(e),null;case 13:if(pr(Or),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(Se(340));cf()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return pr(Or),null;case 4:return ff(),null;case 10:return C_(e.type._context),null;case 22:case 23:return z_(),null;case 24:return null;default:return null}}var Hp=!1,Rn=!1,A7=typeof WeakSet=="function"?WeakSet:Set,Be=null;function pl(t,e){var r=t.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){Vr(t,e,n)}else r.current=null}function yw(t,e,r){try{r()}catch(n){Vr(t,e,n)}}var OO=!1;function j7(t,e){if(Zb=Pm,t=$P(),w_(t)){if("selectionStart"in t)var r={start:t.selectionStart,end:t.selectionEnd};else e:{r=(r=t.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var i=n.anchorOffset,s=n.focusNode;n=n.focusOffset;try{r.nodeType,s.nodeType}catch{r=null;break e}var o=0,a=-1,u=-1,c=0,l=0,f=t,d=null;t:for(;;){for(var h;f!==r||i!==0&&f.nodeType!==3||(a=o+i),f!==s||n!==0&&f.nodeType!==3||(u=o+n),f.nodeType===3&&(o+=f.nodeValue.length),(h=f.firstChild)!==null;)d=f,f=h;for(;;){if(f===t)break t;if(d===r&&++c===i&&(a=o),d===s&&++l===n&&(u=o),(h=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=h}r=a===-1||u===-1?null:{start:a,end:u}}else r=null}r=r||{start:0,end:0}}else r=null;for(ew={focusedElem:t,selectionRange:r},Pm=!1,Be=e;Be!==null;)if(e=Be,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Be=t;else for(;Be!==null;){e=Be;try{var m=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var g=m.memoizedProps,x=m.memoizedState,_=e.stateNode,S=_.getSnapshotBeforeUpdate(e.elementType===e.type?g:Qi(e.type,g),x);_.__reactInternalSnapshotBeforeUpdate=S}break;case 3:var O=e.stateNode.containerInfo;O.nodeType===1?O.textContent="":O.nodeType===9&&O.documentElement&&O.removeChild(O.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Se(163))}}catch(D){Vr(e,e.return,D)}if(t=e.sibling,t!==null){t.return=e.return,Be=t;break}Be=e.return}return m=OO,OO=!1,m}function Vd(t,e,r){var n=e.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&t)===t){var s=i.destroy;i.destroy=void 0,s!==void 0&&yw(e,r,s)}i=i.next}while(i!==n)}}function Hy(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var r=e=e.next;do{if((r.tag&t)===t){var n=r.create;r.destroy=n()}r=r.next}while(r!==e)}}function gw(t){var e=t.ref;if(e!==null){var r=t.stateNode;switch(t.tag){case 5:t=r;break;default:t=r}typeof e=="function"?e(t):e.current=t}}function k3(t){var e=t.alternate;e!==null&&(t.alternate=null,k3(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[Xs],delete e[_h],delete e[nw],delete e[p7],delete e[m7])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function A3(t){return t.tag===5||t.tag===3||t.tag===4}function CO(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||A3(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function vw(t,e,r){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?r.nodeType===8?r.parentNode.insertBefore(t,e):r.insertBefore(t,e):(r.nodeType===8?(e=r.parentNode,e.insertBefore(t,r)):(e=r,e.appendChild(t)),r=r._reactRootContainer,r!=null||e.onclick!==null||(e.onclick=Am));else if(n!==4&&(t=t.child,t!==null))for(vw(t,e,r),t=t.sibling;t!==null;)vw(t,e,r),t=t.sibling}function bw(t,e,r){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?r.insertBefore(t,e):r.appendChild(t);else if(n!==4&&(t=t.child,t!==null))for(bw(t,e,r),t=t.sibling;t!==null;)bw(t,e,r),t=t.sibling}var _n=null,hs=!1;function Qo(t,e,r){for(r=r.child;r!==null;)j3(t,e,r),r=r.sibling}function j3(t,e,r){if(eo&&typeof eo.onCommitFiberUnmount=="function")try{eo.onCommitFiberUnmount(Dy,r)}catch{}switch(r.tag){case 5:Rn||pl(r,e);case 6:var n=_n,i=hs;_n=null,Qo(t,e,r),_n=n,hs=i,_n!==null&&(hs?(t=_n,r=r.stateNode,t.nodeType===8?t.parentNode.removeChild(r):t.removeChild(r)):_n.removeChild(r.stateNode));break;case 18:_n!==null&&(hs?(t=_n,r=r.stateNode,t.nodeType===8?pv(t.parentNode,r):t.nodeType===1&&pv(t,r),yh(t)):pv(_n,r.stateNode));break;case 4:n=_n,i=hs,_n=r.stateNode.containerInfo,hs=!0,Qo(t,e,r),_n=n,hs=i;break;case 0:case 11:case 14:case 15:if(!Rn&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){i=n=n.next;do{var s=i,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&yw(r,e,o),i=i.next}while(i!==n)}Qo(t,e,r);break;case 1:if(!Rn&&(pl(r,e),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(a){Vr(r,e,a)}Qo(t,e,r);break;case 21:Qo(t,e,r);break;case 22:r.mode&1?(Rn=(n=Rn)||r.memoizedState!==null,Qo(t,e,r),Rn=n):Qo(t,e,r);break;default:Qo(t,e,r)}}function TO(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var r=t.stateNode;r===null&&(r=t.stateNode=new A7),e.forEach(function(n){var i=L7.bind(null,t,n);r.has(n)||(r.add(n),n.then(i,i))})}}function Ki(t,e){var r=e.deletions;if(r!==null)for(var n=0;ni&&(i=o),n&=~s}if(n=i,n=Gr()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*$7(n/1960))-n,10t?16:t,Ma===null)var n=!1;else{if(t=Ma,Ma=null,Wm=0,$t&6)throw Error(Se(331));var i=$t;for($t|=4,Be=t.current;Be!==null;){var s=Be,o=s.child;if(Be.flags&16){var a=s.deletions;if(a!==null){for(var u=0;uGr()-F_?ec(t,0):U_|=r),ui(t,e)}function F3(t,e){e===0&&(t.mode&1?(e=Rp,Rp<<=1,!(Rp&130023424)&&(Rp=4194304)):e=1);var r=qn();t=zo(t,e),t!==null&&(op(t,e,r),ui(t,r))}function F7(t){var e=t.memoizedState,r=0;e!==null&&(r=e.retryLane),F3(t,r)}function L7(t,e){var r=0;switch(t.tag){case 13:var n=t.stateNode,i=t.memoizedState;i!==null&&(r=i.retryLane);break;case 19:n=t.stateNode;break;default:throw Error(Se(314))}n!==null&&n.delete(e),F3(t,r)}var L3;L3=function(t,e,r){if(t!==null)if(t.memoizedProps!==e.pendingProps||oi.current)ii=!0;else{if(!(t.lanes&r)&&!(e.flags&128))return ii=!1,P7(t,e,r);ii=!!(t.flags&131072)}else ii=!1,_r&&e.flags&1048576&&HP(e,Nm,e.index);switch(e.lanes=0,e.tag){case 2:var n=e.type;O0(t,e),t=e.pendingProps;var i=uf(e,Bn.current);Tl(e,r),i=M_(null,e,n,t,i,r);var s=$_();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,ai(n)?(s=!0,Mm(e)):s=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,P_(e),i.updater=Wy,e.stateNode=i,i._reactInternals=e,cw(e,n,t,r),e=dw(null,e,n,!0,s,r)):(e.tag=0,_r&&s&&__(e),Hn(null,e,i,r),e=e.child),e;case 16:n=e.elementType;e:{switch(O0(t,e),t=e.pendingProps,i=n._init,n=i(n._payload),e.type=n,i=e.tag=V7(n),t=Qi(n,t),i){case 0:e=fw(null,e,n,t,r);break e;case 1:e=xO(null,e,n,t,r);break e;case 11:e=wO(null,e,n,t,r);break e;case 14:e=_O(null,e,n,Qi(n.type,t),r);break e}throw Error(Se(306,n,""))}return e;case 0:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:Qi(n,i),fw(t,e,n,i,r);case 1:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:Qi(n,i),xO(t,e,n,i,r);case 3:e:{if(E3(e),t===null)throw Error(Se(387));n=e.pendingProps,s=e.memoizedState,i=s.element,YP(t,e),Bm(e,n,null,r);var o=e.memoizedState;if(n=o.element,s.isDehydrated)if(s={element:n,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){i=df(Error(Se(423)),e),e=SO(t,e,n,r,i);break e}else if(n!==i){i=df(Error(Se(424)),e),e=SO(t,e,n,r,i);break e}else for(wi=Da(e.stateNode.containerInfo.firstChild),_i=e,_r=!0,ps=null,r=XP(e,null,n,r),e.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(cf(),n===i){e=Vo(t,e,r);break e}Hn(t,e,n,r)}e=e.child}return e;case 5:return QP(e),t===null&&ow(e),n=e.type,i=e.pendingProps,s=t!==null?t.memoizedProps:null,o=i.children,tw(n,i)?o=null:s!==null&&tw(n,s)&&(e.flags|=32),S3(t,e),Hn(t,e,o,r),e.child;case 6:return t===null&&ow(e),null;case 13:return O3(t,e,r);case 4:return I_(e,e.stateNode.containerInfo),n=e.pendingProps,t===null?e.child=lf(e,null,n,r):Hn(t,e,n,r),e.child;case 11:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:Qi(n,i),wO(t,e,n,i,r);case 7:return Hn(t,e,e.pendingProps,r),e.child;case 8:return Hn(t,e,e.pendingProps.children,r),e.child;case 12:return Hn(t,e,e.pendingProps.children,r),e.child;case 10:e:{if(n=e.type._context,i=e.pendingProps,s=e.memoizedProps,o=i.value,cr(Rm,n._currentValue),n._currentValue=o,s!==null)if(Ps(s.value,o)){if(s.children===i.children&&!oi.current){e=Vo(t,e,r);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var u=a.firstContext;u!==null;){if(u.context===n){if(s.tag===1){u=Ro(-1,r&-r),u.tag=2;var c=s.updateQueue;if(c!==null){c=c.shared;var l=c.pending;l===null?u.next=u:(u.next=l.next,l.next=u),c.pending=u}}s.lanes|=r,u=s.alternate,u!==null&&(u.lanes|=r),aw(s.return,r,e),a.lanes|=r;break}u=u.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(Se(341));o.lanes|=r,a=o.alternate,a!==null&&(a.lanes|=r),aw(o,r,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}Hn(t,e,i.children,r),e=e.child}return e;case 9:return i=e.type,n=e.pendingProps.children,Tl(e,r),i=Gi(i),n=n(i),e.flags|=1,Hn(t,e,n,r),e.child;case 14:return n=e.type,i=Qi(n,e.pendingProps),i=Qi(n.type,i),_O(t,e,n,i,r);case 15:return _3(t,e,e.type,e.pendingProps,r);case 17:return n=e.type,i=e.pendingProps,i=e.elementType===n?i:Qi(n,i),O0(t,e),e.tag=1,ai(n)?(t=!0,Mm(e)):t=!1,Tl(e,r),v3(e,n,i),cw(e,n,i,r),dw(null,e,n,!0,t,r);case 19:return C3(t,e,r);case 22:return x3(t,e,r)}throw Error(Se(156,e.tag))};function z3(t,e){return mP(t,e)}function z7(t,e,r,n){this.tag=t,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Vi(t,e,r,n){return new z7(t,e,r,n)}function W_(t){return t=t.prototype,!(!t||!t.isReactComponent)}function V7(t){if(typeof t=="function")return W_(t)?1:0;if(t!=null){if(t=t.$$typeof,t===c_)return 11;if(t===l_)return 14}return 2}function La(t,e){var r=t.alternate;return r===null?(r=Vi(t.tag,e,t.key,t.mode),r.elementType=t.elementType,r.type=t.type,r.stateNode=t.stateNode,r.alternate=t,t.alternate=r):(r.pendingProps=e,r.type=t.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=t.flags&14680064,r.childLanes=t.childLanes,r.lanes=t.lanes,r.child=t.child,r.memoizedProps=t.memoizedProps,r.memoizedState=t.memoizedState,r.updateQueue=t.updateQueue,e=t.dependencies,r.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},r.sibling=t.sibling,r.index=t.index,r.ref=t.ref,r}function P0(t,e,r,n,i,s){var o=2;if(n=t,typeof t=="function")W_(t)&&(o=1);else if(typeof t=="string")o=5;else e:switch(t){case sl:return tc(r.children,i,s,e);case u_:o=8,i|=8;break;case Mb:return t=Vi(12,r,e,i|2),t.elementType=Mb,t.lanes=s,t;case $b:return t=Vi(13,r,e,i),t.elementType=$b,t.lanes=s,t;case Nb:return t=Vi(19,r,e,i),t.elementType=Nb,t.lanes=s,t;case QT:return qy(r,i,s,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case JT:o=10;break e;case YT:o=9;break e;case c_:o=11;break e;case l_:o=14;break e;case ga:o=16,n=null;break e}throw Error(Se(130,t==null?t:typeof t,""))}return e=Vi(o,r,e,i),e.elementType=t,e.type=n,e.lanes=s,e}function tc(t,e,r,n){return t=Vi(7,t,n,e),t.lanes=r,t}function qy(t,e,r,n){return t=Vi(22,t,n,e),t.elementType=QT,t.lanes=r,t.stateNode={isHidden:!1},t}function xv(t,e,r){return t=Vi(6,t,null,e),t.lanes=r,t}function Sv(t,e,r){return e=Vi(4,t.children!==null?t.children:[],t.key,e),e.lanes=r,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function W7(t,e,r,n,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=nv(0),this.expirationTimes=nv(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=nv(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function H_(t,e,r,n,i,s,o,a,u){return t=new W7(t,e,r,a,u),e===1?(e=1,s===!0&&(e|=8)):e=0,s=Vi(3,null,null,e),t.current=s,s.stateNode=t,s.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},P_(s),t}function H7(t,e,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(G3)}catch(t){console.error(t)}}G3(),GT.exports=Pi;var Qy=GT.exports;const J7=Sf(Qy);var NO=Qy;Ab.createRoot=NO.createRoot,Ab.hydrateRoot=NO.hydrateRoot;function pt(t,e,{checkForDefaultPrevented:r=!0}={}){return function(i){if(t==null||t(i),r===!1||!i.defaultPrevented)return e==null?void 0:e(i)}}function Y7(t,e){typeof t=="function"?t(e):t!=null&&(t.current=e)}function Zy(...t){return e=>t.forEach(r=>Y7(r,e))}function cn(...t){return I.useCallback(Zy(...t),t)}function Q7(t,e){const r=I.createContext(e),n=s=>{const{children:o,...a}=s,u=I.useMemo(()=>a,Object.values(a));return V.jsx(r.Provider,{value:u,children:o})};n.displayName=t+"Provider";function i(s){const o=I.useContext(r);if(o)return o;if(e!==void 0)return e;throw new Error(`\`${s}\` must be used within \`${t}\``)}return[n,i]}function eg(t,e=[]){let r=[];function n(s,o){const a=I.createContext(o),u=r.length;r=[...r,o];const c=f=>{var _;const{scope:d,children:h,...m}=f,g=((_=d==null?void 0:d[t])==null?void 0:_[u])||a,x=I.useMemo(()=>m,Object.values(m));return V.jsx(g.Provider,{value:x,children:h})};c.displayName=s+"Provider";function l(f,d){var g;const h=((g=d==null?void 0:d[t])==null?void 0:g[u])||a,m=I.useContext(h);if(m)return m;if(o!==void 0)return o;throw new Error(`\`${f}\` must be used within \`${s}\``)}return[c,l]}const i=()=>{const s=r.map(o=>I.createContext(o));return function(a){const u=(a==null?void 0:a[t])||s;return I.useMemo(()=>({[`__scope${t}`]:{...a,[t]:u}}),[a,u])}};return i.scopeName=t,[n,Z7(i,...e)]}function Z7(...t){const e=t[0];if(t.length===1)return e;const r=()=>{const n=t.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(s){const o=n.reduce((a,{useScope:u,scopeName:c})=>{const f=u(s)[`__scope${c}`];return{...a,...f}},{});return I.useMemo(()=>({[`__scope${e.scopeName}`]:o}),[o])}};return r.scopeName=e.scopeName,r}var fc=globalThis!=null&&globalThis.document?I.useLayoutEffect:()=>{},e9=UD.useId||(()=>{}),t9=0;function Il(t){const[e,r]=I.useState(e9());return fc(()=>{t||r(n=>n??String(t9++))},[t]),t||(e?`radix-${e}`:"")}function Is(t){const e=I.useRef(t);return I.useEffect(()=>{e.current=t}),I.useMemo(()=>(...r)=>{var n;return(n=e.current)==null?void 0:n.call(e,...r)},[])}function X_({prop:t,defaultProp:e,onChange:r=()=>{}}){const[n,i]=r9({defaultProp:e,onChange:r}),s=t!==void 0,o=s?t:n,a=Is(r),u=I.useCallback(c=>{if(s){const f=typeof c=="function"?c(t):c;f!==t&&a(f)}else i(c)},[s,t,i,a]);return[o,u]}function r9({defaultProp:t,onChange:e}){const r=I.useState(t),[n]=r,i=I.useRef(n),s=Is(e);return I.useEffect(()=>{i.current!==n&&(s(n),i.current=n)},[n,i,s]),r}var gn=I.forwardRef((t,e)=>{const{children:r,...n}=t,i=I.Children.toArray(r),s=i.find(n9);if(s){const o=s.props.children,a=i.map(u=>u===s?I.Children.count(o)>1?I.Children.only(null):I.isValidElement(o)?o.props.children:null:u);return V.jsx(Ew,{...n,ref:e,children:I.isValidElement(o)?I.cloneElement(o,void 0,a):null})}return V.jsx(Ew,{...n,ref:e,children:r})});gn.displayName="Slot";var Ew=I.forwardRef((t,e)=>{const{children:r,...n}=t;if(I.isValidElement(r)){const i=s9(r);return I.cloneElement(r,{...i9(n,r.props),ref:e?Zy(e,i):i})}return I.Children.count(r)>1?I.Children.only(null):null});Ew.displayName="SlotClone";var q3=({children:t})=>V.jsx(V.Fragment,{children:t});function n9(t){return I.isValidElement(t)&&t.type===q3}function i9(t,e){const r={...e};for(const n in e){const i=t[n],s=e[n];/^on[A-Z]/.test(n)?i&&s?r[n]=(...a)=>{s(...a),i(...a)}:i&&(r[n]=i):n==="style"?r[n]={...i,...s}:n==="className"&&(r[n]=[i,s].filter(Boolean).join(" "))}return{...t,...r}}function s9(t){var n,i;let e=(n=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:n.get,r=e&&"isReactWarning"in e&&e.isReactWarning;return r?t.ref:(e=(i=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:i.get,r=e&&"isReactWarning"in e&&e.isReactWarning,r?t.props.ref:t.props.ref||t.ref)}var o9=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],Wr=o9.reduce((t,e)=>{const r=I.forwardRef((n,i)=>{const{asChild:s,...o}=n,a=s?gn:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),V.jsx(a,{...o,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{});function K3(t,e){t&&Qy.flushSync(()=>t.dispatchEvent(e))}function a9(t,e=globalThis==null?void 0:globalThis.document){const r=Is(t);I.useEffect(()=>{const n=i=>{i.key==="Escape"&&r(i)};return e.addEventListener("keydown",n,{capture:!0}),()=>e.removeEventListener("keydown",n,{capture:!0})},[r,e])}var u9="DismissableLayer",Ow="dismissableLayer.update",c9="dismissableLayer.pointerDownOutside",l9="dismissableLayer.focusOutside",RO,X3=I.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),tg=I.forwardRef((t,e)=>{const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:n,onPointerDownOutside:i,onFocusOutside:s,onInteractOutside:o,onDismiss:a,...u}=t,c=I.useContext(X3),[l,f]=I.useState(null),d=(l==null?void 0:l.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,h]=I.useState({}),m=cn(e,K=>f(K)),g=Array.from(c.layers),[x]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),_=g.indexOf(x),S=l?g.indexOf(l):-1,O=c.layersWithOutsidePointerEventsDisabled.size>0,D=S>=_,z=h9(K=>{const J=K.target,fe=[...c.branches].some(pe=>pe.contains(J));!D||fe||(i==null||i(K),o==null||o(K),K.defaultPrevented||a==null||a())},d),G=p9(K=>{const J=K.target;[...c.branches].some(pe=>pe.contains(J))||(s==null||s(K),o==null||o(K),K.defaultPrevented||a==null||a())},d);return a9(K=>{S===c.layers.size-1&&(n==null||n(K),!K.defaultPrevented&&a&&(K.preventDefault(),a()))},d),I.useEffect(()=>{if(l)return r&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(RO=d.body.style.pointerEvents,d.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(l)),c.layers.add(l),DO(),()=>{r&&c.layersWithOutsidePointerEventsDisabled.size===1&&(d.body.style.pointerEvents=RO)}},[l,d,r,c]),I.useEffect(()=>()=>{l&&(c.layers.delete(l),c.layersWithOutsidePointerEventsDisabled.delete(l),DO())},[l,c]),I.useEffect(()=>{const K=()=>h({});return document.addEventListener(Ow,K),()=>document.removeEventListener(Ow,K)},[]),V.jsx(Wr.div,{...u,ref:m,style:{pointerEvents:O?D?"auto":"none":void 0,...t.style},onFocusCapture:pt(t.onFocusCapture,G.onFocusCapture),onBlurCapture:pt(t.onBlurCapture,G.onBlurCapture),onPointerDownCapture:pt(t.onPointerDownCapture,z.onPointerDownCapture)})});tg.displayName=u9;var f9="DismissableLayerBranch",d9=I.forwardRef((t,e)=>{const r=I.useContext(X3),n=I.useRef(null),i=cn(e,n);return I.useEffect(()=>{const s=n.current;if(s)return r.branches.add(s),()=>{r.branches.delete(s)}},[r.branches]),V.jsx(Wr.div,{...t,ref:i})});d9.displayName=f9;function h9(t,e=globalThis==null?void 0:globalThis.document){const r=Is(t),n=I.useRef(!1),i=I.useRef(()=>{});return I.useEffect(()=>{const s=a=>{if(a.target&&!n.current){let u=function(){J3(c9,r,c,{discrete:!0})};const c={originalEvent:a};a.pointerType==="touch"?(e.removeEventListener("click",i.current),i.current=u,e.addEventListener("click",i.current,{once:!0})):u()}else e.removeEventListener("click",i.current);n.current=!1},o=window.setTimeout(()=>{e.addEventListener("pointerdown",s)},0);return()=>{window.clearTimeout(o),e.removeEventListener("pointerdown",s),e.removeEventListener("click",i.current)}},[e,r]),{onPointerDownCapture:()=>n.current=!0}}function p9(t,e=globalThis==null?void 0:globalThis.document){const r=Is(t),n=I.useRef(!1);return I.useEffect(()=>{const i=s=>{s.target&&!n.current&&J3(l9,r,{originalEvent:s},{discrete:!1})};return e.addEventListener("focusin",i),()=>e.removeEventListener("focusin",i)},[e,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}function DO(){const t=new CustomEvent(Ow);document.dispatchEvent(t)}function J3(t,e,r,{discrete:n}){const i=r.originalEvent.target,s=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:r});e&&i.addEventListener(t,e,{once:!0}),n?K3(i,s):i.dispatchEvent(s)}var Ev="focusScope.autoFocusOnMount",Ov="focusScope.autoFocusOnUnmount",BO={bubbles:!1,cancelable:!0},m9="FocusScope",J_=I.forwardRef((t,e)=>{const{loop:r=!1,trapped:n=!1,onMountAutoFocus:i,onUnmountAutoFocus:s,...o}=t,[a,u]=I.useState(null),c=Is(i),l=Is(s),f=I.useRef(null),d=cn(e,g=>u(g)),h=I.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;I.useEffect(()=>{if(n){let g=function(O){if(h.paused||!a)return;const D=O.target;a.contains(D)?f.current=D:aa(f.current,{select:!0})},x=function(O){if(h.paused||!a)return;const D=O.relatedTarget;D!==null&&(a.contains(D)||aa(f.current,{select:!0}))},_=function(O){if(document.activeElement===document.body)for(const z of O)z.removedNodes.length>0&&aa(a)};document.addEventListener("focusin",g),document.addEventListener("focusout",x);const S=new MutationObserver(_);return a&&S.observe(a,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",g),document.removeEventListener("focusout",x),S.disconnect()}}},[n,a,h.paused]),I.useEffect(()=>{if(a){FO.add(h);const g=document.activeElement;if(!a.contains(g)){const _=new CustomEvent(Ev,BO);a.addEventListener(Ev,c),a.dispatchEvent(_),_.defaultPrevented||(y9(_9(Y3(a)),{select:!0}),document.activeElement===g&&aa(a))}return()=>{a.removeEventListener(Ev,c),setTimeout(()=>{const _=new CustomEvent(Ov,BO);a.addEventListener(Ov,l),a.dispatchEvent(_),_.defaultPrevented||aa(g??document.body,{select:!0}),a.removeEventListener(Ov,l),FO.remove(h)},0)}}},[a,c,l,h]);const m=I.useCallback(g=>{if(!r&&!n||h.paused)return;const x=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,_=document.activeElement;if(x&&_){const S=g.currentTarget,[O,D]=g9(S);O&&D?!g.shiftKey&&_===D?(g.preventDefault(),r&&aa(O,{select:!0})):g.shiftKey&&_===O&&(g.preventDefault(),r&&aa(D,{select:!0})):_===S&&g.preventDefault()}},[r,n,h.paused]);return V.jsx(Wr.div,{tabIndex:-1,...o,ref:d,onKeyDown:m})});J_.displayName=m9;function y9(t,{select:e=!1}={}){const r=document.activeElement;for(const n of t)if(aa(n,{select:e}),document.activeElement!==r)return}function g9(t){const e=Y3(t),r=UO(e,t),n=UO(e.reverse(),t);return[r,n]}function Y3(t){const e=[],r=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)e.push(r.currentNode);return e}function UO(t,e){for(const r of t)if(!v9(r,{upTo:e}))return r}function v9(t,{upTo:e}){if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(e!==void 0&&t===e)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}function b9(t){return t instanceof HTMLInputElement&&"select"in t}function aa(t,{select:e=!1}={}){if(t&&t.focus){const r=document.activeElement;t.focus({preventScroll:!0}),t!==r&&b9(t)&&e&&t.select()}}var FO=w9();function w9(){let t=[];return{add(e){const r=t[0];e!==r&&(r==null||r.pause()),t=LO(t,e),t.unshift(e)},remove(e){var r;t=LO(t,e),(r=t[0])==null||r.resume()}}}function LO(t,e){const r=[...t],n=r.indexOf(e);return n!==-1&&r.splice(n,1),r}function _9(t){return t.filter(e=>e.tagName!=="A")}var x9="Portal",Y_=I.forwardRef((t,e)=>{var a;const{container:r,...n}=t,[i,s]=I.useState(!1);fc(()=>s(!0),[]);const o=r||i&&((a=globalThis==null?void 0:globalThis.document)==null?void 0:a.body);return o?J7.createPortal(V.jsx(Wr.div,{...n,ref:e}),o):null});Y_.displayName=x9;function S9(t,e){return I.useReducer((r,n)=>e[r][n]??r,t)}var Xo=t=>{const{present:e,children:r}=t,n=E9(e),i=typeof r=="function"?r({present:n.isPresent}):I.Children.only(r),s=cn(n.ref,O9(i));return typeof r=="function"||n.isPresent?I.cloneElement(i,{ref:s}):null};Xo.displayName="Presence";function E9(t){const[e,r]=I.useState(),n=I.useRef({}),i=I.useRef(t),s=I.useRef("none"),o=t?"mounted":"unmounted",[a,u]=S9(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return I.useEffect(()=>{const c=Kp(n.current);s.current=a==="mounted"?c:"none"},[a]),fc(()=>{const c=n.current,l=i.current;if(l!==t){const d=s.current,h=Kp(c);t?u("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?u("UNMOUNT"):u(l&&d!==h?"ANIMATION_OUT":"UNMOUNT"),i.current=t}},[t,u]),fc(()=>{if(e){let c;const l=e.ownerDocument.defaultView??window,f=h=>{const g=Kp(n.current).includes(h.animationName);if(h.target===e&&g&&(u("ANIMATION_END"),!i.current)){const x=e.style.animationFillMode;e.style.animationFillMode="forwards",c=l.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=x)})}},d=h=>{h.target===e&&(s.current=Kp(n.current))};return e.addEventListener("animationstart",d),e.addEventListener("animationcancel",f),e.addEventListener("animationend",f),()=>{l.clearTimeout(c),e.removeEventListener("animationstart",d),e.removeEventListener("animationcancel",f),e.removeEventListener("animationend",f)}}else u("ANIMATION_END")},[e,u]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:I.useCallback(c=>{c&&(n.current=getComputedStyle(c)),r(c)},[])}}function Kp(t){return(t==null?void 0:t.animationName)||"none"}function O9(t){var n,i;let e=(n=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:n.get,r=e&&"isReactWarning"in e&&e.isReactWarning;return r?t.ref:(e=(i=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:i.get,r=e&&"isReactWarning"in e&&e.isReactWarning,r?t.props.ref:t.props.ref||t.ref)}var Cv=0;function Q3(){I.useEffect(()=>{const t=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",t[0]??zO()),document.body.insertAdjacentElement("beforeend",t[1]??zO()),Cv++,()=>{Cv===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Cv--}},[])}function zO(){const t=document.createElement("span");return t.setAttribute("data-radix-focus-guard",""),t.tabIndex=0,t.style.outline="none",t.style.opacity="0",t.style.position="fixed",t.style.pointerEvents="none",t}var Js=function(){return Js=Object.assign||function(e){for(var r,n=1,i=arguments.length;n"u")return z9;var e=V9(t),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,n-r+e[2]-e[0])}},H9=rI(),kl="data-scroll-locked",G9=function(t,e,r,n){var i=t.left,s=t.top,o=t.right,a=t.gap;return r===void 0&&(r="margin"),` + .`.concat(T9,` { + overflow: hidden `).concat(n,`; + padding-right: `).concat(a,"px ").concat(n,`; + } + body[`).concat(kl,`] { + overflow: hidden `).concat(n,`; + overscroll-behavior: contain; + `).concat([e&&"position: relative ".concat(n,";"),r==="margin"&&` + padding-left: `.concat(i,`px; + padding-top: `).concat(s,`px; + padding-right: `).concat(o,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(a,"px ").concat(n,`; + `),r==="padding"&&"padding-right: ".concat(a,"px ").concat(n,";")].filter(Boolean).join(""),` + } + + .`).concat(I0,` { + right: `).concat(a,"px ").concat(n,`; + } + + .`).concat(k0,` { + margin-right: `).concat(a,"px ").concat(n,`; + } + + .`).concat(I0," .").concat(I0,` { + right: 0 `).concat(n,`; + } + + .`).concat(k0," .").concat(k0,` { + margin-right: 0 `).concat(n,`; + } + + body[`).concat(kl,`] { + `).concat(P9,": ").concat(a,`px; + } +`)},WO=function(){var t=parseInt(document.body.getAttribute(kl)||"0",10);return isFinite(t)?t:0},q9=function(){I.useEffect(function(){return document.body.setAttribute(kl,(WO()+1).toString()),function(){var t=WO()-1;t<=0?document.body.removeAttribute(kl):document.body.setAttribute(kl,t.toString())}},[])},K9=function(t){var e=t.noRelative,r=t.noImportant,n=t.gapMode,i=n===void 0?"margin":n;q9();var s=I.useMemo(function(){return W9(i)},[i]);return I.createElement(H9,{styles:G9(s,!e,i,r?"":"!important")})},Cw=!1;if(typeof window<"u")try{var Xp=Object.defineProperty({},"passive",{get:function(){return Cw=!0,!0}});window.addEventListener("test",Xp,Xp),window.removeEventListener("test",Xp,Xp)}catch{Cw=!1}var Ac=Cw?{passive:!1}:!1,X9=function(t){return t.tagName==="TEXTAREA"},nI=function(t,e){if(!(t instanceof Element))return!1;var r=window.getComputedStyle(t);return r[e]!=="hidden"&&!(r.overflowY===r.overflowX&&!X9(t)&&r[e]==="visible")},J9=function(t){return nI(t,"overflowY")},Y9=function(t){return nI(t,"overflowX")},HO=function(t,e){var r=e.ownerDocument,n=e;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var i=iI(t,n);if(i){var s=sI(t,n),o=s[1],a=s[2];if(o>a)return!0}n=n.parentNode}while(n&&n!==r.body);return!1},Q9=function(t){var e=t.scrollTop,r=t.scrollHeight,n=t.clientHeight;return[e,r,n]},Z9=function(t){var e=t.scrollLeft,r=t.scrollWidth,n=t.clientWidth;return[e,r,n]},iI=function(t,e){return t==="v"?J9(e):Y9(e)},sI=function(t,e){return t==="v"?Q9(e):Z9(e)},eU=function(t,e){return t==="h"&&e==="rtl"?-1:1},tU=function(t,e,r,n,i){var s=eU(t,window.getComputedStyle(e).direction),o=s*n,a=r.target,u=e.contains(a),c=!1,l=o>0,f=0,d=0;do{var h=sI(t,a),m=h[0],g=h[1],x=h[2],_=g-x-s*m;(m||_)&&iI(t,a)&&(f+=_,d+=m),a instanceof ShadowRoot?a=a.host:a=a.parentNode}while(!u&&a!==document.body||u&&(e.contains(a)||e===a));return(l&&(Math.abs(f)<1||!i)||!l&&(Math.abs(d)<1||!i))&&(c=!0),c},Jp=function(t){return"changedTouches"in t?[t.changedTouches[0].clientX,t.changedTouches[0].clientY]:[0,0]},GO=function(t){return[t.deltaX,t.deltaY]},qO=function(t){return t&&"current"in t?t.current:t},rU=function(t,e){return t[0]===e[0]&&t[1]===e[1]},nU=function(t){return` + .block-interactivity-`.concat(t,` {pointer-events: none;} + .allow-interactivity-`).concat(t,` {pointer-events: all;} +`)},iU=0,jc=[];function sU(t){var e=I.useRef([]),r=I.useRef([0,0]),n=I.useRef(),i=I.useState(iU++)[0],s=I.useState(rI)[0],o=I.useRef(t);I.useEffect(function(){o.current=t},[t]),I.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(i));var g=C9([t.lockRef.current],(t.shards||[]).map(qO),!0).filter(Boolean);return g.forEach(function(x){return x.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),g.forEach(function(x){return x.classList.remove("allow-interactivity-".concat(i))})}}},[t.inert,t.lockRef.current,t.shards]);var a=I.useCallback(function(g,x){if("touches"in g&&g.touches.length===2||g.type==="wheel"&&g.ctrlKey)return!o.current.allowPinchZoom;var _=Jp(g),S=r.current,O="deltaX"in g?g.deltaX:S[0]-_[0],D="deltaY"in g?g.deltaY:S[1]-_[1],z,G=g.target,K=Math.abs(O)>Math.abs(D)?"h":"v";if("touches"in g&&K==="h"&&G.type==="range")return!1;var J=HO(K,G);if(!J)return!0;if(J?z=K:(z=K==="v"?"h":"v",J=HO(K,G)),!J)return!1;if(!n.current&&"changedTouches"in g&&(O||D)&&(n.current=z),!z)return!0;var fe=n.current||z;return tU(fe,x,g,fe==="h"?O:D,!0)},[]),u=I.useCallback(function(g){var x=g;if(!(!jc.length||jc[jc.length-1]!==s)){var _="deltaY"in x?GO(x):Jp(x),S=e.current.filter(function(z){return z.name===x.type&&(z.target===x.target||x.target===z.shadowParent)&&rU(z.delta,_)})[0];if(S&&S.should){x.cancelable&&x.preventDefault();return}if(!S){var O=(o.current.shards||[]).map(qO).filter(Boolean).filter(function(z){return z.contains(x.target)}),D=O.length>0?a(x,O[0]):!o.current.noIsolation;D&&x.cancelable&&x.preventDefault()}}},[]),c=I.useCallback(function(g,x,_,S){var O={name:g,delta:x,target:_,should:S,shadowParent:oU(_)};e.current.push(O),setTimeout(function(){e.current=e.current.filter(function(D){return D!==O})},1)},[]),l=I.useCallback(function(g){r.current=Jp(g),n.current=void 0},[]),f=I.useCallback(function(g){c(g.type,GO(g),g.target,a(g,t.lockRef.current))},[]),d=I.useCallback(function(g){c(g.type,Jp(g),g.target,a(g,t.lockRef.current))},[]);I.useEffect(function(){return jc.push(s),t.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:d}),document.addEventListener("wheel",u,Ac),document.addEventListener("touchmove",u,Ac),document.addEventListener("touchstart",l,Ac),function(){jc=jc.filter(function(g){return g!==s}),document.removeEventListener("wheel",u,Ac),document.removeEventListener("touchmove",u,Ac),document.removeEventListener("touchstart",l,Ac)}},[]);var h=t.removeScrollBar,m=t.inert;return I.createElement(I.Fragment,null,m?I.createElement(s,{styles:nU(i)}):null,h?I.createElement(K9,{gapMode:t.gapMode}):null)}function oU(t){for(var e=null;t!==null;)t instanceof ShadowRoot&&(e=t.host,t=t.host),t=t.parentNode;return e}const aU=N9(tI,sU);var Q_=I.forwardRef(function(t,e){return I.createElement(rg,Js({},t,{ref:e,sideCar:aU}))});Q_.classNames=rg.classNames;var uU=function(t){if(typeof document>"u")return null;var e=Array.isArray(t)?t[0]:t;return e.ownerDocument.body},Mc=new WeakMap,Yp=new WeakMap,Qp={},kv=0,oI=function(t){return t&&(t.host||oI(t.parentNode))},cU=function(t,e){return e.map(function(r){if(t.contains(r))return r;var n=oI(r);return n&&t.contains(n)?n:(console.error("aria-hidden",r,"in not contained inside",t,". Doing nothing"),null)}).filter(function(r){return!!r})},lU=function(t,e,r,n){var i=cU(e,Array.isArray(t)?t:[t]);Qp[r]||(Qp[r]=new WeakMap);var s=Qp[r],o=[],a=new Set,u=new Set(i),c=function(f){!f||a.has(f)||(a.add(f),c(f.parentNode))};i.forEach(c);var l=function(f){!f||u.has(f)||Array.prototype.forEach.call(f.children,function(d){if(a.has(d))l(d);else try{var h=d.getAttribute(n),m=h!==null&&h!=="false",g=(Mc.get(d)||0)+1,x=(s.get(d)||0)+1;Mc.set(d,g),s.set(d,x),o.push(d),g===1&&m&&Yp.set(d,!0),x===1&&d.setAttribute(r,"true"),m||d.setAttribute(n,"true")}catch(_){console.error("aria-hidden: cannot operate on ",d,_)}})};return l(e),a.clear(),kv++,function(){o.forEach(function(f){var d=Mc.get(f)-1,h=s.get(f)-1;Mc.set(f,d),s.set(f,h),d||(Yp.has(f)||f.removeAttribute(n),Yp.delete(f)),h||f.removeAttribute(r)}),kv--,kv||(Mc=new WeakMap,Mc=new WeakMap,Yp=new WeakMap,Qp={})}},aI=function(t,e,r){r===void 0&&(r="data-aria-hidden");var n=Array.from(Array.isArray(t)?t:[t]),i=uU(t);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live]"))),lU(n,i,r,"aria-hidden")):function(){return null}},Z_="Dialog",[uI,Tpe]=eg(Z_),[fU,js]=uI(Z_),cI=t=>{const{__scopeDialog:e,children:r,open:n,defaultOpen:i,onOpenChange:s,modal:o=!0}=t,a=I.useRef(null),u=I.useRef(null),[c=!1,l]=X_({prop:n,defaultProp:i,onChange:s});return V.jsx(fU,{scope:e,triggerRef:a,contentRef:u,contentId:Il(),titleId:Il(),descriptionId:Il(),open:c,onOpenChange:l,onOpenToggle:I.useCallback(()=>l(f=>!f),[l]),modal:o,children:r})};cI.displayName=Z_;var lI="DialogTrigger",fI=I.forwardRef((t,e)=>{const{__scopeDialog:r,...n}=t,i=js(lI,r),s=cn(e,i.triggerRef);return V.jsx(Wr.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":rx(i.open),...n,ref:s,onClick:pt(t.onClick,i.onOpenToggle)})});fI.displayName=lI;var ex="DialogPortal",[dU,dI]=uI(ex,{forceMount:void 0}),hI=t=>{const{__scopeDialog:e,forceMount:r,children:n,container:i}=t,s=js(ex,e);return V.jsx(dU,{scope:e,forceMount:r,children:I.Children.map(n,o=>V.jsx(Xo,{present:r||s.open,children:V.jsx(Y_,{asChild:!0,container:i,children:o})}))})};hI.displayName=ex;var qm="DialogOverlay",pI=I.forwardRef((t,e)=>{const r=dI(qm,t.__scopeDialog),{forceMount:n=r.forceMount,...i}=t,s=js(qm,t.__scopeDialog);return s.modal?V.jsx(Xo,{present:n||s.open,children:V.jsx(hU,{...i,ref:e})}):null});pI.displayName=qm;var hU=I.forwardRef((t,e)=>{const{__scopeDialog:r,...n}=t,i=js(qm,r);return V.jsx(Q_,{as:gn,allowPinchZoom:!0,shards:[i.contentRef],children:V.jsx(Wr.div,{"data-state":rx(i.open),...n,ref:e,style:{pointerEvents:"auto",...n.style}})})}),dc="DialogContent",mI=I.forwardRef((t,e)=>{const r=dI(dc,t.__scopeDialog),{forceMount:n=r.forceMount,...i}=t,s=js(dc,t.__scopeDialog);return V.jsx(Xo,{present:n||s.open,children:s.modal?V.jsx(pU,{...i,ref:e}):V.jsx(mU,{...i,ref:e})})});mI.displayName=dc;var pU=I.forwardRef((t,e)=>{const r=js(dc,t.__scopeDialog),n=I.useRef(null),i=cn(e,r.contentRef,n);return I.useEffect(()=>{const s=n.current;if(s)return aI(s)},[]),V.jsx(yI,{...t,ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:pt(t.onCloseAutoFocus,s=>{var o;s.preventDefault(),(o=r.triggerRef.current)==null||o.focus()}),onPointerDownOutside:pt(t.onPointerDownOutside,s=>{const o=s.detail.originalEvent,a=o.button===0&&o.ctrlKey===!0;(o.button===2||a)&&s.preventDefault()}),onFocusOutside:pt(t.onFocusOutside,s=>s.preventDefault())})}),mU=I.forwardRef((t,e)=>{const r=js(dc,t.__scopeDialog),n=I.useRef(!1),i=I.useRef(!1);return V.jsx(yI,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var o,a;(o=t.onCloseAutoFocus)==null||o.call(t,s),s.defaultPrevented||(n.current||(a=r.triggerRef.current)==null||a.focus(),s.preventDefault()),n.current=!1,i.current=!1},onInteractOutside:s=>{var u,c;(u=t.onInteractOutside)==null||u.call(t,s),s.defaultPrevented||(n.current=!0,s.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const o=s.target;((c=r.triggerRef.current)==null?void 0:c.contains(o))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&i.current&&s.preventDefault()}})}),yI=I.forwardRef((t,e)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:s,...o}=t,a=js(dc,r),u=I.useRef(null),c=cn(e,u);return Q3(),V.jsxs(V.Fragment,{children:[V.jsx(J_,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:s,children:V.jsx(tg,{role:"dialog",id:a.contentId,"aria-describedby":a.descriptionId,"aria-labelledby":a.titleId,"data-state":rx(a.open),...o,ref:c,onDismiss:()=>a.onOpenChange(!1)})}),V.jsxs(V.Fragment,{children:[V.jsx(gU,{titleId:a.titleId}),V.jsx(bU,{contentRef:u,descriptionId:a.descriptionId})]})]})}),tx="DialogTitle",gI=I.forwardRef((t,e)=>{const{__scopeDialog:r,...n}=t,i=js(tx,r);return V.jsx(Wr.h2,{id:i.titleId,...n,ref:e})});gI.displayName=tx;var vI="DialogDescription",yU=I.forwardRef((t,e)=>{const{__scopeDialog:r,...n}=t,i=js(vI,r);return V.jsx(Wr.p,{id:i.descriptionId,...n,ref:e})});yU.displayName=vI;var bI="DialogClose",wI=I.forwardRef((t,e)=>{const{__scopeDialog:r,...n}=t,i=js(bI,r);return V.jsx(Wr.button,{type:"button",...n,ref:e,onClick:pt(t.onClick,()=>i.onOpenChange(!1))})});wI.displayName=bI;function rx(t){return t?"open":"closed"}var _I="DialogTitleWarning",[Ppe,xI]=Q7(_I,{contentName:dc,titleName:tx,docsSlug:"dialog"}),gU=({titleId:t})=>{const e=xI(_I),r=`\`${e.contentName}\` requires a \`${e.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${e.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${e.docsSlug}`;return I.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},vU="DialogDescriptionWarning",bU=({contentRef:t,descriptionId:e})=>{const n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${xI(vU).contentName}}.`;return I.useEffect(()=>{var s;const i=(s=t.current)==null?void 0:s.getAttribute("aria-describedby");e&&i&&(document.getElementById(e)||console.warn(n))},[n,t,e]),null},wU=cI,_U=fI,xU=hI,SU=pI,EU=mI,OU=gI,CU=wI;function SI(t){var e,r,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var i=t.length;for(e=0;e{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},hc=typeof window>"u"||"Deno"in globalThis;function $i(){}function TU(t,e){return typeof t=="function"?t(e):t}function Tw(t){return typeof t=="number"&&t>=0&&t!==1/0}function EI(t,e){return Math.max(t+(e||0)-Date.now(),0)}function Al(t,e){return typeof t=="function"?t(e):t}function ms(t,e){return typeof t=="function"?t(e):t}function KO(t,e){const{type:r="all",exact:n,fetchStatus:i,predicate:s,queryKey:o,stale:a}=t;if(o){if(n){if(e.queryHash!==nx(o,e.options))return!1}else if(!Ph(e.queryKey,o))return!1}if(r!=="all"){const u=e.isActive();if(r==="active"&&!u||r==="inactive"&&u)return!1}return!(typeof a=="boolean"&&e.isStale()!==a||i&&i!==e.state.fetchStatus||s&&!s(e))}function XO(t,e){const{exact:r,status:n,predicate:i,mutationKey:s}=t;if(s){if(!e.options.mutationKey)return!1;if(r){if(pc(e.options.mutationKey)!==pc(s))return!1}else if(!Ph(e.options.mutationKey,s))return!1}return!(n&&e.state.status!==n||i&&!i(e))}function nx(t,e){return((e==null?void 0:e.queryKeyHashFn)||pc)(t)}function pc(t){return JSON.stringify(t,(e,r)=>Pw(r)?Object.keys(r).sort().reduce((n,i)=>(n[i]=r[i],n),{}):r)}function Ph(t,e){return t===e?!0:typeof t!=typeof e?!1:t&&e&&typeof t=="object"&&typeof e=="object"?!Object.keys(e).some(r=>!Ph(t[r],e[r])):!1}function OI(t,e){if(t===e)return t;const r=JO(t)&&JO(e);if(r||Pw(t)&&Pw(e)){const n=r?t:Object.keys(t),i=n.length,s=r?e:Object.keys(e),o=s.length,a=r?[]:{};let u=0;for(let c=0;c{setTimeout(e,t)})}function Iw(t,e,r){return typeof r.structuralSharing=="function"?r.structuralSharing(t,e):r.structuralSharing!==!1?OI(t,e):e}function IU(t,e,r=0){const n=[...t,e];return r&&n.length>r?n.slice(1):n}function kU(t,e,r=0){const n=[e,...t];return r&&n.length>r?n.slice(0,-1):n}var ix=Symbol();function CI(t,e){return!t.queryFn&&(e!=null&&e.initialPromise)?()=>e.initialPromise:!t.queryFn||t.queryFn===ix?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}var Hu,xa,Vl,xT,AU=(xT=class extends Tf{constructor(){super();Te(this,Hu);Te(this,xa);Te(this,Vl);le(this,Vl,e=>{if(!hc&&window.addEventListener){const r=()=>e();return window.addEventListener("visibilitychange",r,!1),()=>{window.removeEventListener("visibilitychange",r)}}})}onSubscribe(){C(this,xa)||this.setEventListener(C(this,Vl))}onUnsubscribe(){var e;this.hasListeners()||((e=C(this,xa))==null||e.call(this),le(this,xa,void 0))}setEventListener(e){var r;le(this,Vl,e),(r=C(this,xa))==null||r.call(this),le(this,xa,e(n=>{typeof n=="boolean"?this.setFocused(n):this.onFocus()}))}setFocused(e){C(this,Hu)!==e&&(le(this,Hu,e),this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach(r=>{r(e)})}isFocused(){var e;return typeof C(this,Hu)=="boolean"?C(this,Hu):((e=globalThis.document)==null?void 0:e.visibilityState)!=="hidden"}},Hu=new WeakMap,xa=new WeakMap,Vl=new WeakMap,xT),sx=new AU,Wl,Sa,Hl,ST,jU=(ST=class extends Tf{constructor(){super();Te(this,Wl,!0);Te(this,Sa);Te(this,Hl);le(this,Hl,e=>{if(!hc&&window.addEventListener){const r=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",r,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",r),window.removeEventListener("offline",n)}}})}onSubscribe(){C(this,Sa)||this.setEventListener(C(this,Hl))}onUnsubscribe(){var e;this.hasListeners()||((e=C(this,Sa))==null||e.call(this),le(this,Sa,void 0))}setEventListener(e){var r;le(this,Hl,e),(r=C(this,Sa))==null||r.call(this),le(this,Sa,e(this.setOnline.bind(this)))}setOnline(e){C(this,Wl)!==e&&(le(this,Wl,e),this.listeners.forEach(n=>{n(e)}))}isOnline(){return C(this,Wl)}},Wl=new WeakMap,Sa=new WeakMap,Hl=new WeakMap,ST),Xm=new jU;function kw(){let t,e;const r=new Promise((i,s)=>{t=i,e=s});r.status="pending",r.catch(()=>{});function n(i){Object.assign(r,i),delete r.resolve,delete r.reject}return r.resolve=i=>{n({status:"fulfilled",value:i}),t(i)},r.reject=i=>{n({status:"rejected",reason:i}),e(i)},r}function MU(t){return Math.min(1e3*2**t,3e4)}function TI(t){return(t??"online")==="online"?Xm.isOnline():!0}var PI=class extends Error{constructor(t){super("CancelledError"),this.revert=t==null?void 0:t.revert,this.silent=t==null?void 0:t.silent}};function Av(t){return t instanceof PI}function II(t){let e=!1,r=0,n=!1,i;const s=kw(),o=g=>{var x;n||(d(new PI(g)),(x=t.abort)==null||x.call(t))},a=()=>{e=!0},u=()=>{e=!1},c=()=>sx.isFocused()&&(t.networkMode==="always"||Xm.isOnline())&&t.canRun(),l=()=>TI(t.networkMode)&&t.canRun(),f=g=>{var x;n||(n=!0,(x=t.onSuccess)==null||x.call(t,g),i==null||i(),s.resolve(g))},d=g=>{var x;n||(n=!0,(x=t.onError)==null||x.call(t,g),i==null||i(),s.reject(g))},h=()=>new Promise(g=>{var x;i=_=>{(n||c())&&g(_)},(x=t.onPause)==null||x.call(t)}).then(()=>{var g;i=void 0,n||(g=t.onContinue)==null||g.call(t)}),m=()=>{if(n)return;let g;const x=r===0?t.initialPromise:void 0;try{g=x??t.fn()}catch(_){g=Promise.reject(_)}Promise.resolve(g).then(f).catch(_=>{var G;if(n)return;const S=t.retry??(hc?0:3),O=t.retryDelay??MU,D=typeof O=="function"?O(r,_):O,z=S===!0||typeof S=="number"&&rc()?void 0:h()).then(()=>{e?d(_):m()})})};return{promise:s,cancel:o,continue:()=>(i==null||i(),s),cancelRetry:a,continueRetry:u,canStart:l,start:()=>(l()?m():h().then(m),s)}}function $U(){let t=[],e=0,r=a=>{a()},n=a=>{a()},i=a=>setTimeout(a,0);const s=a=>{e?t.push(a):i(()=>{r(a)})},o=()=>{const a=t;t=[],a.length&&i(()=>{n(()=>{a.forEach(u=>{r(u)})})})};return{batch:a=>{let u;e++;try{u=a()}finally{e--,e||o()}return u},batchCalls:a=>(...u)=>{s(()=>{a(...u)})},schedule:s,setNotifyFunction:a=>{r=a},setBatchNotifyFunction:a=>{n=a},setScheduler:a=>{i=a}}}var on=$U(),Gu,ET,kI=(ET=class{constructor(){Te(this,Gu)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Tw(this.gcTime)&&le(this,Gu,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(hc?1/0:5*60*1e3))}clearGcTimeout(){C(this,Gu)&&(clearTimeout(C(this,Gu)),le(this,Gu,void 0))}},Gu=new WeakMap,ET),Gl,ql,Mi,$n,Zh,qu,is,bo,OT,NU=(OT=class extends kI{constructor(e){super();Te(this,is);Te(this,Gl);Te(this,ql);Te(this,Mi);Te(this,$n);Te(this,Zh);Te(this,qu);le(this,qu,!1),le(this,Zh,e.defaultOptions),this.setOptions(e.options),this.observers=[],le(this,Mi,e.cache),this.queryKey=e.queryKey,this.queryHash=e.queryHash,le(this,Gl,RU(this.options)),this.state=e.state??C(this,Gl),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var e;return(e=C(this,$n))==null?void 0:e.promise}setOptions(e){this.options={...C(this,Zh),...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&C(this,Mi).remove(this)}setData(e,r){const n=Iw(this.state.data,e,this.options);return be(this,is,bo).call(this,{data:n,type:"success",dataUpdatedAt:r==null?void 0:r.updatedAt,manual:r==null?void 0:r.manual}),n}setState(e,r){be(this,is,bo).call(this,{type:"setState",state:e,setStateOptions:r})}cancel(e){var n,i;const r=(n=C(this,$n))==null?void 0:n.promise;return(i=C(this,$n))==null||i.cancel(e),r?r.then($i).catch($i):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(C(this,Gl))}isActive(){return this.observers.some(e=>ms(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===ix||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(e=0){return this.state.isInvalidated||this.state.data===void 0||!EI(this.state.dataUpdatedAt,e)}onFocus(){var r;const e=this.observers.find(n=>n.shouldFetchOnWindowFocus());e==null||e.refetch({cancelRefetch:!1}),(r=C(this,$n))==null||r.continue()}onOnline(){var r;const e=this.observers.find(n=>n.shouldFetchOnReconnect());e==null||e.refetch({cancelRefetch:!1}),(r=C(this,$n))==null||r.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),C(this,Mi).notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(r=>r!==e),this.observers.length||(C(this,$n)&&(C(this,qu)?C(this,$n).cancel({revert:!0}):C(this,$n).cancelRetry()),this.scheduleGc()),C(this,Mi).notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||be(this,is,bo).call(this,{type:"invalidate"})}fetch(e,r){var u,c,l;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(r!=null&&r.cancelRefetch))this.cancel({silent:!0});else if(C(this,$n))return C(this,$n).continueRetry(),C(this,$n).promise}if(e&&this.setOptions(e),!this.options.queryFn){const f=this.observers.find(d=>d.options.queryFn);f&&this.setOptions(f.options)}const n=new AbortController,i=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(le(this,qu,!0),n.signal)})},s=()=>{const f=CI(this.options,r),d={queryKey:this.queryKey,meta:this.meta};return i(d),le(this,qu,!1),this.options.persister?this.options.persister(f,d,this):f(d)},o={fetchOptions:r,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:s};i(o),(u=this.options.behavior)==null||u.onFetch(o,this),le(this,ql,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((c=o.fetchOptions)==null?void 0:c.meta))&&be(this,is,bo).call(this,{type:"fetch",meta:(l=o.fetchOptions)==null?void 0:l.meta});const a=f=>{var d,h,m,g;Av(f)&&f.silent||be(this,is,bo).call(this,{type:"error",error:f}),Av(f)||((h=(d=C(this,Mi).config).onError)==null||h.call(d,f,this),(g=(m=C(this,Mi).config).onSettled)==null||g.call(m,this.state.data,f,this)),this.scheduleGc()};return le(this,$n,II({initialPromise:r==null?void 0:r.initialPromise,fn:o.fetchFn,abort:n.abort.bind(n),onSuccess:f=>{var d,h,m,g;if(f===void 0){a(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(f)}catch(x){a(x);return}(h=(d=C(this,Mi).config).onSuccess)==null||h.call(d,f,this),(g=(m=C(this,Mi).config).onSettled)==null||g.call(m,f,this.state.error,this),this.scheduleGc()},onError:a,onFail:(f,d)=>{be(this,is,bo).call(this,{type:"failed",failureCount:f,error:d})},onPause:()=>{be(this,is,bo).call(this,{type:"pause"})},onContinue:()=>{be(this,is,bo).call(this,{type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0})),C(this,$n).start()}},Gl=new WeakMap,ql=new WeakMap,Mi=new WeakMap,$n=new WeakMap,Zh=new WeakMap,qu=new WeakMap,is=new WeakSet,bo=function(e){const r=n=>{switch(e.type){case"failed":return{...n,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...n,fetchStatus:"paused"};case"continue":return{...n,fetchStatus:"fetching"};case"fetch":return{...n,...AI(n.data,this.options),fetchMeta:e.meta??null};case"success":return{...n,data:e.data,dataUpdateCount:n.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const i=e.error;return Av(i)&&i.revert&&C(this,ql)?{...C(this,ql),fetchStatus:"idle"}:{...n,error:i,errorUpdateCount:n.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:n.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...n,isInvalidated:!0};case"setState":return{...n,...e.state}}};this.state=r(this.state),on.batch(()=>{this.observers.forEach(n=>{n.onQueryUpdate()}),C(this,Mi).notify({query:this,type:"updated",action:e})})},OT);function AI(t,e){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:TI(e.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function RU(t){const e=typeof t.initialData=="function"?t.initialData():t.initialData,r=e!==void 0,n=r?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:r?n??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var Hs,CT,DU=(CT=class extends Tf{constructor(e={}){super();Te(this,Hs);this.config=e,le(this,Hs,new Map)}build(e,r,n){const i=r.queryKey,s=r.queryHash??nx(i,r);let o=this.get(s);return o||(o=new NU({cache:this,queryKey:i,queryHash:s,options:e.defaultQueryOptions(r),state:n,defaultOptions:e.getQueryDefaults(i)}),this.add(o)),o}add(e){C(this,Hs).has(e.queryHash)||(C(this,Hs).set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const r=C(this,Hs).get(e.queryHash);r&&(e.destroy(),r===e&&C(this,Hs).delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){on.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return C(this,Hs).get(e)}getAll(){return[...C(this,Hs).values()]}find(e){const r={exact:!0,...e};return this.getAll().find(n=>KO(r,n))}findAll(e={}){const r=this.getAll();return Object.keys(e).length>0?r.filter(n=>KO(e,n)):r}notify(e){on.batch(()=>{this.listeners.forEach(r=>{r(e)})})}onFocus(){on.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){on.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Hs=new WeakMap,CT),Gs,Ln,Ku,qs,ua,TT,BU=(TT=class extends kI{constructor(e){super();Te(this,qs);Te(this,Gs);Te(this,Ln);Te(this,Ku);this.mutationId=e.mutationId,le(this,Ln,e.mutationCache),le(this,Gs,[]),this.state=e.state||jI(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){C(this,Gs).includes(e)||(C(this,Gs).push(e),this.clearGcTimeout(),C(this,Ln).notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){le(this,Gs,C(this,Gs).filter(r=>r!==e)),this.scheduleGc(),C(this,Ln).notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){C(this,Gs).length||(this.state.status==="pending"?this.scheduleGc():C(this,Ln).remove(this))}continue(){var e;return((e=C(this,Ku))==null?void 0:e.continue())??this.execute(this.state.variables)}async execute(e){var i,s,o,a,u,c,l,f,d,h,m,g,x,_,S,O,D,z,G,K;le(this,Ku,II({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(J,fe)=>{be(this,qs,ua).call(this,{type:"failed",failureCount:J,error:fe})},onPause:()=>{be(this,qs,ua).call(this,{type:"pause"})},onContinue:()=>{be(this,qs,ua).call(this,{type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>C(this,Ln).canRun(this)}));const r=this.state.status==="pending",n=!C(this,Ku).canStart();try{if(!r){be(this,qs,ua).call(this,{type:"pending",variables:e,isPaused:n}),await((s=(i=C(this,Ln).config).onMutate)==null?void 0:s.call(i,e,this));const fe=await((a=(o=this.options).onMutate)==null?void 0:a.call(o,e));fe!==this.state.context&&be(this,qs,ua).call(this,{type:"pending",context:fe,variables:e,isPaused:n})}const J=await C(this,Ku).start();return await((c=(u=C(this,Ln).config).onSuccess)==null?void 0:c.call(u,J,e,this.state.context,this)),await((f=(l=this.options).onSuccess)==null?void 0:f.call(l,J,e,this.state.context)),await((h=(d=C(this,Ln).config).onSettled)==null?void 0:h.call(d,J,null,this.state.variables,this.state.context,this)),await((g=(m=this.options).onSettled)==null?void 0:g.call(m,J,null,e,this.state.context)),be(this,qs,ua).call(this,{type:"success",data:J}),J}catch(J){try{throw await((_=(x=C(this,Ln).config).onError)==null?void 0:_.call(x,J,e,this.state.context,this)),await((O=(S=this.options).onError)==null?void 0:O.call(S,J,e,this.state.context)),await((z=(D=C(this,Ln).config).onSettled)==null?void 0:z.call(D,void 0,J,this.state.variables,this.state.context,this)),await((K=(G=this.options).onSettled)==null?void 0:K.call(G,void 0,J,e,this.state.context)),J}finally{be(this,qs,ua).call(this,{type:"error",error:J})}}finally{C(this,Ln).runNext(this)}}},Gs=new WeakMap,Ln=new WeakMap,Ku=new WeakMap,qs=new WeakSet,ua=function(e){const r=n=>{switch(e.type){case"failed":return{...n,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...n,isPaused:!0};case"continue":return{...n,isPaused:!1};case"pending":return{...n,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...n,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...n,data:void 0,error:e.error,failureCount:n.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=r(this.state),on.batch(()=>{C(this,Gs).forEach(n=>{n.onMutationUpdate(e)}),C(this,Ln).notify({mutation:this,type:"updated",action:e})})},TT);function jI(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var di,ep,PT,UU=(PT=class extends Tf{constructor(e={}){super();Te(this,di);Te(this,ep);this.config=e,le(this,di,new Map),le(this,ep,Date.now())}build(e,r,n){const i=new BU({mutationCache:this,mutationId:++ou(this,ep)._,options:e.defaultMutationOptions(r),state:n});return this.add(i),i}add(e){const r=Zp(e),n=C(this,di).get(r)??[];n.push(e),C(this,di).set(r,n),this.notify({type:"added",mutation:e})}remove(e){var n;const r=Zp(e);if(C(this,di).has(r)){const i=(n=C(this,di).get(r))==null?void 0:n.filter(s=>s!==e);i&&(i.length===0?C(this,di).delete(r):C(this,di).set(r,i))}this.notify({type:"removed",mutation:e})}canRun(e){var n;const r=(n=C(this,di).get(Zp(e)))==null?void 0:n.find(i=>i.state.status==="pending");return!r||r===e}runNext(e){var n;const r=(n=C(this,di).get(Zp(e)))==null?void 0:n.find(i=>i!==e&&i.state.isPaused);return(r==null?void 0:r.continue())??Promise.resolve()}clear(){on.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}getAll(){return[...C(this,di).values()].flat()}find(e){const r={exact:!0,...e};return this.getAll().find(n=>XO(r,n))}findAll(e={}){return this.getAll().filter(r=>XO(e,r))}notify(e){on.batch(()=>{this.listeners.forEach(r=>{r(e)})})}resumePausedMutations(){const e=this.getAll().filter(r=>r.state.isPaused);return on.batch(()=>Promise.all(e.map(r=>r.continue().catch($i))))}},di=new WeakMap,ep=new WeakMap,PT);function Zp(t){var e;return((e=t.options.scope)==null?void 0:e.id)??String(t.mutationId)}function QO(t){return{onFetch:(e,r)=>{var l,f,d,h,m;const n=e.options,i=(d=(f=(l=e.fetchOptions)==null?void 0:l.meta)==null?void 0:f.fetchMore)==null?void 0:d.direction,s=((h=e.state.data)==null?void 0:h.pages)||[],o=((m=e.state.data)==null?void 0:m.pageParams)||[];let a={pages:[],pageParams:[]},u=0;const c=async()=>{let g=!1;const x=O=>{Object.defineProperty(O,"signal",{enumerable:!0,get:()=>(e.signal.aborted?g=!0:e.signal.addEventListener("abort",()=>{g=!0}),e.signal)})},_=CI(e.options,e.fetchOptions),S=async(O,D,z)=>{if(g)return Promise.reject();if(D==null&&O.pages.length)return Promise.resolve(O);const G={queryKey:e.queryKey,pageParam:D,direction:z?"backward":"forward",meta:e.options.meta};x(G);const K=await _(G),{maxPages:J}=e.options,fe=z?kU:IU;return{pages:fe(O.pages,K,J),pageParams:fe(O.pageParams,D,J)}};if(i&&s.length){const O=i==="backward",D=O?FU:ZO,z={pages:s,pageParams:o},G=D(n,z);a=await S(z,G,O)}else{const O=t??s.length;do{const D=u===0?o[0]??n.initialPageParam:ZO(n,a);if(u>0&&D==null)break;a=await S(a,D),u++}while(u{var g,x;return(x=(g=e.options).persister)==null?void 0:x.call(g,c,{queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},r)}:e.fetchFn=c}}}function ZO(t,{pages:e,pageParams:r}){const n=e.length-1;return e.length>0?t.getNextPageParam(e[n],e,r[n],r):void 0}function FU(t,{pages:e,pageParams:r}){var n;return e.length>0?(n=t.getPreviousPageParam)==null?void 0:n.call(t,e[0],e,r[0],r):void 0}var Br,Ea,Oa,Kl,Xl,Ca,Jl,Yl,IT,LU=(IT=class{constructor(t={}){Te(this,Br);Te(this,Ea);Te(this,Oa);Te(this,Kl);Te(this,Xl);Te(this,Ca);Te(this,Jl);Te(this,Yl);le(this,Br,t.queryCache||new DU),le(this,Ea,t.mutationCache||new UU),le(this,Oa,t.defaultOptions||{}),le(this,Kl,new Map),le(this,Xl,new Map),le(this,Ca,0)}mount(){ou(this,Ca)._++,C(this,Ca)===1&&(le(this,Jl,sx.subscribe(async t=>{t&&(await this.resumePausedMutations(),C(this,Br).onFocus())})),le(this,Yl,Xm.subscribe(async t=>{t&&(await this.resumePausedMutations(),C(this,Br).onOnline())})))}unmount(){var t,e;ou(this,Ca)._--,C(this,Ca)===0&&((t=C(this,Jl))==null||t.call(this),le(this,Jl,void 0),(e=C(this,Yl))==null||e.call(this),le(this,Yl,void 0))}isFetching(t){return C(this,Br).findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return C(this,Ea).findAll({...t,status:"pending"}).length}getQueryData(t){var r;const e=this.defaultQueryOptions({queryKey:t});return(r=C(this,Br).get(e.queryHash))==null?void 0:r.state.data}ensureQueryData(t){const e=this.getQueryData(t.queryKey);if(e===void 0)return this.fetchQuery(t);{const r=this.defaultQueryOptions(t),n=C(this,Br).build(this,r);return t.revalidateIfStale&&n.isStaleByTime(Al(r.staleTime,n))&&this.prefetchQuery(r),Promise.resolve(e)}}getQueriesData(t){return C(this,Br).findAll(t).map(({queryKey:e,state:r})=>{const n=r.data;return[e,n]})}setQueryData(t,e,r){const n=this.defaultQueryOptions({queryKey:t}),i=C(this,Br).get(n.queryHash),s=i==null?void 0:i.state.data,o=TU(e,s);if(o!==void 0)return C(this,Br).build(this,n).setData(o,{...r,manual:!0})}setQueriesData(t,e,r){return on.batch(()=>C(this,Br).findAll(t).map(({queryKey:n})=>[n,this.setQueryData(n,e,r)]))}getQueryState(t){var r;const e=this.defaultQueryOptions({queryKey:t});return(r=C(this,Br).get(e.queryHash))==null?void 0:r.state}removeQueries(t){const e=C(this,Br);on.batch(()=>{e.findAll(t).forEach(r=>{e.remove(r)})})}resetQueries(t,e){const r=C(this,Br),n={type:"active",...t};return on.batch(()=>(r.findAll(t).forEach(i=>{i.reset()}),this.refetchQueries(n,e)))}cancelQueries(t={},e={}){const r={revert:!0,...e},n=on.batch(()=>C(this,Br).findAll(t).map(i=>i.cancel(r)));return Promise.all(n).then($i).catch($i)}invalidateQueries(t={},e={}){return on.batch(()=>{if(C(this,Br).findAll(t).forEach(n=>{n.invalidate()}),t.refetchType==="none")return Promise.resolve();const r={...t,type:t.refetchType??t.type??"active"};return this.refetchQueries(r,e)})}refetchQueries(t={},e){const r={...e,cancelRefetch:(e==null?void 0:e.cancelRefetch)??!0},n=on.batch(()=>C(this,Br).findAll(t).filter(i=>!i.isDisabled()).map(i=>{let s=i.fetch(void 0,r);return r.throwOnError||(s=s.catch($i)),i.state.fetchStatus==="paused"?Promise.resolve():s}));return Promise.all(n).then($i)}fetchQuery(t){const e=this.defaultQueryOptions(t);e.retry===void 0&&(e.retry=!1);const r=C(this,Br).build(this,e);return r.isStaleByTime(Al(e.staleTime,r))?r.fetch(e):Promise.resolve(r.state.data)}prefetchQuery(t){return this.fetchQuery(t).then($i).catch($i)}fetchInfiniteQuery(t){return t.behavior=QO(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then($i).catch($i)}ensureInfiniteQueryData(t){return t.behavior=QO(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return Xm.isOnline()?C(this,Ea).resumePausedMutations():Promise.resolve()}getQueryCache(){return C(this,Br)}getMutationCache(){return C(this,Ea)}getDefaultOptions(){return C(this,Oa)}setDefaultOptions(t){le(this,Oa,t)}setQueryDefaults(t,e){C(this,Kl).set(pc(t),{queryKey:t,defaultOptions:e})}getQueryDefaults(t){const e=[...C(this,Kl).values()];let r={};return e.forEach(n=>{Ph(t,n.queryKey)&&(r={...r,...n.defaultOptions})}),r}setMutationDefaults(t,e){C(this,Xl).set(pc(t),{mutationKey:t,defaultOptions:e})}getMutationDefaults(t){const e=[...C(this,Xl).values()];let r={};return e.forEach(n=>{Ph(t,n.mutationKey)&&(r={...r,...n.defaultOptions})}),r}defaultQueryOptions(t){if(t._defaulted)return t;const e={...C(this,Oa).queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return e.queryHash||(e.queryHash=nx(e.queryKey,e)),e.refetchOnReconnect===void 0&&(e.refetchOnReconnect=e.networkMode!=="always"),e.throwOnError===void 0&&(e.throwOnError=!!e.suspense),!e.networkMode&&e.persister&&(e.networkMode="offlineFirst"),e.enabled!==!0&&e.queryFn===ix&&(e.enabled=!1),e}defaultMutationOptions(t){return t!=null&&t._defaulted?t:{...C(this,Oa).mutations,...(t==null?void 0:t.mutationKey)&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){C(this,Br).clear(),C(this,Ea).clear()}},Br=new WeakMap,Ea=new WeakMap,Oa=new WeakMap,Kl=new WeakMap,Xl=new WeakMap,Ca=new WeakMap,Jl=new WeakMap,Yl=new WeakMap,IT),Zn,Ct,tp,zn,Xu,Ql,Ta,Ks,rp,Zl,ef,Ju,Yu,Pa,tf,Gt,_d,Aw,jw,Mw,$w,Nw,Rw,Dw,MI,kT,zU=(kT=class extends Tf{constructor(e,r){super();Te(this,Gt);Te(this,Zn);Te(this,Ct);Te(this,tp);Te(this,zn);Te(this,Xu);Te(this,Ql);Te(this,Ta);Te(this,Ks);Te(this,rp);Te(this,Zl);Te(this,ef);Te(this,Ju);Te(this,Yu);Te(this,Pa);Te(this,tf,new Set);this.options=r,le(this,Zn,e),le(this,Ks,null),le(this,Ta,kw()),this.options.experimental_prefetchInRender||C(this,Ta).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(r)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(C(this,Ct).addObserver(this),eC(C(this,Ct),this.options)?be(this,Gt,_d).call(this):this.updateResult(),be(this,Gt,$w).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Bw(C(this,Ct),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Bw(C(this,Ct),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,be(this,Gt,Nw).call(this),be(this,Gt,Rw).call(this),C(this,Ct).removeObserver(this)}setOptions(e,r){const n=this.options,i=C(this,Ct);if(this.options=C(this,Zn).defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof ms(this.options.enabled,C(this,Ct))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");be(this,Gt,Dw).call(this),C(this,Ct).setOptions(this.options),n._defaulted&&!Km(this.options,n)&&C(this,Zn).getQueryCache().notify({type:"observerOptionsUpdated",query:C(this,Ct),observer:this});const s=this.hasListeners();s&&tC(C(this,Ct),i,this.options,n)&&be(this,Gt,_d).call(this),this.updateResult(r),s&&(C(this,Ct)!==i||ms(this.options.enabled,C(this,Ct))!==ms(n.enabled,C(this,Ct))||Al(this.options.staleTime,C(this,Ct))!==Al(n.staleTime,C(this,Ct)))&&be(this,Gt,Aw).call(this);const o=be(this,Gt,jw).call(this);s&&(C(this,Ct)!==i||ms(this.options.enabled,C(this,Ct))!==ms(n.enabled,C(this,Ct))||o!==C(this,Pa))&&be(this,Gt,Mw).call(this,o)}getOptimisticResult(e){const r=C(this,Zn).getQueryCache().build(C(this,Zn),e),n=this.createResult(r,e);return WU(this,n)&&(le(this,zn,n),le(this,Ql,this.options),le(this,Xu,C(this,Ct).state)),n}getCurrentResult(){return C(this,zn)}trackResult(e,r){const n={};return Object.keys(e).forEach(i=>{Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(i),r==null||r(i),e[i])})}),n}trackProp(e){C(this,tf).add(e)}getCurrentQuery(){return C(this,Ct)}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const r=C(this,Zn).defaultQueryOptions(e),n=C(this,Zn).getQueryCache().build(C(this,Zn),r);return n.fetch().then(()=>this.createResult(n,r))}fetch(e){return be(this,Gt,_d).call(this,{...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),C(this,zn)))}createResult(e,r){var J;const n=C(this,Ct),i=this.options,s=C(this,zn),o=C(this,Xu),a=C(this,Ql),c=e!==n?e.state:C(this,tp),{state:l}=e;let f={...l},d=!1,h;if(r._optimisticResults){const fe=this.hasListeners(),pe=!fe&&eC(e,r),Oe=fe&&tC(e,n,r,i);(pe||Oe)&&(f={...f,...AI(l.data,e.options)}),r._optimisticResults==="isRestoring"&&(f.fetchStatus="idle")}let{error:m,errorUpdatedAt:g,status:x}=f;if(r.select&&f.data!==void 0)if(s&&f.data===(o==null?void 0:o.data)&&r.select===C(this,rp))h=C(this,Zl);else try{le(this,rp,r.select),h=r.select(f.data),h=Iw(s==null?void 0:s.data,h,r),le(this,Zl,h),le(this,Ks,null)}catch(fe){le(this,Ks,fe)}else h=f.data;if(r.placeholderData!==void 0&&h===void 0&&x==="pending"){let fe;if(s!=null&&s.isPlaceholderData&&r.placeholderData===(a==null?void 0:a.placeholderData))fe=s.data;else if(fe=typeof r.placeholderData=="function"?r.placeholderData((J=C(this,ef))==null?void 0:J.state.data,C(this,ef)):r.placeholderData,r.select&&fe!==void 0)try{fe=r.select(fe),le(this,Ks,null)}catch(pe){le(this,Ks,pe)}fe!==void 0&&(x="success",h=Iw(s==null?void 0:s.data,fe,r),d=!0)}C(this,Ks)&&(m=C(this,Ks),h=C(this,Zl),g=Date.now(),x="error");const _=f.fetchStatus==="fetching",S=x==="pending",O=x==="error",D=S&&_,z=h!==void 0,K={status:x,fetchStatus:f.fetchStatus,isPending:S,isSuccess:x==="success",isError:O,isInitialLoading:D,isLoading:D,data:h,dataUpdatedAt:f.dataUpdatedAt,error:m,errorUpdatedAt:g,failureCount:f.fetchFailureCount,failureReason:f.fetchFailureReason,errorUpdateCount:f.errorUpdateCount,isFetched:f.dataUpdateCount>0||f.errorUpdateCount>0,isFetchedAfterMount:f.dataUpdateCount>c.dataUpdateCount||f.errorUpdateCount>c.errorUpdateCount,isFetching:_,isRefetching:_&&!S,isLoadingError:O&&!z,isPaused:f.fetchStatus==="paused",isPlaceholderData:d,isRefetchError:O&&z,isStale:ox(e,r),refetch:this.refetch,promise:C(this,Ta)};if(this.options.experimental_prefetchInRender){const fe=Ue=>{K.status==="error"?Ue.reject(K.error):K.data!==void 0&&Ue.resolve(K.data)},pe=()=>{const Ue=le(this,Ta,K.promise=kw());fe(Ue)},Oe=C(this,Ta);switch(Oe.status){case"pending":e.queryHash===n.queryHash&&fe(Oe);break;case"fulfilled":(K.status==="error"||K.data!==Oe.value)&&pe();break;case"rejected":(K.status!=="error"||K.error!==Oe.reason)&&pe();break}}return K}updateResult(e){const r=C(this,zn),n=this.createResult(C(this,Ct),this.options);if(le(this,Xu,C(this,Ct).state),le(this,Ql,this.options),C(this,Xu).data!==void 0&&le(this,ef,C(this,Ct)),Km(n,r))return;le(this,zn,n);const i={},s=()=>{if(!r)return!0;const{notifyOnChangeProps:o}=this.options,a=typeof o=="function"?o():o;if(a==="all"||!a&&!C(this,tf).size)return!0;const u=new Set(a??C(this,tf));return this.options.throwOnError&&u.add("error"),Object.keys(C(this,zn)).some(c=>{const l=c;return C(this,zn)[l]!==r[l]&&u.has(l)})};(e==null?void 0:e.listeners)!==!1&&s()&&(i.listeners=!0),be(this,Gt,MI).call(this,{...i,...e})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&be(this,Gt,$w).call(this)}},Zn=new WeakMap,Ct=new WeakMap,tp=new WeakMap,zn=new WeakMap,Xu=new WeakMap,Ql=new WeakMap,Ta=new WeakMap,Ks=new WeakMap,rp=new WeakMap,Zl=new WeakMap,ef=new WeakMap,Ju=new WeakMap,Yu=new WeakMap,Pa=new WeakMap,tf=new WeakMap,Gt=new WeakSet,_d=function(e){be(this,Gt,Dw).call(this);let r=C(this,Ct).fetch(this.options,e);return e!=null&&e.throwOnError||(r=r.catch($i)),r},Aw=function(){be(this,Gt,Nw).call(this);const e=Al(this.options.staleTime,C(this,Ct));if(hc||C(this,zn).isStale||!Tw(e))return;const n=EI(C(this,zn).dataUpdatedAt,e)+1;le(this,Ju,setTimeout(()=>{C(this,zn).isStale||this.updateResult()},n))},jw=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(C(this,Ct)):this.options.refetchInterval)??!1},Mw=function(e){be(this,Gt,Rw).call(this),le(this,Pa,e),!(hc||ms(this.options.enabled,C(this,Ct))===!1||!Tw(C(this,Pa))||C(this,Pa)===0)&&le(this,Yu,setInterval(()=>{(this.options.refetchIntervalInBackground||sx.isFocused())&&be(this,Gt,_d).call(this)},C(this,Pa)))},$w=function(){be(this,Gt,Aw).call(this),be(this,Gt,Mw).call(this,be(this,Gt,jw).call(this))},Nw=function(){C(this,Ju)&&(clearTimeout(C(this,Ju)),le(this,Ju,void 0))},Rw=function(){C(this,Yu)&&(clearInterval(C(this,Yu)),le(this,Yu,void 0))},Dw=function(){const e=C(this,Zn).getQueryCache().build(C(this,Zn),this.options);if(e===C(this,Ct))return;const r=C(this,Ct);le(this,Ct,e),le(this,tp,e.state),this.hasListeners()&&(r==null||r.removeObserver(this),e.addObserver(this))},MI=function(e){on.batch(()=>{e.listeners&&this.listeners.forEach(r=>{r(C(this,zn))}),C(this,Zn).getQueryCache().notify({query:C(this,Ct),type:"observerResultsUpdated"})})},kT);function VU(t,e){return ms(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function eC(t,e){return VU(t,e)||t.state.data!==void 0&&Bw(t,e,e.refetchOnMount)}function Bw(t,e,r){if(ms(e.enabled,t)!==!1){const n=typeof r=="function"?r(t):r;return n==="always"||n!==!1&&ox(t,e)}return!1}function tC(t,e,r,n){return(t!==e||ms(n.enabled,t)===!1)&&(!r.suspense||t.state.status!=="error")&&ox(t,r)}function ox(t,e){return ms(e.enabled,t)!==!1&&t.isStaleByTime(Al(e.staleTime,t))}function WU(t,e){return!Km(t.getCurrentResult(),e)}var Ia,ka,ei,ko,Uo,A0,Uw,AT,HU=(AT=class extends Tf{constructor(r,n){super();Te(this,Uo);Te(this,Ia);Te(this,ka);Te(this,ei);Te(this,ko);le(this,Ia,r),this.setOptions(n),this.bindMethods(),be(this,Uo,A0).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(r){var i;const n=this.options;this.options=C(this,Ia).defaultMutationOptions(r),Km(this.options,n)||C(this,Ia).getMutationCache().notify({type:"observerOptionsUpdated",mutation:C(this,ei),observer:this}),n!=null&&n.mutationKey&&this.options.mutationKey&&pc(n.mutationKey)!==pc(this.options.mutationKey)?this.reset():((i=C(this,ei))==null?void 0:i.state.status)==="pending"&&C(this,ei).setOptions(this.options)}onUnsubscribe(){var r;this.hasListeners()||(r=C(this,ei))==null||r.removeObserver(this)}onMutationUpdate(r){be(this,Uo,A0).call(this),be(this,Uo,Uw).call(this,r)}getCurrentResult(){return C(this,ka)}reset(){var r;(r=C(this,ei))==null||r.removeObserver(this),le(this,ei,void 0),be(this,Uo,A0).call(this),be(this,Uo,Uw).call(this)}mutate(r,n){var i;return le(this,ko,n),(i=C(this,ei))==null||i.removeObserver(this),le(this,ei,C(this,Ia).getMutationCache().build(C(this,Ia),this.options)),C(this,ei).addObserver(this),C(this,ei).execute(r)}},Ia=new WeakMap,ka=new WeakMap,ei=new WeakMap,ko=new WeakMap,Uo=new WeakSet,A0=function(){var n;const r=((n=C(this,ei))==null?void 0:n.state)??jI();le(this,ka,{...r,isPending:r.status==="pending",isSuccess:r.status==="success",isError:r.status==="error",isIdle:r.status==="idle",mutate:this.mutate,reset:this.reset})},Uw=function(r){on.batch(()=>{var n,i,s,o,a,u,c,l;if(C(this,ko)&&this.hasListeners()){const f=C(this,ka).variables,d=C(this,ka).context;(r==null?void 0:r.type)==="success"?((i=(n=C(this,ko)).onSuccess)==null||i.call(n,r.data,f,d),(o=(s=C(this,ko)).onSettled)==null||o.call(s,r.data,null,f,d)):(r==null?void 0:r.type)==="error"&&((u=(a=C(this,ko)).onError)==null||u.call(a,r.error,f,d),(l=(c=C(this,ko)).onSettled)==null||l.call(c,void 0,r.error,f,d))}this.listeners.forEach(f=>{f(C(this,ka))})})},AT),$I=I.createContext(void 0),NI=t=>{const e=I.useContext($I);if(!e)throw new Error("No QueryClient set, use QueryClientProvider to set one");return e},GU=({client:t,children:e})=>(I.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),V.jsx($I.Provider,{value:t,children:e})),RI=I.createContext(!1),qU=()=>I.useContext(RI);RI.Provider;function KU(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var XU=I.createContext(KU()),JU=()=>I.useContext(XU);function DI(t,e){return typeof t=="function"?t(...e):!!t}function Fw(){}var YU=(t,e)=>{(t.suspense||t.throwOnError||t.experimental_prefetchInRender)&&(e.isReset()||(t.retryOnMount=!1))},QU=t=>{I.useEffect(()=>{t.clearReset()},[t])},ZU=({result:t,errorResetBoundary:e,throwOnError:r,query:n})=>t.isError&&!e.isReset()&&!t.isFetching&&n&&DI(r,[t.error,n]),eF=t=>{t.suspense&&(t.staleTime===void 0&&(t.staleTime=1e3),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3)))},tF=(t,e)=>t.isLoading&&t.isFetching&&!e,rF=(t,e)=>(t==null?void 0:t.suspense)&&e.isPending,rC=(t,e,r)=>e.fetchOptimistic(t).catch(()=>{r.clearReset()});function nF(t,e,r){var l,f,d,h,m;const n=NI(),i=qU(),s=JU(),o=n.defaultQueryOptions(t);(f=(l=n.getDefaultOptions().queries)==null?void 0:l._experimental_beforeQuery)==null||f.call(l,o),o._optimisticResults=i?"isRestoring":"optimistic",eF(o),YU(o,s),QU(s);const a=!n.getQueryCache().get(o.queryHash),[u]=I.useState(()=>new e(n,o)),c=u.getOptimisticResult(o);if(I.useSyncExternalStore(I.useCallback(g=>{const x=i?Fw:u.subscribe(on.batchCalls(g));return u.updateResult(),x},[u,i]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),I.useEffect(()=>{u.setOptions(o,{listeners:!1})},[o,u]),rF(o,c))throw rC(o,u,s);if(ZU({result:c,errorResetBoundary:s,throwOnError:o.throwOnError,query:n.getQueryCache().get(o.queryHash)}))throw c.error;if((h=(d=n.getDefaultOptions().queries)==null?void 0:d._experimental_afterQuery)==null||h.call(d,o,c),o.experimental_prefetchInRender&&!hc&&tF(c,i)){const g=a?rC(o,u,s):(m=n.getQueryCache().get(o.queryHash))==null?void 0:m.promise;g==null||g.catch(Fw).finally(()=>{u.updateResult()})}return o.notifyOnChangeProps?c:u.trackResult(c)}function BI(t,e){return nF(t,zU)}function lp(t,e){const r=NI(),[n]=I.useState(()=>new HU(r,t));I.useEffect(()=>{n.setOptions(t)},[n,t]);const i=I.useSyncExternalStore(I.useCallback(o=>n.subscribe(on.batchCalls(o)),[n]),()=>n.getCurrentResult(),()=>n.getCurrentResult()),s=I.useCallback((o,a)=>{n.mutate(o,a).catch(Fw)},[n]);if(i.error&&DI(n.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:s,mutateAsync:i.mutate}}const iF={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},nC=t=>{let e;const r=new Set,n=(l,f)=>{const d=typeof l=="function"?l(e):l;if(!Object.is(d,e)){const h=e;e=f??(typeof d!="object"||d===null)?d:Object.assign({},e,d),r.forEach(m=>m(e,h))}},i=()=>e,u={setState:n,getState:i,getInitialState:()=>c,subscribe:l=>(r.add(l),()=>r.delete(l)),destroy:()=>{(iF?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},c=e=t(n,i,u);return u},sF=t=>t?nC(t):nC;var UI={exports:{}},FI={},LI={exports:{}},zI={};/** + * @license React + * use-sync-external-store-shim.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 pf=I;function oF(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var aF=typeof Object.is=="function"?Object.is:oF,uF=pf.useState,cF=pf.useEffect,lF=pf.useLayoutEffect,fF=pf.useDebugValue;function dF(t,e){var r=e(),n=uF({inst:{value:r,getSnapshot:e}}),i=n[0].inst,s=n[1];return lF(function(){i.value=r,i.getSnapshot=e,jv(i)&&s({inst:i})},[t,r,e]),cF(function(){return jv(i)&&s({inst:i}),t(function(){jv(i)&&s({inst:i})})},[t]),fF(r),r}function jv(t){var e=t.getSnapshot;t=t.value;try{var r=e();return!aF(t,r)}catch{return!0}}function hF(t,e){return e()}var pF=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?hF:dF;zI.useSyncExternalStore=pf.useSyncExternalStore!==void 0?pf.useSyncExternalStore:pF;LI.exports=zI;var mF=LI.exports;/** + * @license React + * use-sync-external-store-shim/with-selector.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 ng=I,yF=mF;function gF(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var vF=typeof Object.is=="function"?Object.is:gF,bF=yF.useSyncExternalStore,wF=ng.useRef,_F=ng.useEffect,xF=ng.useMemo,SF=ng.useDebugValue;FI.useSyncExternalStoreWithSelector=function(t,e,r,n,i){var s=wF(null);if(s.current===null){var o={hasValue:!1,value:null};s.current=o}else o=s.current;s=xF(function(){function u(h){if(!c){if(c=!0,l=h,h=n(h),i!==void 0&&o.hasValue){var m=o.value;if(i(m,h))return f=m}return f=h}if(m=f,vF(l,h))return m;var g=n(h);return i!==void 0&&i(m,g)?m:(l=h,f=g)}var c=!1,l,f,d=r===void 0?null:r;return[function(){return u(e())},d===null?void 0:function(){return u(d())}]},[e,r,n,i]);var a=bF(t,s[0],s[1]);return _F(function(){o.hasValue=!0,o.value=a},[a]),SF(a),a};UI.exports=FI;var EF=UI.exports;const OF=Sf(EF),CF={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},{useDebugValue:TF}=Ws,{useSyncExternalStoreWithSelector:PF}=OF;let iC=!1;const IF=t=>t;function kF(t,e=IF,r){(CF?"production":void 0)!=="production"&&r&&!iC&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),iC=!0);const n=PF(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,r);return TF(n),n}var AF=function(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)},jF=function(t,e,r,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(t,r):i?i.value=r:e.set(t,r),r},j0;let ed;const ig=new Set;function MF(t){Gd=void 0,ig.add(t)}function $F(t){Gd=void 0,ig.delete(t)}const yl={};function sg(){if(ed||(ed=Object.freeze({register:sC,get:NF,on:RF}),typeof window>"u"))return ed;const t=Object.freeze({register:sC});try{window.addEventListener("wallet-standard:register-wallet",({detail:e})=>e(t))}catch(e){console.error(`wallet-standard:register-wallet event listener could not be added +`,e)}try{window.dispatchEvent(new DF(t))}catch(e){console.error(`wallet-standard:app-ready event could not be dispatched +`,e)}return ed}function sC(...t){var e;return t=t.filter(r=>!ig.has(r)),t.length?(t.forEach(r=>MF(r)),(e=yl.register)==null||e.forEach(r=>oC(()=>r(...t))),function(){var n;t.forEach(i=>$F(i)),(n=yl.unregister)==null||n.forEach(i=>oC(()=>i(...t)))}):()=>{}}let Gd;function NF(){return Gd||(Gd=[...ig]),Gd}function RF(t,e){var r;return(r=yl[t])!=null&&r.push(e)||(yl[t]=[e]),function(){var i;yl[t]=(i=yl[t])==null?void 0:i.filter(s=>e!==s)}}function oC(t){try{t()}catch(e){console.error(e)}}class DF extends Event{get detail(){return AF(this,j0,"f")}get type(){return"wallet-standard:app-ready"}constructor(e){super("wallet-standard:app-ready",{bubbles:!1,cancelable:!1,composed:!1}),j0.set(this,void 0),jF(this,j0,e,"f")}preventDefault(){throw new Error("preventDefault cannot be called")}stopImmediatePropagation(){throw new Error("stopImmediatePropagation cannot be called")}stopPropagation(){throw new Error("stopPropagation cannot be called")}}j0=new WeakMap;var $c=function(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)},Nc=function(t,e,r,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(t,r):i?i.value=r:e.set(t,r),r},M0,$0,N0,R0,D0,B0;class og{get address(){return $c(this,M0,"f")}get publicKey(){return $c(this,$0,"f").slice()}get chains(){return $c(this,N0,"f").slice()}get features(){return $c(this,R0,"f").slice()}get label(){return $c(this,D0,"f")}get icon(){return $c(this,B0,"f")}constructor(e){M0.set(this,void 0),$0.set(this,void 0),N0.set(this,void 0),R0.set(this,void 0),D0.set(this,void 0),B0.set(this,void 0),new.target===og&&Object.freeze(this),Nc(this,M0,e.address,"f"),Nc(this,$0,e.publicKey.slice(),"f"),Nc(this,N0,e.chains.slice(),"f"),Nc(this,R0,e.features.slice(),"f"),Nc(this,D0,e.label,"f"),Nc(this,B0,e.icon,"f")}}M0=new WeakMap,$0=new WeakMap,N0=new WeakMap,R0=new WeakMap,D0=new WeakMap,B0=new WeakMap;function BF(t){if(t.length>=255)throw new TypeError("Alphabet too long");const e=new Uint8Array(256);for(let c=0;c>>0,g=new Uint8Array(m);for(;d!==h;){let S=c[d],O=0;for(let D=m-1;(S!==0||O>>0,g[D]=S%r>>>0,S=S/r>>>0;if(S!==0)throw new Error("Non-zero carry");f=O,d++}let x=m-f;for(;x!==m&&g[x]===0;)x++;let _=n.repeat(l);for(;x>>0,m=new Uint8Array(h);for(;c[l];){let S=e[c.charCodeAt(l)];if(S===255)return;let O=0;for(let D=h-1;(S!==0||O>>0,m[D]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");d=O,l++}let g=h-d;for(;g!==h&&m[g]===0;)g++;const x=new Uint8Array(f+(h-g));let _=f;for(;g!==h;)x[_++]=m[g++];return x}function u(c){const l=a(c);if(l)return l;throw new Error("Non-base"+r+" character")}return{encode:o,decodeUnsafe:a,decode:u}}var UF="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";const VI=BF(UF),Pf=t=>VI.encode(t),qa=t=>VI.decode(t),FF=Pf,LF=qa;function yn(t){return Uint8Array.from(atob(t),e=>e.charCodeAt(0))}const Mv=8192;function zt(t){if(t.lengthparseInt(s,16)))??[];return Uint8Array.from(n)}function Ka(t){return t.reduce((e,r)=>e+r.toString(16).padStart(2,"0"),"")}const WF=Ka,HF=If;function ax(t){let e=[],r=0;if(t===0)return[0];for(;t>0;)e[r]=t&127,(t>>=7)&&(e[r]|=128),r+=1;return e}function GF(t){let e=0,r=0,n=0;for(;;){let i=t[n];if(n+=1,e|=(i&127)<"]){const[r,n]=e,i=[];let s="",o=0;for(let a=0;athis.size){const n=Math.min(this.maxSize,this.size+this.allocateSize);if(r>n)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${r}`);this.size=n;const i=new ArrayBuffer(this.size);new Uint8Array(i).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(i)}}shift(e){return this.bytePosition+=e,this}write8(e){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(e)),this.shift(1)}write16(e){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(e),!0),this.shift(2)}write32(e){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(e),!0),this.shift(4)}write64(e){return $v(BigInt(e),8).forEach(r=>this.write8(r)),this}write128(e){return $v(BigInt(e),16).forEach(r=>this.write8(r)),this}write256(e){return $v(BigInt(e),32).forEach(r=>this.write8(r)),this}writeULEB(e){return ax(e).forEach(r=>this.write8(r)),this}writeVec(e,r){return this.writeULEB(e.length),Array.from(e).forEach((n,i)=>r(this,n,i,e.length)),this}*[Symbol.iterator](){for(let e=0;e0;)r[n]=Number(t%BigInt(256)),t=t/BigInt(256),n+=1;return r}var KI=t=>{throw TypeError(t)},XI=(t,e,r)=>e.has(t)||KI("Cannot "+r),ys=(t,e,r)=>(XI(t,e,"read from private field"),r?r.call(t):e.get(t)),Jm=(t,e,r)=>e.has(t)?KI("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Ym=(t,e,r,n)=>(XI(t,e,"write to private field"),e.set(t,r),r),qc,xd,U0,ca;const KF=class JI{constructor(e){Jm(this,qc),Jm(this,xd),this.name=e.name,this.read=e.read,this.serializedSize=e.serializedSize??(()=>null),Ym(this,qc,e.write),Ym(this,xd,e.serialize??((r,n)=>{const i=new qI({initialSize:this.serializedSize(r)??void 0,...n});return ys(this,qc).call(this,r,i),i.toBytes()})),this.validate=e.validate??(()=>{})}write(e,r){this.validate(e),ys(this,qc).call(this,e,r)}serialize(e,r){return this.validate(e),new QI(this,ys(this,xd).call(this,e,r))}parse(e){const r=new WI(e);return this.read(r)}fromHex(e){return this.parse(If(e))}fromBase58(e){return this.parse(qa(e))}fromBase64(e){return this.parse(yn(e))}transform({name:e,input:r,output:n,validate:i}){return new JI({name:e??this.name,read:s=>n(this.read(s)),write:(s,o)=>ys(this,qc).call(this,r(s),o),serializedSize:s=>this.serializedSize(r(s)),serialize:(s,o)=>ys(this,xd).call(this,r(s),o),validate:s=>{i==null||i(s),this.validate(r(s))}})}};qc=new WeakMap;xd=new WeakMap;let Ys=KF;const YI=Symbol.for("@mysten/serialized-bcs");function ag(t){return!!t&&typeof t=="object"&&t[YI]===!0}let QI=class{constructor(e,r){Jm(this,U0),Jm(this,ca),Ym(this,U0,e),Ym(this,ca,r)}get[YI](){return!0}toBytes(){return ys(this,ca)}toHex(){return Ka(ys(this,ca))}toBase64(){return zt(ys(this,ca))}toBase58(){return Pf(ys(this,ca))}parse(){return ys(this,U0).parse(ys(this,ca))}};U0=new WeakMap;ca=new WeakMap;function Qm({size:t,...e}){return new Ys({...e,serializedSize:()=>t})}function Nv({readMethod:t,writeMethod:e,...r}){return Qm({...r,read:n=>n[t](),write:(n,i)=>i[e](n),validate:n=>{var i;if(n<0||n>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${n}. Expected value in range 0-${r.maxValue}`);(i=r.validate)==null||i.call(r,n)}})}function Rv({readMethod:t,writeMethod:e,...r}){return Qm({...r,read:n=>n[t](),write:(n,i)=>i[e](BigInt(n)),validate:n=>{var s;const i=BigInt(n);if(i<0||i>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${i}. Expected value in range 0-${r.maxValue}`);(s=r.validate)==null||s.call(r,i)}})}function XF({serialize:t,...e}){const r=new Ys({...e,serialize:t,write:(n,i)=>{for(const s of r.serialize(n).toBytes())i.write8(s)}});return r}function JF({toBytes:t,fromBytes:e,...r}){return new Ys({...r,read:n=>{const i=n.readULEB(),s=n.readBytes(i);return e(s)},write:(n,i)=>{const s=t(n);i.writeULEB(s.length);for(let o=0;o{const i=t(n),s=ax(i.length),o=new Uint8Array(s.length+i.length);return o.set(s,0),o.set(i,s.length),o},validate:n=>{var i;if(typeof n!="string")throw new TypeError(`Invalid ${r.name} value: ${n}. Expected string`);(i=r.validate)==null||i.call(r,n)}})}function YF(t){let e=null;function r(){return e||(e=t()),e}return new Ys({name:"lazy",read:n=>r().read(n),serializedSize:n=>r().serializedSize(n),write:(n,i)=>r().write(n,i),serialize:(n,i)=>r().serialize(n,i).toBytes()})}const H={u8(t){return Nv({name:"u8",readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...t})},u16(t){return Nv({name:"u16",readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...t})},u32(t){return Nv({name:"u32",readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...t})},u64(t){return Rv({name:"u64",readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...t})},u128(t){return Rv({name:"u128",readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...t})},u256(t){return Rv({name:"u256",readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...t})},bool(t){return Qm({name:"bool",size:1,read:e=>e.read8()===1,write:(e,r)=>r.write8(e?1:0),...t,validate:e=>{var r;if((r=t==null?void 0:t.validate)==null||r.call(t,e),typeof e!="boolean")throw new TypeError(`Expected boolean, found ${typeof e}`)}})},uleb128(t){return XF({name:"uleb128",read:e=>e.readULEB(),serialize:e=>Uint8Array.from(ax(e)),...t})},bytes(t,e){return Qm({name:`bytes[${t}]`,size:t,read:r=>r.readBytes(t),write:(r,n)=>{for(let i=0;i{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!r||typeof r!="object"||!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t)throw new TypeError(`Expected array of length ${t}, found ${r.length}`)}})},string(t){return JF({name:"string",toBytes:e=>new TextEncoder().encode(e),fromBytes:e=>new TextDecoder().decode(e),...t})},fixedArray(t,e,r){return new Ys({name:`${e.name}[${t}]`,read:n=>{const i=new Array(t);for(let s=0;s{for(const s of n)e.write(s,i)},...r,validate:n=>{var i;if((i=r==null?void 0:r.validate)==null||i.call(r,n),!n||typeof n!="object"||!("length"in n))throw new TypeError(`Expected array, found ${typeof n}`);if(n.length!==t)throw new TypeError(`Expected array of length ${t}, found ${n.length}`)}})},option(t){return H.enum(`Option<${t.name}>`,{None:null,Some:t}).transform({input:e=>e==null?{None:!0}:{Some:e},output:e=>e.$kind==="Some"?e.Some:null})},vector(t,e){return new Ys({name:`vector<${t.name}>`,read:r=>{const n=r.readULEB(),i=new Array(n);for(let s=0;s{n.writeULEB(r.length);for(const i of r)t.write(i,n)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!r||typeof r!="object"||!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`)}})},tuple(t,e){return new Ys({name:`(${t.map(r=>r.name).join(", ")})`,serializedSize:r=>{let n=0;for(let i=0;i{const n=[];for(const i of t)n.push(i.read(r));return n},write:(r,n)=>{for(let i=0;i{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!Array.isArray(r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t.length)throw new TypeError(`Expected array of length ${t.length}, found ${r.length}`)}})},struct(t,e,r){const n=Object.entries(e);return new Ys({name:t,serializedSize:i=>{let s=0;for(const[o,a]of n){const u=a.serializedSize(i[o]);if(u==null)return null;s+=u}return s},read:i=>{const s={};for(const[o,a]of n)s[o]=a.read(i);return s},write:(i,s)=>{for(const[o,a]of n)a.write(i[o],s)},...r,validate:i=>{var s;if((s=r==null?void 0:r.validate)==null||s.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})},enum(t,e,r){const n=Object.entries(e);return new Ys({name:t,read:i=>{const s=i.readULEB(),o=n[s];if(!o)throw new TypeError(`Unknown value ${s} for enum ${t}`);const[a,u]=o;return{[a]:(u==null?void 0:u.read(i))??!0,$kind:a}},write:(i,s)=>{const[o,a]=Object.entries(i).filter(([u])=>Object.hasOwn(e,u))[0];for(let u=0;u{var a;if((a=r==null?void 0:r.validate)==null||a.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`);const s=Object.keys(i).filter(u=>i[u]!==void 0&&Object.hasOwn(e,u));if(s.length!==1)throw new TypeError(`Expected object with one key, but found ${s.length} for type ${t}}`);const[o]=s;if(!Object.hasOwn(e,o))throw new TypeError(`Invalid enum variant ${o}`)}})},map(t,e){return H.vector(H.tuple([t,e])).transform({name:`Map<${t.name}, ${e.name}>`,input:r=>[...r.entries()],output:r=>{const n=new Map;for(const[i,s]of r)n.set(i,s);return n}})},lazy(t){return YF(t)}},QF=Object.freeze(Object.defineProperty({__proto__:null,BcsReader:WI,BcsType:Ys,BcsWriter:qI,SerializedBcs:QI,bcs:H,decodeStr:qF,encodeStr:HI,fromB58:LF,fromB64:VF,fromBase58:qa,fromBase64:yn,fromHEX:HF,fromHex:If,isSerializedBcs:ag,splitGenericParameters:GI,toB58:FF,toB64:zF,toBase58:Pf,toBase64:zt,toHEX:WF,toHex:Ka},Symbol.toStringTag,{value:"Module"})),ZF=32;function aC(t){try{return qa(t).length===ZF}catch{return!1}}const ug=32;function Oo(t){return eL(t)&&tL(t)===ug}function e0(t){return Oo(t)}function Jt(t,e=!1){let r=t.toLowerCase();return!e&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(ug*2,"0")}`}function $o(t,e=!1){return Jt(t,e)}function eL(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function tL(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}const rL=/^vector<(.+)>$/,nL=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;let Zm=class Kc{static parseFromStr(e,r=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const n=e.match(rL);if(n)return{vector:Kc.parseFromStr(n[1],r)};const i=e.match(nL);if(i)return{struct:{address:r?Jt(i[1]):i[1],module:i[2],name:i[3],typeParams:i[5]===void 0?[]:Kc.parseStructTypeArgs(i[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,r=!1){return GI(e).map(n=>Kc.parseFromStr(n,r))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${Kc.tagToString(e.vector)}>`;if("struct"in e){const r=e.struct,n=r.typeParams.map(Kc.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${n?`<${n}>`:""}`}throw new Error("Invalid TypeTag")}};function iL(t){return H.u64({name:"unsafe_u64",...t}).transform({input:e=>e,output:e=>Number(e)})}function sL(t){return H.enum("Option",{None:null,Some:t})}const Tr=H.bytes(ug).transform({validate:t=>{const e=typeof t=="string"?t:Ka(t);if(!e||!Oo(Jt(e)))throw new Error(`Invalid Sui address ${e}`)},input:t=>typeof t=="string"?If(Jt(t)):t,output:t=>Jt(Ka(t))}),xs=H.vector(H.u8()).transform({name:"ObjectDigest",input:t=>qa(t),output:t=>Pf(new Uint8Array(t)),validate:t=>{if(qa(t).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),Ni=H.struct("SuiObjectRef",{objectId:Tr,version:H.u64(),digest:xs}),ZI=H.struct("SharedObjectRef",{objectId:Tr,initialSharedVersion:H.u64(),mutable:H.bool()}),e4=H.enum("ObjectArg",{ImmOrOwnedObject:Ni,SharedObject:ZI,Receiving:Ni}),t4=H.enum("CallArg",{Pure:H.struct("Pure",{bytes:H.vector(H.u8()).transform({input:t=>typeof t=="string"?yn(t):t,output:t=>zt(new Uint8Array(t))})}),Object:e4}),ux=H.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:H.lazy(()=>ux),struct:H.lazy(()=>a4),u16:null,u32:null,u256:null}),cx=ux.transform({input:t=>typeof t=="string"?Zm.parseFromStr(t,!0):t,output:t=>Zm.tagToString(t)}),zs=H.enum("Argument",{GasCoin:null,Input:H.u16(),Result:H.u16(),NestedResult:H.tuple([H.u16(),H.u16()])}),r4=H.struct("ProgrammableMoveCall",{package:Tr,module:H.string(),function:H.string(),typeArguments:H.vector(cx),arguments:H.vector(zs)}),n4=H.enum("Command",{MoveCall:r4,TransferObjects:H.struct("TransferObjects",{objects:H.vector(zs),address:zs}),SplitCoins:H.struct("SplitCoins",{coin:zs,amounts:H.vector(zs)}),MergeCoins:H.struct("MergeCoins",{destination:zs,sources:H.vector(zs)}),Publish:H.struct("Publish",{modules:H.vector(H.vector(H.u8()).transform({input:t=>typeof t=="string"?yn(t):t,output:t=>zt(new Uint8Array(t))})),dependencies:H.vector(Tr)}),MakeMoveVec:H.struct("MakeMoveVec",{type:sL(cx).transform({input:t=>t===null?{None:!0}:{Some:t},output:t=>t.Some??null}),elements:H.vector(zs)}),Upgrade:H.struct("Upgrade",{modules:H.vector(H.vector(H.u8()).transform({input:t=>typeof t=="string"?yn(t):t,output:t=>zt(new Uint8Array(t))})),dependencies:H.vector(Tr),package:Tr,ticket:zs})}),i4=H.struct("ProgrammableTransaction",{inputs:H.vector(t4),commands:H.vector(n4)}),s4=H.enum("TransactionKind",{ProgrammableTransaction:i4,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),o4=H.enum("TransactionExpiration",{None:null,Epoch:iL()}),a4=H.struct("StructTag",{address:Tr,module:H.string(),name:H.string(),typeParams:H.vector(ux)}),u4=H.struct("GasData",{payment:H.vector(Ni),owner:Tr,price:H.u64(),budget:H.u64()}),c4=H.struct("TransactionDataV1",{kind:s4,sender:Tr,gasData:u4,expiration:o4}),l4=H.enum("TransactionData",{V1:c4}),f4=H.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),d4=H.enum("IntentVersion",{V0:null}),h4=H.enum("AppId",{Sui:null}),p4=H.struct("Intent",{scope:f4,version:d4,appId:h4});function m4(t){return H.struct(`IntentMessage<${t.name}>`,{intent:p4,value:t})}const y4=H.enum("CompressedSignature",{ED25519:H.fixedArray(64,H.u8()),Secp256k1:H.fixedArray(64,H.u8()),Secp256r1:H.fixedArray(64,H.u8()),ZkLogin:H.vector(H.u8())}),g4=H.enum("PublicKey",{ED25519:H.fixedArray(32,H.u8()),Secp256k1:H.fixedArray(33,H.u8()),Secp256r1:H.fixedArray(33,H.u8()),ZkLogin:H.vector(H.u8())}),v4=H.struct("MultiSigPkMap",{pubKey:g4,weight:H.u8()}),b4=H.struct("MultiSigPublicKey",{pk_map:H.vector(v4),threshold:H.u16()}),oL=H.struct("MultiSig",{sigs:H.vector(y4),bitmap:H.u16(),multisig_pk:b4}),aL=H.vector(H.u8()).transform({input:t=>typeof t=="string"?yn(t):t,output:t=>zt(new Uint8Array(t))}),w4=H.struct("SenderSignedTransaction",{intentMessage:m4(l4),txSignatures:H.vector(aL)}),uL=H.vector(w4,{name:"SenderSignedData"}),cL=H.enum("PackageUpgradeError",{UnableToFetchPackage:H.struct("UnableToFetchPackage",{packageId:Tr}),NotAPackage:H.struct("NotAPackage",{objectId:Tr}),IncompatibleUpgrade:null,DigestDoesNotMatch:H.struct("DigestDoesNotMatch",{digest:H.vector(H.u8())}),UnknownUpgradePolicy:H.struct("UnknownUpgradePolicy",{policy:H.u8()}),PackageIDDoesNotMatch:H.struct("PackageIDDoesNotMatch",{packageId:Tr,ticketId:Tr})}),lL=H.struct("ModuleId",{address:Tr,name:H.string()}),uC=H.struct("MoveLocation",{module:lL,function:H.u16(),instruction:H.u16(),functionName:H.option(H.string())}),fL=H.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:H.struct("IndexOutOfBounds",{idx:H.u16()}),SecondaryIndexOutOfBounds:H.struct("SecondaryIndexOutOfBounds",{resultIdx:H.u16(),secondaryIdx:H.u16()}),InvalidResultArity:H.struct("InvalidResultArity",{resultIdx:H.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),dL=H.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),hL=H.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:H.struct("MoveObjectTooBig",{objectSize:H.u64(),maxObjectSize:H.u64()}),MovePackageTooBig:H.struct("MovePackageTooBig",{objectSize:H.u64(),maxObjectSize:H.u64()}),CircularObjectOwnership:H.struct("CircularObjectOwnership",{object:Tr}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:H.option(uC),MoveAbort:H.tuple([uC,H.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:H.struct("CommandArgumentError",{argIdx:H.u16(),kind:fL}),TypeArgumentError:H.struct("TypeArgumentError",{argumentIdx:H.u16(),kind:dL}),UnusedValueWithoutDrop:H.struct("UnusedValueWithoutDrop",{resultIdx:H.u16(),secondaryIdx:H.u16()}),InvalidPublicFunctionReturnType:H.struct("InvalidPublicFunctionReturnType",{idx:H.u16()}),InvalidTransferObject:null,EffectsTooLarge:H.struct("EffectsTooLarge",{currentSize:H.u64(),maxSize:H.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:H.struct("PackageUpgradeError",{upgradeError:cL}),WrittenObjectsTooLarge:H.struct("WrittenObjectsTooLarge",{currentSize:H.u64(),maxSize:H.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:H.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:H.vector(Tr)}),AddressDeniedForCoin:H.struct("AddressDeniedForCoin",{address:Tr,coinType:H.string()}),CoinTypeGlobalPause:H.struct("CoinTypeGlobalPause",{coinType:H.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),_4=H.enum("ExecutionStatus",{Success:null,Failed:H.struct("ExecutionFailed",{error:hL,command:H.option(H.u64())})}),x4=H.struct("GasCostSummary",{computationCost:H.u64(),storageCost:H.u64(),storageRebate:H.u64(),nonRefundableStorageFee:H.u64()}),gl=H.enum("Owner",{AddressOwner:Tr,ObjectOwner:Tr,Shared:H.struct("Shared",{initialSharedVersion:H.u64()}),Immutable:null}),pL=H.struct("TransactionEffectsV1",{status:_4,executedEpoch:H.u64(),gasUsed:x4,modifiedAtVersions:H.vector(H.tuple([Tr,H.u64()])),sharedObjects:H.vector(Ni),transactionDigest:xs,created:H.vector(H.tuple([Ni,gl])),mutated:H.vector(H.tuple([Ni,gl])),unwrapped:H.vector(H.tuple([Ni,gl])),deleted:H.vector(Ni),unwrappedThenDeleted:H.vector(Ni),wrapped:H.vector(Ni),gasObject:H.tuple([Ni,gl]),eventsDigest:H.option(xs),dependencies:H.vector(xs)}),lx=H.tuple([H.u64(),xs]),mL=H.enum("ObjectIn",{NotExist:null,Exist:H.tuple([lx,gl])}),yL=H.enum("ObjectOut",{NotExist:null,ObjectWrite:H.tuple([xs,gl]),PackageWrite:lx}),gL=H.enum("IDOperation",{None:null,Created:null,Deleted:null}),vL=H.struct("EffectsObjectChange",{inputState:mL,outputState:yL,idOperation:gL}),bL=H.enum("UnchangedSharedKind",{ReadOnlyRoot:lx,MutateDeleted:H.u64(),ReadDeleted:H.u64(),Cancelled:H.u64(),PerEpochConfig:null}),wL=H.struct("TransactionEffectsV2",{status:_4,executedEpoch:H.u64(),gasUsed:x4,transactionDigest:xs,gasObjectIndex:H.option(H.u32()),eventsDigest:H.option(xs),dependencies:H.vector(xs),lamportVersion:H.u64(),changedObjects:H.vector(H.tuple([Tr,vL])),unchangedSharedObjects:H.vector(H.tuple([Tr,bL])),auxDataDigest:H.option(xs)}),_L=H.enum("TransactionEffects",{V1:pL,V2:wL}),ot={...H,U8:H.u8(),U16:H.u16(),U32:H.u32(),U64:H.u64(),U128:H.u128(),U256:H.u256(),ULEB128:H.uleb128(),Bool:H.bool(),String:H.string(),Address:Tr,AppId:h4,Argument:zs,CallArg:t4,CompressedSignature:y4,GasData:u4,Intent:p4,IntentMessage:m4,IntentScope:f4,IntentVersion:d4,MultiSig:oL,MultiSigPkMap:v4,MultiSigPublicKey:b4,ObjectArg:e4,ObjectDigest:xs,ProgrammableMoveCall:r4,ProgrammableTransaction:i4,PublicKey:g4,SenderSignedData:uL,SenderSignedTransaction:w4,SharedObjectRef:ZI,StructTag:a4,SuiObjectRef:Ni,Command:n4,TransactionData:l4,TransactionDataV1:c4,TransactionExpiration:o4,TransactionKind:s4,TypeTag:cx,TransactionEffects:_L},xL="…";function S4(t){if(t.length<=6)return t;const e=t.startsWith("0x")?2:0;return`0x${t.slice(e,e+4)}${xL}${t.slice(-4)}`}const SL=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,EL=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function OL(t,e="at"){const r=t.toLowerCase();let n;if(r.includes("@")){if(!SL.test(r))throw new Error(`Invalid SuiNS name ${t}`);const[i,s]=r.split("@");n=[...i?i.split("."):[],s]}else{if(!EL.test(r))throw new Error(`Invalid SuiNS name ${t}`);n=r.split(".").slice(0,-1)}return e==="dot"?`${n.join(".")}.sui`:`${n.slice(0,-1).join(".")}@${n[n.length-1]}`}BigInt(1e9);const CL="0x1",E4="0x2";$o("0x6");const TL=`${E4}::sui::SUI`;$o("0x5");function za(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`positive integer expected, not ${t}`)}function PL(t){return t instanceof Uint8Array||t!=null&&typeof t=="object"&&t.constructor.name==="Uint8Array"}function cg(t,...e){if(!PL(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${t.length}`)}function O4(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");za(t.outputLen),za(t.blockLen)}function mf(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function C4(t,e){cg(t);const r=e.outputLen;if(t.lengthnew Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),F0=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),_u=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,T4=t=>t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255,wo=_u?t=>t:t=>T4(t);function Rc(t){for(let e=0;ee.toString(16).padStart(2,"0"));function kL(t){cg(t);let e="";for(let r=0;r=fo._0&&t<=fo._9)return t-fo._0;if(t>=fo._A&&t<=fo._F)return t-(fo._A-10);if(t>=fo._a&&t<=fo._f)return t-(fo._a-10)}function AL(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length,r=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let i=0,s=0;it().update(ro(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function RL(t){const e=(n,i)=>t(i).update(ro(n)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=n=>t(n),e}const DL=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3]);class BL extends fx{constructor(e,r,n={},i,s,o){if(super(),this.blockLen=e,this.outputLen=r,this.length=0,this.pos=0,this.finished=!1,this.destroyed=!1,za(e),za(r),za(i),r<0||r>i)throw new Error("outputLen bigger than keyLen");if(n.key!==void 0&&(n.key.length<1||n.key.length>i))throw new Error(`key must be up 1..${i} byte long or undefined`);if(n.salt!==void 0&&n.salt.length!==s)throw new Error(`salt must be ${s} byte long or undefined`);if(n.personalization!==void 0&&n.personalization.length!==o)throw new Error(`personalization must be ${o} byte long or undefined`);this.buffer32=ey(this.buffer=new Uint8Array(e))}update(e){mf(this);const{blockLen:r,buffer:n,buffer32:i}=this;e=ro(e);const s=e.length,o=e.byteOffset,a=e.buffer;for(let u=0;ui[o]=wo(s))}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){const{buffer:r,length:n,finished:i,destroyed:s,outputLen:o,pos:a}=this;return e||(e=new this.constructor({dkLen:o})),e.set(...this.get()),e.length=n,e.finished=i,e.destroyed=s,e.outputLen=o,e.buffer.set(r),e.pos=a,e}}const t0=BigInt(2**32-1),Lw=BigInt(32);function P4(t,e=!1){return e?{h:Number(t&t0),l:Number(t>>Lw&t0)}:{h:Number(t>>Lw&t0)|0,l:Number(t&t0)|0}}function UL(t,e=!1){let r=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let i=0;iBigInt(t>>>0)<>>0),LL=(t,e,r)=>t>>>r,zL=(t,e,r)=>t<<32-r|e>>>r,VL=(t,e,r)=>t>>>r|e<<32-r,WL=(t,e,r)=>t<<32-r|e>>>r,HL=(t,e,r)=>t<<64-r|e>>>r-32,GL=(t,e,r)=>t>>>r-32|e<<64-r,qL=(t,e)=>e,KL=(t,e)=>t,XL=(t,e,r)=>t<>>32-r,JL=(t,e,r)=>e<>>32-r,YL=(t,e,r)=>e<>>64-r,QL=(t,e,r)=>t<>>64-r;function ZL(t,e,r,n){const i=(e>>>0)+(n>>>0);return{h:t+r+(i/2**32|0)|0,l:i|0}}const ez=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),tz=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,rz=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),nz=(t,e,r,n,i)=>e+r+n+i+(t/2**32|0)|0,iz=(t,e,r,n,i)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(i>>>0),sz=(t,e,r,n,i,s)=>e+r+n+i+s+(t/2**32|0)|0,We={fromBig:P4,split:UL,toBig:FL,shrSH:LL,shrSL:zL,rotrSH:VL,rotrSL:WL,rotrBH:HL,rotrBL:GL,rotr32H:qL,rotr32L:KL,rotlSH:XL,rotlSL:JL,rotlBH:YL,rotlBL:QL,add:ZL,add3L:ez,add3H:tz,add4L:rz,add4H:nz,add5H:sz,add5L:iz},en=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),je=new Uint32Array(32);function Zo(t,e,r,n,i,s){const o=i[s],a=i[s+1];let u=je[2*t],c=je[2*t+1],l=je[2*e],f=je[2*e+1],d=je[2*r],h=je[2*r+1],m=je[2*n],g=je[2*n+1],x=We.add3L(u,l,o);c=We.add3H(x,c,f,a),u=x|0,{Dh:g,Dl:m}={Dh:g^c,Dl:m^u},{Dh:g,Dl:m}={Dh:We.rotr32H(g,m),Dl:We.rotr32L(g,m)},{h,l:d}=We.add(h,d,g,m),{Bh:f,Bl:l}={Bh:f^h,Bl:l^d},{Bh:f,Bl:l}={Bh:We.rotrSH(f,l,24),Bl:We.rotrSL(f,l,24)},je[2*t]=u,je[2*t+1]=c,je[2*e]=l,je[2*e+1]=f,je[2*r]=d,je[2*r+1]=h,je[2*n]=m,je[2*n+1]=g}function ea(t,e,r,n,i,s){const o=i[s],a=i[s+1];let u=je[2*t],c=je[2*t+1],l=je[2*e],f=je[2*e+1],d=je[2*r],h=je[2*r+1],m=je[2*n],g=je[2*n+1],x=We.add3L(u,l,o);c=We.add3H(x,c,f,a),u=x|0,{Dh:g,Dl:m}={Dh:g^c,Dl:m^u},{Dh:g,Dl:m}={Dh:We.rotrSH(g,m,16),Dl:We.rotrSL(g,m,16)},{h,l:d}=We.add(h,d,g,m),{Bh:f,Bl:l}={Bh:f^h,Bl:l^d},{Bh:f,Bl:l}={Bh:We.rotrBH(f,l,63),Bl:We.rotrBL(f,l,63)},je[2*t]=u,je[2*t+1]=c,je[2*e]=l,je[2*e+1]=f,je[2*r]=d,je[2*r+1]=h,je[2*n]=m,je[2*n+1]=g}class I4 extends BL{constructor(e={}){super(128,e.dkLen===void 0?64:e.dkLen,e,64,16,16),this.v0l=en[0]|0,this.v0h=en[1]|0,this.v1l=en[2]|0,this.v1h=en[3]|0,this.v2l=en[4]|0,this.v2h=en[5]|0,this.v3l=en[6]|0,this.v3h=en[7]|0,this.v4l=en[8]|0,this.v4h=en[9]|0,this.v5l=en[10]|0,this.v5h=en[11]|0,this.v6l=en[12]|0,this.v6h=en[13]|0,this.v7l=en[14]|0,this.v7h=en[15]|0;const r=e.key?e.key.length:0;if(this.v0l^=this.outputLen|r<<8|65536|1<<24,e.salt){const n=ey(ro(e.salt));this.v4l^=wo(n[0]),this.v4h^=wo(n[1]),this.v5l^=wo(n[2]),this.v5h^=wo(n[3])}if(e.personalization){const n=ey(ro(e.personalization));this.v6l^=wo(n[0]),this.v6h^=wo(n[1]),this.v7l^=wo(n[2]),this.v7h^=wo(n[3])}if(e.key){const n=new Uint8Array(this.blockLen);n.set(ro(e.key)),this.update(n)}}get(){let{v0l:e,v0h:r,v1l:n,v1h:i,v2l:s,v2h:o,v3l:a,v3h:u,v4l:c,v4h:l,v5l:f,v5h:d,v6l:h,v6h:m,v7l:g,v7h:x}=this;return[e,r,n,i,s,o,a,u,c,l,f,d,h,m,g,x]}set(e,r,n,i,s,o,a,u,c,l,f,d,h,m,g,x){this.v0l=e|0,this.v0h=r|0,this.v1l=n|0,this.v1h=i|0,this.v2l=s|0,this.v2h=o|0,this.v3l=a|0,this.v3h=u|0,this.v4l=c|0,this.v4h=l|0,this.v5l=f|0,this.v5h=d|0,this.v6l=h|0,this.v6h=m|0,this.v7l=g|0,this.v7h=x|0}compress(e,r,n){this.get().forEach((u,c)=>je[c]=u),je.set(en,16);let{h:i,l:s}=We.fromBig(BigInt(this.length));je[24]=en[8]^s,je[25]=en[9]^i,n&&(je[28]=~je[28],je[29]=~je[29]);let o=0;const a=DL;for(let u=0;u<12;u++)Zo(0,4,8,12,e,r+2*a[o++]),ea(0,4,8,12,e,r+2*a[o++]),Zo(1,5,9,13,e,r+2*a[o++]),ea(1,5,9,13,e,r+2*a[o++]),Zo(2,6,10,14,e,r+2*a[o++]),ea(2,6,10,14,e,r+2*a[o++]),Zo(3,7,11,15,e,r+2*a[o++]),ea(3,7,11,15,e,r+2*a[o++]),Zo(0,5,10,15,e,r+2*a[o++]),ea(0,5,10,15,e,r+2*a[o++]),Zo(1,6,11,12,e,r+2*a[o++]),ea(1,6,11,12,e,r+2*a[o++]),Zo(2,7,8,13,e,r+2*a[o++]),ea(2,7,8,13,e,r+2*a[o++]),Zo(3,4,9,14,e,r+2*a[o++]),ea(3,4,9,14,e,r+2*a[o++]);this.v0l^=je[0]^je[16],this.v0h^=je[1]^je[17],this.v1l^=je[2]^je[18],this.v1h^=je[3]^je[19],this.v2l^=je[4]^je[20],this.v2h^=je[5]^je[21],this.v3l^=je[6]^je[22],this.v3h^=je[7]^je[23],this.v4l^=je[8]^je[24],this.v4h^=je[9]^je[25],this.v5l^=je[10]^je[26],this.v5h^=je[11]^je[27],this.v6l^=je[12]^je[28],this.v6h^=je[13]^je[29],this.v7l^=je[14]^je[30],this.v7h^=je[15]^je[31],je.fill(0)}destroy(){this.destroyed=!0,this.buffer32.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Ih=RL(t=>new I4(t)),oz=Object.freeze(Object.defineProperty({__proto__:null,BLAKE2b:I4,blake2b:Ih},Symbol.toStringTag,{value:"Module"})),az="object",uz="ID",cz="ascii",lz="String",fz="string",dz="String",hz="option",pz="Option";function mz(t){const e=typeof t.body=="object"&&"datatype"in t.body?t.body.datatype:null;return!!e&&Jt(e.package)===Jt("0x2")&&e.module==="tx_context"&&e.type==="TxContext"}function zw(t){if(typeof t=="string")switch(t){case"address":return ot.Address;case"bool":return ot.Bool;case"u8":return ot.U8;case"u16":return ot.U16;case"u32":return ot.U32;case"u64":return ot.U64;case"u128":return ot.U128;case"u256":return ot.U256;default:throw new Error(`Unknown type signature ${t}`)}if("vector"in t){if(t.vector==="u8")return ot.vector(ot.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});const e=zw(t.vector);return e?ot.vector(e):null}if("datatype"in t){const e=Jt(t.datatype.package);if(e===Jt(CL)){if(t.datatype.module===cz&&t.datatype.type===lz||t.datatype.module===fz&&t.datatype.type===dz)return ot.String;if(t.datatype.module===hz&&t.datatype.type===pz){const r=zw(t.datatype.typeParameters[0]);return r?ot.vector(r):null}}if(e===Jt(E4)&&t.datatype.module===az&&t.datatype.type===uz)return ot.Address}return null}function yz(t){return typeof t=="object"&&"Reference"in t?{ref:"&",body:qd(t.Reference)}:typeof t=="object"&&"MutableReference"in t?{ref:"&mut",body:qd(t.MutableReference)}:{ref:null,body:qd(t)}}function qd(t){if(typeof t=="string")switch(t){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${t}`)}if("Vector"in t)return{vector:qd(t.Vector)};if("Struct"in t)return{datatype:{package:t.Struct.address,module:t.Struct.module,type:t.Struct.name,typeParameters:t.Struct.typeArguments.map(qd)}};if("TypeParameter"in t)return{typeParameter:t.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(t)}`)}function gz(t){return{$kind:"Pure",Pure:{bytes:t instanceof Uint8Array?zt(t):t.toBase64()}}}const No={Pure:gz,ObjectRef({objectId:t,digest:e,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:e,version:r,objectId:Jt(t)}}}},SharedObjectRef({objectId:t,mutable:e,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:e,initialSharedVersion:r,objectId:Jt(t)}}}},ReceivingRef({objectId:t,digest:e,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:e,version:r,objectId:Jt(t)}}}}};function k4(){return{kind:"transformation",type:"await",reference:k4,async:!0,async _run(t){return t.value=await t.value,t}}}var A4=/^[A-Z]{6}(?!00)[A-Z\d]{2}(?:[A-Z\d]{3})?$/u,j4=/^[a-z][\da-z]*$/u,M4=/^\d+$/u,$4=/^[\w+-]+(?:\.[\w+-]+)*@[\da-z]+(?:[.-][\da-z]+)*\.[a-z]{2,}$/iu,N4=/^[\p{Extended_Pictographic}\p{Emoji_Component}]+$/u,R4=/^(?:0h|0x)?[\da-f]+$/iu,D4=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/iu,B4=/^\d{15}$|^\d{2}-\d{6}-\d{6}-\d$/u,U4=/^(?:(?:[1-9]|1\d|2[0-4])?\d|25[0-5])(?:\.(?:(?:[1-9]|1\d|2[0-4])?\d|25[0-5])){3}$/u,F4=/^(?:(?:[\da-f]{1,4}:){7}[\da-f]{1,4}|(?:[\da-f]{1,4}:){1,7}:|(?:[\da-f]{1,4}:){1,6}:[\da-f]{1,4}|(?:[\da-f]{1,4}:){1,5}(?::[\da-f]{1,4}){1,2}|(?:[\da-f]{1,4}:){1,4}(?::[\da-f]{1,4}){1,3}|(?:[\da-f]{1,4}:){1,3}(?::[\da-f]{1,4}){1,4}|(?:[\da-f]{1,4}:){1,2}(?::[\da-f]{1,4}){1,5}|[\da-f]{1,4}:(?::[\da-f]{1,4}){1,6}|:(?:(?::[\da-f]{1,4}){1,7}|:)|fe80:(?::[\da-f]{0,4}){0,4}%[\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\d)?\d)\.){3}(?:25[0-5]|(?:2[0-4]|1?\d)?\d)|(?:[\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\d)?\d)\.){3}(?:25[0-5]|(?:2[0-4]|1?\d)?\d))$/iu,L4=/^(?:(?:[1-9]|1\d|2[0-4])?\d|25[0-5])(?:\.(?:(?:[1-9]|1\d|2[0-4])?\d|25[0-5])){3}$|^(?:(?:[\da-f]{1,4}:){7}[\da-f]{1,4}|(?:[\da-f]{1,4}:){1,7}:|(?:[\da-f]{1,4}:){1,6}:[\da-f]{1,4}|(?:[\da-f]{1,4}:){1,5}(?::[\da-f]{1,4}){1,2}|(?:[\da-f]{1,4}:){1,4}(?::[\da-f]{1,4}){1,3}|(?:[\da-f]{1,4}:){1,3}(?::[\da-f]{1,4}){1,4}|(?:[\da-f]{1,4}:){1,2}(?::[\da-f]{1,4}){1,5}|[\da-f]{1,4}:(?::[\da-f]{1,4}){1,6}|:(?:(?::[\da-f]{1,4}){1,7}|:)|fe80:(?::[\da-f]{0,4}){0,4}%[\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\d)?\d)\.){3}(?:25[0-5]|(?:2[0-4]|1?\d)?\d)|(?:[\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\d)?\d)\.){3}(?:25[0-5]|(?:2[0-4]|1?\d)?\d))$/iu,z4=/^\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\d|0[1-9]|3[01])$/u,V4=/^\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\d|0[1-9]|3[01])T(?:0\d|1\d|2[0-3]):[0-5]\d$/u,W4=/^(?:0\d|1\d|2[0-3]):[0-5]\d$/u,H4=/^(?:0\d|1\d|2[0-3])(?::[0-5]\d){2}$/u,G4=/^\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\d|0[1-9]|3[01])T(?:0\d|1\d|2[0-3])(?::[0-5]\d){2}(?:\.\d{1,9})?(?:Z|[+-](?:0\d|1\d|2[0-3])(?::?[0-5]\d)?)$/u,q4=/^\d{4}-W(?:0[1-9]|[1-4]\d|5[0-3])$/u,K4=/^(?:[\da-f]{2}:){5}[\da-f]{2}$|^(?:[\da-f]{2}-){5}[\da-f]{2}$|^(?:[\da-f]{4}\.){2}[\da-f]{4}$/iu,X4=/^(?:[\da-f]{2}:){7}[\da-f]{2}$|^(?:[\da-f]{2}-){7}[\da-f]{2}$|^(?:[\da-f]{4}\.){3}[\da-f]{4}$|^(?:[\da-f]{4}:){3}[\da-f]{4}$/iu,J4=/^(?:[\da-f]{2}:){5}[\da-f]{2}$|^(?:[\da-f]{2}-){5}[\da-f]{2}$|^(?:[\da-f]{4}\.){2}[\da-f]{4}$|^(?:[\da-f]{2}:){7}[\da-f]{2}$|^(?:[\da-f]{2}-){7}[\da-f]{2}$|^(?:[\da-f]{4}\.){3}[\da-f]{4}$|^(?:[\da-f]{4}:){3}[\da-f]{4}$/iu,Y4=/^(?:0o)?[0-7]+$/iu,Q4=/^[\da-hjkmnp-tv-z]{26}$/iu,Z4=/^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$/iu,Ai;function vz(t){Ai={...Ai,...t}}function fp(t){return{lang:(t==null?void 0:t.lang)??(Ai==null?void 0:Ai.lang),message:t==null?void 0:t.message,abortEarly:(t==null?void 0:t.abortEarly)??(Ai==null?void 0:Ai.abortEarly),abortPipeEarly:(t==null?void 0:t.abortPipeEarly)??(Ai==null?void 0:Ai.abortPipeEarly)}}function bz(){Ai=void 0}var Do;function wz(t,e){Do||(Do=new Map),Do.set(e,t)}function ek(t){return Do==null?void 0:Do.get(t)}function _z(t){Do==null||Do.delete(t)}var Bo;function xz(t,e){Bo||(Bo=new Map),Bo.set(e,t)}function tk(t){return Bo==null?void 0:Bo.get(t)}function Sz(t){Bo==null||Bo.delete(t)}var _s;function Ez(t,e,r){_s||(_s=new Map),_s.get(t)||_s.set(t,new Map),_s.get(t).set(r,e)}function rk(t,e){var r;return(r=_s==null?void 0:_s.get(t))==null?void 0:r.get(e)}function Oz(t,e){var r;(r=_s==null?void 0:_s.get(t))==null||r.delete(e)}function Xn(t){var r,n;const e=typeof t;return e==="string"?`"${t}"`:e==="number"||e==="bigint"||e==="boolean"?`${t}`:e==="object"||e==="function"?(t&&((n=(r=Object.getPrototypeOf(t))==null?void 0:r.constructor)==null?void 0:n.name))??"null":e}function se(t,e,r,n,i){const s=i&&"input"in i?i.input:r.value,o=(i==null?void 0:i.expected)??t.expects??null,a=(i==null?void 0:i.received)??Xn(s),u={kind:t.kind,type:t.type,input:s,expected:o,received:a,message:`Invalid ${e}: ${o?`Expected ${o} but r`:"R"}eceived ${a}`,requirement:t.requirement,path:i==null?void 0:i.path,issues:i==null?void 0:i.issues,lang:n.lang,abortEarly:n.abortEarly,abortPipeEarly:n.abortPipeEarly},c=t.kind==="schema",l=(i==null?void 0:i.message)??t.message??rk(t.reference,u.lang)??(c?tk(u.lang):null)??n.message??ek(u.lang);l&&(u.message=typeof l=="function"?l(u):l),c&&(r.typed=!1),r.issues?r.issues.push(u):r.issues=[u]}var Cz=/\D/gu;function dx(t){const e=t.replace(Cz,"");let r=e.length,n=1,i=0;for(;r;){const s=+e[--r];n^=1,i+=n?[0,2,4,6,8,1,3,5,7,9][s]:s}return i%10===0}function _c(t,e){return Object.hasOwn(t,e)&&e!=="__proto__"&&e!=="prototype"&&e!=="constructor"}function Tz(t,e){const r={};for(const n of t)r[n]=e;return r}function nk(t){if(t.path){let e="";for(const r of t.path)if(typeof r.key=="string"||typeof r.key=="number")e?e+=`.${r.key}`:e+=r.key;else return null;return e}return null}function Pz(t,e){return e.kind===t}function Iz(t,e){return e.type===t}function kz(t){return t instanceof lg}var lg=class extends Error{constructor(e){super(e[0].message);Fe(this,"issues");this.name="ValiError",this.issues=e}};function ik(t){return{kind:"validation",type:"bic",reference:ik,async:!1,expects:null,requirement:A4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"BIC",e,r),e}}}function sk(t){return{kind:"transformation",type:"brand",reference:sk,async:!1,name:t,_run(e){return e}}}function ok(t,e){return{kind:"validation",type:"bytes",reference:ok,async:!1,expects:`${t}`,requirement:t,message:e,_run(r,n){if(r.typed){const i=new TextEncoder().encode(r.value).length;i!==this.requirement&&se(this,"bytes",r,n,{received:`${i}`})}return r}}}function kf(t,e){return{kind:"validation",type:"check",reference:kf,async:!1,expects:null,requirement:t,message:e,_run(r,n){return r.typed&&!this.requirement(r.value)&&se(this,"input",r,n),r}}}function ak(t,e){return{kind:"validation",type:"check",reference:ak,async:!0,expects:null,requirement:t,message:e,async _run(r,n){return r.typed&&!await this.requirement(r.value)&&se(this,"input",r,n),r}}}function uk(t,e){return{kind:"validation",type:"check_items",reference:uk,async:!1,expects:null,requirement:t,message:e,_run(r,n){if(r.typed)for(let i=0;in.test(r))&&dx(r)},message:t,_run(e,r){return e.typed&&!this.requirement(e.value)&&se(this,"credit card",e,r),e}}}function lk(t){return{kind:"validation",type:"cuid2",reference:lk,async:!1,expects:null,requirement:j4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"Cuid2",e,r),e}}}function fk(t){return{kind:"validation",type:"decimal",reference:fk,async:!1,expects:null,requirement:M4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"decimal",e,r),e}}}function dk(t){return{kind:"validation",type:"email",reference:dk,expects:null,async:!1,requirement:$4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"email",e,r),e}}}function hk(t){return{kind:"validation",type:"emoji",reference:hk,async:!1,expects:null,requirement:N4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"emoji",e,r),e}}}function pk(t){return{kind:"validation",type:"empty",reference:pk,async:!1,expects:"0",message:t,_run(e,r){return e.typed&&e.value.length>0&&se(this,"length",e,r,{received:`${e.value.length}`}),e}}}function mk(t,e){return{kind:"validation",type:"ends_with",reference:mk,async:!1,expects:`"${t}"`,requirement:t,message:e,_run(r,n){return r.typed&&!r.value.endsWith(this.requirement)&&se(this,"end",r,n,{received:`"${r.value.slice(-this.requirement.length)}"`}),r}}}function yk(t,e){return{kind:"validation",type:"every_item",reference:yk,async:!1,expects:null,requirement:t,message:e,_run(r,n){return r.typed&&!r.value.every(this.requirement)&&se(this,"item",r,n),r}}}function gk(t,e){const r=Xn(t);return{kind:"validation",type:"excludes",reference:gk,async:!1,expects:`!${r}`,requirement:t,message:e,_run(n,i){return n.typed&&n.value.includes(this.requirement)&&se(this,"content",n,i,{received:r}),n}}}function vk(t){return{kind:"transformation",type:"filter_items",reference:vk,async:!1,operation:t,_run(e){return e.value=e.value.filter(this.operation),e}}}function bk(t){return{kind:"transformation",type:"find_item",reference:bk,async:!1,operation:t,_run(e){return e.value=e.value.find(this.operation),e}}}function wk(t){return{kind:"validation",type:"finite",reference:wk,async:!1,expects:null,requirement:Number.isFinite,message:t,_run(e,r){return e.typed&&!this.requirement(e.value)&&se(this,"finite",e,r),e}}}var $z={md4:32,md5:32,sha1:40,sha256:64,sha384:96,sha512:128,ripemd128:32,ripemd160:40,tiger128:32,tiger160:40,tiger192:48,crc32:8,crc32b:8,adler32:8};function _k(t,e){return{kind:"validation",type:"hash",reference:_k,expects:null,async:!1,requirement:RegExp(t.map(r=>`^[a-f0-9]{${$z[r]}}$`).join("|"),"iu"),message:e,_run(r,n){return r.typed&&!this.requirement.test(r.value)&&se(this,"hash",r,n),r}}}function xk(t){return{kind:"validation",type:"hexadecimal",reference:xk,async:!1,expects:null,requirement:R4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"hexadecimal",e,r),e}}}function Sk(t){return{kind:"validation",type:"hex_color",reference:Sk,async:!1,expects:null,requirement:D4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"hex color",e,r),e}}}function Ek(t){return{kind:"validation",type:"imei",reference:Ek,async:!1,expects:null,requirement(e){return B4.test(e)&&dx(e)},message:t,_run(e,r){return e.typed&&!this.requirement(e.value)&&se(this,"IMEI",e,r),e}}}function Ok(t,e){const r=Xn(t);return{kind:"validation",type:"includes",reference:Ok,async:!1,expects:r,requirement:t,message:e,_run(n,i){return n.typed&&!n.value.includes(this.requirement)&&se(this,"content",n,i,{received:`!${r}`}),n}}}function Cr(t){return{kind:"validation",type:"integer",reference:Cr,async:!1,expects:null,requirement:Number.isInteger,message:t,_run(e,r){return e.typed&&!this.requirement(e.value)&&se(this,"integer",e,r),e}}}function Ck(t){return{kind:"validation",type:"ip",reference:Ck,async:!1,expects:null,requirement:L4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"IP",e,r),e}}}function Tk(t){return{kind:"validation",type:"ipv4",reference:Tk,async:!1,expects:null,requirement:U4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"IPv4",e,r),e}}}function Pk(t){return{kind:"validation",type:"ipv6",reference:Pk,async:!1,expects:null,requirement:F4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"IPv6",e,r),e}}}function Ik(t){return{kind:"validation",type:"iso_date",reference:Ik,async:!1,expects:null,requirement:z4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"date",e,r),e}}}function kk(t){return{kind:"validation",type:"iso_date_time",reference:kk,async:!1,expects:null,requirement:V4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"date-time",e,r),e}}}function Ak(t){return{kind:"validation",type:"iso_time",reference:Ak,async:!1,expects:null,requirement:W4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"time",e,r),e}}}function jk(t){return{kind:"validation",type:"iso_time_second",reference:jk,async:!1,expects:null,requirement:H4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"time-second",e,r),e}}}function Mk(t){return{kind:"validation",type:"iso_timestamp",reference:Mk,async:!1,expects:null,requirement:G4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"timestamp",e,r),e}}}function $k(t){return{kind:"validation",type:"iso_week",reference:$k,async:!1,expects:null,requirement:q4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"week",e,r),e}}}function Nk(t,e){return{kind:"validation",type:"length",reference:Nk,async:!1,expects:`${t}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value.length!==this.requirement&&se(this,"length",r,n,{received:`${r.value.length}`}),r}}}function Rk(t){return{kind:"validation",type:"mac",reference:Rk,async:!1,expects:null,requirement:J4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"MAC",e,r),e}}}function Dk(t){return{kind:"validation",type:"mac48",reference:Dk,async:!1,expects:null,requirement:K4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"48-bit MAC",e,r),e}}}function Bk(t){return{kind:"validation",type:"mac64",reference:Bk,async:!1,expects:null,requirement:X4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"64-bit MAC",e,r),e}}}function Uk(t){return{kind:"transformation",type:"map_items",reference:Uk,async:!1,operation:t,_run(e){return e.value=e.value.map(this.operation),e}}}function Fk(t,e){return{kind:"validation",type:"max_bytes",reference:Fk,async:!1,expects:`<=${t}`,requirement:t,message:e,_run(r,n){if(r.typed){const i=new TextEncoder().encode(r.value).length;i>this.requirement&&se(this,"bytes",r,n,{received:`${i}`})}return r}}}function Lk(t,e){return{kind:"validation",type:"max_length",reference:Lk,async:!1,expects:`<=${t}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value.length>this.requirement&&se(this,"length",r,n,{received:`${r.value.length}`}),r}}}function zk(t,e){return{kind:"validation",type:"max_size",reference:zk,async:!1,expects:`<=${t}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value.size>this.requirement&&se(this,"size",r,n,{received:`${r.value.size}`}),r}}}function Vk(t,e){return{kind:"validation",type:"max_value",reference:Vk,async:!1,expects:`<=${t instanceof Date?t.toJSON():Xn(t)}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value>this.requirement&&se(this,"value",r,n,{received:r.value instanceof Date?r.value.toJSON():Xn(r.value)}),r}}}function Wk(t,e){return{kind:"validation",type:"mime_type",reference:Wk,async:!1,expects:t.map(r=>`"${r}"`).join(" | ")||"never",requirement:t,message:e,_run(r,n){return r.typed&&!this.requirement.includes(r.value.type)&&se(this,"MIME type",r,n,{received:`"${r.value.type}"`}),r}}}function Hk(t,e){return{kind:"validation",type:"min_bytes",reference:Hk,async:!1,expects:`>=${t}`,requirement:t,message:e,_run(r,n){if(r.typed){const i=new TextEncoder().encode(r.value).length;i=${t}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value.length=${t}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value.size=${t instanceof Date?t.toJSON():Xn(t)}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value=r.value&&se(this,"value",r,n,{received:r.value instanceof Date?r.value.toJSON():Xn(r.value)}),r}}}function rA(t){return{kind:"validation",type:"octal",reference:rA,async:!1,expects:null,requirement:Y4,message:t,_run(e,r){return e.typed&&!this.requirement.test(e.value)&&se(this,"octal",e,r),e}}}function nA(t,e){var r;if(t.issues)for(const n of e)for(const i of t.issues){let s=!1;const o=Math.min(n.length,((r=i.path)==null?void 0:r.length)??0);for(let a=0;ase(this,(n==null?void 0:n.label)??"input",e,r,n)}),e}}}function aA(t){return{kind:"validation",type:"raw_check",reference:aA,async:!0,expects:null,async _run(e,r){return await t({dataset:e,config:r,addIssue:n=>se(this,(n==null?void 0:n.label)??"input",e,r,n)}),e}}}function uA(t){return{kind:"transformation",type:"raw_transform",reference:uA,async:!1,_run(e,r){const n=t({dataset:e,config:r,addIssue:i=>se(this,(i==null?void 0:i.label)??"input",e,r,i),NEVER:null});return e.issues?e.typed=!1:e.value=n,e}}}function cA(t){return{kind:"transformation",type:"raw_transform",reference:cA,async:!0,async _run(e,r){const n=await t({dataset:e,config:r,addIssue:i=>se(this,(i==null?void 0:i.label)??"input",e,r,i),NEVER:null});return e.issues?e.typed=!1:e.value=n,e}}}function lA(){return{kind:"transformation",type:"readonly",reference:lA,async:!1,_run(t){return t}}}function fA(t,e){return{kind:"transformation",type:"reduce_items",reference:fA,async:!1,operation:t,initial:e,_run(r){return r.value=r.value.reduce(this.operation,this.initial),r}}}function dA(t,e){return{kind:"validation",type:"regex",reference:dA,async:!1,expects:`${t}`,requirement:t,message:e,_run(r,n){return r.typed&&!this.requirement.test(r.value)&&se(this,"format",r,n),r}}}function hA(t){return{kind:"validation",type:"safe_integer",reference:hA,async:!1,expects:null,requirement:Number.isSafeInteger,message:t,_run(e,r){return e.typed&&!this.requirement(e.value)&&se(this,"safe integer",e,r),e}}}function pA(t,e){return{kind:"validation",type:"size",reference:pA,async:!1,expects:`${t}`,requirement:t,message:e,_run(r,n){return r.typed&&r.value.size!==this.requirement&&se(this,"size",r,n,{received:`${r.value.size}`}),r}}}function mA(t,e){return{kind:"validation",type:"some_item",reference:mA,async:!1,expects:null,requirement:t,message:e,_run(r,n){return r.typed&&!r.value.some(this.requirement)&&se(this,"item",r,n),r}}}function yA(t){return{kind:"transformation",type:"sort_items",reference:yA,async:!1,operation:t,_run(e){return e.value=e.value.sort(this.operation),e}}}function gA(t,e){return{kind:"validation",type:"starts_with",reference:gA,async:!1,expects:`"${t}"`,requirement:t,message:e,_run(r,n){return r.typed&&!r.value.startsWith(this.requirement)&&se(this,"start",r,n,{received:`"${r.value.slice(0,this.requirement.length)}"`}),r}}}function vA(){return{kind:"transformation",type:"to_lower_case",reference:vA,async:!1,_run(t){return t.value=t.value.toLowerCase(),t}}}function bA(t){return{kind:"transformation",type:"to_max_value",reference:bA,async:!1,requirement:t,_run(e){return e.value=e.value>this.requirement?this.requirement:e.value,e}}}function wA(t){return{kind:"transformation",type:"to_min_value",reference:wA,async:!1,requirement:t,_run(e){return e.value=e.value=r.value)&&se(this,"value",r,n,{received:r.value instanceof Date?r.value.toJSON():Xn(r.value)}),r}}}function Nz(t,e){return{...t,_run(r,n){return t._run(r,{...n,...e})}}}function hp(t,e,r){return typeof t.fallback=="function"?t.fallback(e,r):t.fallback}function Rz(t,e){return{...t,fallback:e,_run(r,n){return t._run(r,n),r.issues?{typed:!0,value:hp(this,r,n)}:r}}}function Dz(t,e){return{...t,fallback:e,async:!0,async _run(r,n){return t._run(r,n),r.issues?{typed:!0,value:await hp(this,r,n)}:r}}}function Bz(t){const e={};for(const r of t)if(r.path){const n=nk(r);n?(e.nested||(e.nested={}),e.nested[n]?e.nested[n].push(r.message):e.nested[n]=[r.message]):e.other?e.other.push(r.message):e.other=[r.message]}else e.root?e.root.push(r.message):e.root=[r.message];return e}function Uz(t,e){return{...t,_run(r,n){const i=r.issues&&[...r.issues];if(t._run(r,n),r.issues){for(const s of r.issues)if(!(i!=null&&i.includes(s))){let o=r.value;for(const a of e){const u=o[a],c={type:"unknown",origin:"value",input:o,key:a,value:u};if(s.path?s.path.push(c):s.path=[c],!u)break;o=u}}}return r}}}function Fz(t,e){return{...t,async:!0,async _run(r,n){const i=r.issues&&[...r.issues];if(await t._run(r,n),r.issues){for(const s of r.issues)if(!(i!=null&&i.includes(s))){let o=r.value;for(const a of e){const u=o[a],c={type:"unknown",origin:"value",input:o,key:a,value:u};if(s.path?s.path.push(c):s.path=[c],!u)break;o=u}}}return r}}}function Jo(t,e,r){return typeof t.default=="function"?t.default(e,r):t.default}function Vw(t){if("entries"in t){const e={};for(const r in t.entries)e[r]=Vw(t.entries[r]);return e}return"items"in t?t.items.map(Vw):Jo(t)}async function Ww(t){return"entries"in t?Object.fromEntries(await Promise.all(Object.entries(t.entries).map(async([e,r])=>[e,await Ww(r)]))):"items"in t?Promise.all(t.items.map(Ww)):Jo(t)}function Hw(t){if("entries"in t){const e={};for(const r in t.entries)e[r]=Hw(t.entries[r]);return e}return"items"in t?t.items.map(Hw):hp(t)}async function Gw(t){return"entries"in t?Object.fromEntries(await Promise.all(Object.entries(t.entries).map(async([e,r])=>[e,await Gw(r)]))):"items"in t?Promise.all(t.items.map(Gw)):hp(t)}function ty(t,e){return!t._run({typed:!1,value:e},{abortEarly:!0}).issues}function PA(){return{kind:"schema",type:"any",reference:PA,expects:"any",async:!1,_run(t){return t.typed=!0,t}}}function at(t,e){return{kind:"schema",type:"array",reference:at,expects:"Array",async:!1,item:t,message:e,_run(r,n){var s;const i=r.value;if(Array.isArray(i)){r.typed=!0,r.value=[];for(let o=0;othis.item._run({typed:!1,value:a},n)));for(let a=0;aisNaN(+n)).map(([,n])=>n);return{kind:"schema",type:"enum",reference:qw,expects:r.map(Xn).join(" | ")||"never",async:!1,enum:t,options:r,message:e,_run(n,i){return this.options.includes(n.value)?n.typed=!0:se(this,"type",n,i),n}}}function $A(t){return{kind:"schema",type:"file",reference:$A,expects:"File",async:!1,message:t,_run(e,r){return e.value instanceof File?e.typed=!0:se(this,"type",e,r),e}}}function Kw(t){return{kind:"schema",type:"function",reference:Kw,expects:"Function",async:!1,message:t,_run(e,r){return typeof e.value=="function"?e.typed=!0:se(this,"type",e,r),e}}}function NA(t,e){return{kind:"schema",type:"instance",reference:NA,expects:t.name,async:!1,class:t,message:e,_run(r,n){return r.value instanceof this.class?r.typed=!0:se(this,"type",r,n),r}}}function ry(t,e){if(typeof t==typeof e){if(t===e||t instanceof Date&&e instanceof Date&&+t==+e)return{value:t};if(t&&e&&t.constructor===Object&&e.constructor===Object){for(const r in e)if(r in t){const n=ry(t[r],e[r]);if(n.issue)return n;t[r]=n.value}else t[r]=e[r];return{value:t}}if(Array.isArray(t)&&Array.isArray(e)&&t.length===e.length){for(let r=0;rr.expects))].join(" & ")||"never",async:!1,options:t,message:e,_run(r,n){if(this.options.length){const i=r.value;let s;r.typed=!0;for(const o of this.options){const a=o._run({typed:!1,value:i},n);if(a.issues&&(r.issues?r.issues.push(...a.issues):r.issues=a.issues,n.abortEarly)){r.typed=!1;break}a.typed||(r.typed=!1),r.typed&&(s?s.push(a.value):s=[a.value])}if(r.typed){r.value=s[0];for(let o=1;or.expects))].join(" & ")||"never",async:!0,options:t,message:e,async _run(r,n){if(this.options.length){const i=r.value;let s;r.typed=!0;const o=await Promise.all(this.options.map(a=>a._run({typed:!1,value:i},n)));for(const a of o){if(a.issues&&(r.issues?r.issues.push(...a.issues):r.issues=a.issues,n.abortEarly)){r.typed=!1;break}a.typed||(r.typed=!1),r.typed&&(s?s.push(a.value):s=[a.value])}if(r.typed){r.value=s[0];for(let a=1;a{const c=i[a];return[a,c,await u._run({typed:!1,value:c},n)]}));for(const[a,u,c]of o){if(c.issues){const l={type:"object",origin:"value",input:i,key:a,value:u};for(const f of c.issues)f.path?f.path.unshift(l):f.path=[l],(s=r.issues)==null||s.push(f);if(r.issues||(r.issues=c.issues),n.abortEarly){r.typed=!1;break}}c.typed||(r.typed=!1),(c.value!==void 0||a in i)&&(r.value[a]=c.value)}if(!r.issues||!n.abortEarly)for(const a in i)_c(i,a)&&!(a in this.entries)&&(r.value[a]=i[a])}else se(this,"type",r,n);return r}}}function LA(t,e){return{kind:"schema",type:"loose_tuple",reference:LA,expects:"Array",async:!1,items:t,message:e,_run(r,n){var s;const i=r.value;if(Array.isArray(i)){r.typed=!0,r.value=[];for(let o=0;o{const c=i[u];return[u,c,await a._run({typed:!1,value:c},n)]}));for(const[a,u,c]of o){if(c.issues){const l={type:"array",origin:"value",input:i,key:a,value:u};for(const f of c.issues)f.path?f.path.unshift(l):f.path=[l],(s=r.issues)==null||s.push(f);if(r.issues||(r.issues=c.issues),n.abortEarly){r.typed=!1;break}}c.typed||(r.typed=!1),r.value.push(c.value)}if(!r.issues||!n.abortEarly)for(let a=this.items.length;aPromise.all([c,l,this.key._run({typed:!1,value:c},i),this.value._run({typed:!1,value:l},i)])));for(const[c,l,f,d]of u){if(f.issues){const h={type:"map",origin:"key",input:s,key:c,value:l};for(const m of f.issues)m.path?m.path.unshift(h):m.path=[h],(o=n.issues)==null||o.push(m);if(n.issues||(n.issues=f.issues),i.abortEarly){n.typed=!1;break}}if(d.issues){const h={type:"map",origin:"value",input:s,key:c,value:l};for(const m of d.issues)m.path?m.path.unshift(h):m.path=[h],(a=n.issues)==null||a.push(m);if(n.issues||(n.issues=d.issues),i.abortEarly){n.typed=!1;break}}(!f.typed||!d.typed)&&(n.typed=!1),n.value.set(f.value,d.value)}}else se(this,"type",n,i);return n}}}function HA(t){return{kind:"schema",type:"nan",reference:HA,expects:"NaN",async:!1,message:t,_run(e,r){return Number.isNaN(e.value)?e.typed=!0:se(this,"type",e,r),e}}}function GA(t){return{kind:"schema",type:"never",reference:GA,expects:"never",async:!1,message:t,_run(e,r){return se(this,"type",e,r),e}}}function qA(t,e){return{kind:"schema",type:"non_nullable",reference:qA,expects:"!null",async:!1,wrapped:t,message:e,_run(r,n){return r.value===null?(se(this,"type",r,n),r):this.wrapped._run(r,n)}}}function KA(t,e){return{kind:"schema",type:"non_nullable",reference:KA,expects:"!null",async:!0,wrapped:t,message:e,async _run(r,n){return r.value===null?(se(this,"type",r,n),r):this.wrapped._run(r,n)}}}function XA(t,e){return{kind:"schema",type:"non_nullish",reference:XA,expects:"!null & !undefined",async:!1,wrapped:t,message:e,_run(r,n){return r.value===null||r.value===void 0?(se(this,"type",r,n),r):this.wrapped._run(r,n)}}}function JA(t,e){return{kind:"schema",type:"non_nullish",reference:JA,expects:"!null & !undefined",async:!0,wrapped:t,message:e,async _run(r,n){return r.value===null||r.value===void 0?(se(this,"type",r,n),r):this.wrapped._run(r,n)}}}function px(t,e){return{kind:"schema",type:"non_optional",reference:px,expects:"!undefined",async:!1,wrapped:t,message:e,_run(r,n){return r.value===void 0?(se(this,"type",r,n),r):this.wrapped._run(r,n)}}}function mx(t,e){return{kind:"schema",type:"non_optional",reference:mx,expects:"!undefined",async:!0,wrapped:t,message:e,async _run(r,n){return r.value===void 0?(se(this,"type",r,n),r):this.wrapped._run(r,n)}}}function Xw(t){return{kind:"schema",type:"null",reference:Xw,expects:"null",async:!1,message:t,_run(e,r){return e.value===null?e.typed=!0:se(this,"type",e,r),e}}}function Ft(t,...e){const r={kind:"schema",type:"nullable",reference:Ft,expects:`${t.expects} | null`,async:!1,wrapped:t,_run(n,i){return n.value===null&&("default"in this&&(n.value=Jo(this,n,i)),n.value===null)?(n.typed=!0,n):this.wrapped._run(n,i)}};return 0 in e&&(r.default=e[0]),r}function YA(t,...e){const r={kind:"schema",type:"nullable",reference:YA,expects:`${t.expects} | null`,async:!0,wrapped:t,async _run(n,i){return n.value===null&&("default"in this&&(n.value=await Jo(this,n,i)),n.value===null)?(n.typed=!0,n):this.wrapped._run(n,i)}};return 0 in e&&(r.default=e[0]),r}function mc(t,...e){const r={kind:"schema",type:"nullish",reference:mc,expects:`${t.expects} | null | undefined`,async:!1,wrapped:t,_run(n,i){return(n.value===null||n.value===void 0)&&("default"in this&&(n.value=Jo(this,n,i)),n.value===null||n.value===void 0)?(n.typed=!0,n):this.wrapped._run(n,i)}};return 0 in e&&(r.default=e[0]),r}function QA(t,...e){const r={kind:"schema",type:"nullish",reference:QA,expects:`${t.expects} | null | undefined`,async:!0,wrapped:t,async _run(n,i){return(n.value===null||n.value===void 0)&&("default"in this&&(n.value=await Jo(this,n,i)),n.value===null||n.value===void 0)?(n.typed=!0,n):this.wrapped._run(n,i)}};return 0 in e&&(r.default=e[0]),r}function xr(t){return{kind:"schema",type:"number",reference:xr,expects:"number",async:!1,message:t,_run(e,r){return typeof e.value=="number"&&!isNaN(e.value)?e.typed=!0:se(this,"type",e,r),e}}}function Ce(t,e){return{kind:"schema",type:"object",reference:Ce,expects:"Object",async:!1,entries:t,message:e,_run(r,n){var s;const i=r.value;if(i&&typeof i=="object"){r.typed=!0,r.value={};for(const o in this.entries){const a=i[o],u=this.entries[o]._run({typed:!1,value:a},n);if(u.issues){const c={type:"object",origin:"value",input:i,key:o,value:a};for(const l of u.issues)l.path?l.path.unshift(c):l.path=[c],(s=r.issues)==null||s.push(l);if(r.issues||(r.issues=u.issues),n.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),(u.value!==void 0||o in i)&&(r.value[o]=u.value)}}else se(this,"type",r,n);return r}}}function ZA(t,e){return{kind:"schema",type:"object",reference:ZA,expects:"Object",async:!0,entries:t,message:e,async _run(r,n){var s;const i=r.value;if(i&&typeof i=="object"){r.typed=!0,r.value={};const o=await Promise.all(Object.entries(this.entries).map(async([a,u])=>{const c=i[a];return[a,c,await u._run({typed:!1,value:c},n)]}));for(const[a,u,c]of o){if(c.issues){const l={type:"object",origin:"value",input:i,key:a,value:u};for(const f of c.issues)f.path?f.path.unshift(l):f.path=[l],(s=r.issues)==null||s.push(f);if(r.issues||(r.issues=c.issues),n.abortEarly){r.typed=!1;break}}c.typed||(r.typed=!1),(c.value!==void 0||a in i)&&(r.value[a]=c.value)}}else se(this,"type",r,n);return r}}}function ej(t,e,r){return{kind:"schema",type:"object_with_rest",reference:ej,expects:"Object",async:!1,entries:t,rest:e,message:r,_run(n,i){var o,a;const s=n.value;if(s&&typeof s=="object"){n.typed=!0,n.value={};for(const u in this.entries){const c=s[u],l=this.entries[u]._run({typed:!1,value:c},i);if(l.issues){const f={type:"object",origin:"value",input:s,key:u,value:c};for(const d of l.issues)d.path?d.path.unshift(f):d.path=[f],(o=n.issues)==null||o.push(d);if(n.issues||(n.issues=l.issues),i.abortEarly){n.typed=!1;break}}l.typed||(n.typed=!1),(l.value!==void 0||u in s)&&(n.value[u]=l.value)}if(!n.issues||!i.abortEarly){for(const u in s)if(_c(s,u)&&!(u in this.entries)){const c=s[u],l=this.rest._run({typed:!1,value:c},i);if(l.issues){const f={type:"object",origin:"value",input:s,key:u,value:c};for(const d of l.issues)d.path?d.path.unshift(f):d.path=[f],(a=n.issues)==null||a.push(d);if(n.issues||(n.issues=l.issues),i.abortEarly){n.typed=!1;break}}l.typed||(n.typed=!1),n.value[u]=l.value}}}else se(this,"type",n,i);return n}}}function tj(t,e,r){return{kind:"schema",type:"object_with_rest",reference:tj,expects:"Object",async:!0,entries:t,rest:e,message:r,async _run(n,i){var o,a;const s=n.value;if(s&&typeof s=="object"){n.typed=!0,n.value={};const[u,c]=await Promise.all([Promise.all(Object.entries(this.entries).map(async([l,f])=>{const d=s[l];return[l,d,await f._run({typed:!1,value:d},i)]})),Promise.all(Object.entries(s).filter(([l])=>_c(s,l)&&!(l in this.entries)).map(async([l,f])=>[l,f,await this.rest._run({typed:!1,value:f},i)]))]);for(const[l,f,d]of u){if(d.issues){const h={type:"object",origin:"value",input:s,key:l,value:f};for(const m of d.issues)m.path?m.path.unshift(h):m.path=[h],(o=n.issues)==null||o.push(m);if(n.issues||(n.issues=d.issues),i.abortEarly){n.typed=!1;break}}d.typed||(n.typed=!1),(d.value!==void 0||l in s)&&(n.value[l]=d.value)}if(!n.issues||!i.abortEarly)for(const[l,f,d]of c){if(d.issues){const h={type:"object",origin:"value",input:s,key:l,value:f};for(const m of d.issues)m.path?m.path.unshift(h):m.path=[h],(a=n.issues)==null||a.push(m);if(n.issues||(n.issues=d.issues),i.abortEarly){n.typed=!1;break}}d.typed||(n.typed=!1),n.value[l]=d.value}}else se(this,"type",n,i);return n}}}function un(t,...e){const r={kind:"schema",type:"optional",reference:un,expects:`${t.expects} | undefined`,async:!1,wrapped:t,_run(n,i){return n.value===void 0&&("default"in this&&(n.value=Jo(this,n,i)),n.value===void 0)?(n.typed=!0,n):this.wrapped._run(n,i)}};return 0 in e&&(r.default=e[0]),r}function yx(t,...e){const r={kind:"schema",type:"optional",reference:yx,expects:`${t.expects} | undefined`,async:!0,wrapped:t,async _run(n,i){return n.value===void 0&&("default"in this&&(n.value=await Jo(this,n,i)),n.value===void 0)?(n.typed=!0,n):this.wrapped._run(n,i)}};return 0 in e&&(r.default=e[0]),r}function gx(t,e){return{kind:"schema",type:"picklist",reference:gx,expects:t.map(Xn).join(" | ")||"never",async:!1,options:t,message:e,_run(r,n){return this.options.includes(r.value)?r.typed=!0:se(this,"type",r,n),r}}}function rj(t){return{kind:"schema",type:"promise",reference:rj,expects:"Promise",async:!1,message:t,_run(e,r){return e.value instanceof Promise?e.typed=!0:se(this,"type",e,r),e}}}function gf(t,e,r){return{kind:"schema",type:"record",reference:gf,expects:"Object",async:!1,key:t,value:e,message:r,_run(n,i){var o,a;const s=n.value;if(s&&typeof s=="object"){n.typed=!0,n.value={};for(const u in s)if(_c(s,u)){const c=s[u],l=this.key._run({typed:!1,value:u},i);if(l.issues){const d={type:"object",origin:"key",input:s,key:u,value:c};for(const h of l.issues)h.path=[d],(o=n.issues)==null||o.push(h);if(n.issues||(n.issues=l.issues),i.abortEarly){n.typed=!1;break}}const f=this.value._run({typed:!1,value:c},i);if(f.issues){const d={type:"object",origin:"value",input:s,key:u,value:c};for(const h of f.issues)h.path?h.path.unshift(d):h.path=[d],(a=n.issues)==null||a.push(h);if(n.issues||(n.issues=f.issues),i.abortEarly){n.typed=!1;break}}(!l.typed||!f.typed)&&(n.typed=!1),l.typed&&(n.value[l.value]=f.value)}}else se(this,"type",n,i);return n}}}function nj(t,e,r){return{kind:"schema",type:"record",reference:nj,expects:"Object",async:!0,key:t,value:e,message:r,async _run(n,i){var o,a;const s=n.value;if(s&&typeof s=="object"){n.typed=!0,n.value={};const u=await Promise.all(Object.entries(s).filter(([c])=>_c(s,c)).map(([c,l])=>Promise.all([c,l,this.key._run({typed:!1,value:c},i),this.value._run({typed:!1,value:l},i)])));for(const[c,l,f,d]of u){if(f.issues){const h={type:"object",origin:"key",input:s,key:c,value:l};for(const m of f.issues)m.path=[h],(o=n.issues)==null||o.push(m);if(n.issues||(n.issues=f.issues),i.abortEarly){n.typed=!1;break}}if(d.issues){const h={type:"object",origin:"value",input:s,key:c,value:l};for(const m of d.issues)m.path?m.path.unshift(h):m.path=[h],(a=n.issues)==null||a.push(m);if(n.issues||(n.issues=d.issues),i.abortEarly){n.typed=!1;break}}(!f.typed||!d.typed)&&(n.typed=!1),f.typed&&(n.value[f.value]=d.value)}}else se(this,"type",n,i);return n}}}function ij(t,e){return{kind:"schema",type:"set",reference:ij,expects:"Set",async:!1,value:t,message:e,_run(r,n){var s;const i=r.value;if(i instanceof Set){r.typed=!0,r.value=new Set;for(const o of i){const a=this.value._run({typed:!1,value:o},n);if(a.issues){const u={type:"set",origin:"value",input:i,key:null,value:o};for(const c of a.issues)c.path?c.path.unshift(u):c.path=[u],(s=r.issues)==null||s.push(c);if(r.issues||(r.issues=a.issues),n.abortEarly){r.typed=!1;break}}a.typed||(r.typed=!1),r.value.add(a.value)}}else se(this,"type",r,n);return r}}}function sj(t,e){return{kind:"schema",type:"set",reference:sj,expects:"Set",async:!0,value:t,message:e,async _run(r,n){var s;const i=r.value;if(i instanceof Set){r.typed=!0,r.value=new Set;const o=await Promise.all([...i].map(async a=>[a,await this.value._run({typed:!1,value:a},n)]));for(const[a,u]of o){if(u.issues){const c={type:"set",origin:"value",input:i,key:null,value:a};for(const l of u.issues)l.path?l.path.unshift(c):l.path=[c],(s=r.issues)==null||s.push(l);if(r.issues||(r.issues=u.issues),n.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),r.value.add(u.value)}}else se(this,"type",r,n);return r}}}function oj(t,e){return{kind:"schema",type:"strict_object",reference:oj,expects:"Object",async:!1,entries:t,message:e,_run(r,n){var s;const i=r.value;if(i&&typeof i=="object"){r.typed=!0,r.value={};for(const o in this.entries){const a=i[o],u=this.entries[o]._run({typed:!1,value:a},n);if(u.issues){const c={type:"object",origin:"value",input:i,key:o,value:a};for(const l of u.issues)l.path?l.path.unshift(c):l.path=[c],(s=r.issues)==null||s.push(l);if(r.issues||(r.issues=u.issues),n.abortEarly){r.typed=!1;break}}u.typed||(r.typed=!1),(u.value!==void 0||o in i)&&(r.value[o]=u.value)}if(!r.issues||!n.abortEarly){for(const o in i)if(!(o in this.entries)){const a=i[o];se(this,"type",r,n,{input:a,expected:"never",path:[{type:"object",origin:"value",input:i,key:o,value:a}]});break}}}else se(this,"type",r,n);return r}}}function aj(t,e){return{kind:"schema",type:"strict_object",reference:aj,expects:"Object",async:!0,entries:t,message:e,async _run(r,n){var s;const i=r.value;if(i&&typeof i=="object"){r.typed=!0,r.value={};const o=await Promise.all(Object.entries(this.entries).map(async([a,u])=>{const c=i[a];return[a,c,await u._run({typed:!1,value:c},n)]}));for(const[a,u,c]of o){if(c.issues){const l={type:"object",origin:"value",input:i,key:a,value:u};for(const f of c.issues)f.path?f.path.unshift(l):f.path=[l],(s=r.issues)==null||s.push(f);if(r.issues||(r.issues=c.issues),n.abortEarly){r.typed=!1;break}}c.typed||(r.typed=!1),(c.value!==void 0||a in i)&&(r.value[a]=c.value)}if(!r.issues||!n.abortEarly){for(const a in i)if(!(a in this.entries)){const u=i[a];se(this,"type",r,n,{input:u,expected:"never",path:[{type:"object",origin:"value",input:i,key:a,value:u}]});break}}}else se(this,"type",r,n);return r}}}function uj(t,e){return{kind:"schema",type:"strict_tuple",reference:uj,expects:"Array",async:!1,items:t,message:e,_run(r,n){var s;const i=r.value;if(Array.isArray(i)){r.typed=!0,r.value=[];for(let o=0;o{const c=i[u];return[u,c,await a._run({typed:!1,value:c},n)]}));for(const[a,u,c]of o){if(c.issues){const l={type:"array",origin:"value",input:i,key:a,value:u};for(const f of c.issues)f.path?f.path.unshift(l):f.path=[l],(s=r.issues)==null||s.push(f);if(r.issues||(r.issues=c.issues),n.abortEarly){r.typed=!1;break}}c.typed||(r.typed=!1),r.value.push(c.value)}if(!(r.issues&&n.abortEarly)&&this.items.length{const c=i[u];return[u,c,await a._run({typed:!1,value:c},n)]}));for(const[a,u,c]of o){if(c.issues){const l={type:"array",origin:"value",input:i,key:a,value:u};for(const f of c.issues)f.path?f.path.unshift(l):f.path=[l],(s=r.issues)==null||s.push(f);if(r.issues||(r.issues=c.issues),n.abortEarly){r.typed=!1;break}}c.typed||(r.typed=!1),r.value.push(c.value)}}else se(this,"type",r,n);return r}}}function dj(t,e,r){return{kind:"schema",type:"tuple_with_rest",reference:dj,expects:"Array",async:!1,items:t,rest:e,message:r,_run(n,i){var o,a;const s=n.value;if(Array.isArray(s)){n.typed=!0,n.value=[];for(let u=0;u{const d=s[f];return[f,d,await l._run({typed:!1,value:d},i)]})),Promise.all(s.slice(this.items.length).map(async(l,f)=>[f+this.items.length,l,await this.rest._run({typed:!1,value:l},i)]))]);for(const[l,f,d]of u){if(d.issues){const h={type:"array",origin:"value",input:s,key:l,value:f};for(const m of d.issues)m.path?m.path.unshift(h):m.path=[h],(o=n.issues)==null||o.push(m);if(n.issues||(n.issues=d.issues),i.abortEarly){n.typed=!1;break}}d.typed||(n.typed=!1),n.value.push(d.value)}if(!n.issues||!i.abortEarly)for(const[l,f,d]of c){if(d.issues){const h={type:"array",origin:"value",input:s,key:l,value:f};for(const m of d.issues)m.path?m.path.unshift(h):m.path=[h],(a=n.issues)==null||a.push(m);if(n.issues||(n.issues=d.issues),i.abortEarly){n.typed=!1;break}}d.typed||(n.typed=!1),n.value.push(d.value)}}else se(this,"type",n,i);return n}}}function Jw(t){return{kind:"schema",type:"undefined",reference:Jw,expects:"undefined",async:!1,message:t,_run(e,r){return e.value===void 0?e.typed=!0:se(this,"type",e,r),e}}}function ny(t){let e;if(t)for(const r of t)e?e.push(...r.issues):e=r.issues;return e}function vn(t,e){return{kind:"schema",type:"union",reference:vn,expects:[...new Set(t.map(r=>r.expects))].join(" | ")||"never",async:!1,options:t,message:e,_run(r,n){let i,s,o;for(const a of this.options){const u=a._run({typed:!1,value:r.value},n);if(u.typed)if(u.issues)s?s.push(u):s=[u];else{i=u;break}else o?o.push(u):o=[u]}if(i)return i;if(s){if(s.length===1)return s[0];se(this,"type",r,n,{issues:ny(s)}),r.typed=!0}else{if((o==null?void 0:o.length)===1)return o[0];se(this,"type",r,n,{issues:ny(o)})}return r}}}function pj(t,e){return{kind:"schema",type:"union",reference:pj,expects:[...new Set(t.map(r=>r.expects))].join(" | ")||"never",async:!0,options:t,message:e,async _run(r,n){let i,s,o;for(const a of this.options){const u=await a._run({typed:!1,value:r.value},n);if(u.typed)if(u.issues)s?s.push(u):s=[u];else{i=u;break}else o?o.push(u):o=[u]}if(i)return i;if(s){if(s.length===1)return s[0];se(this,"type",r,n,{issues:ny(s)}),r.typed=!0}else{if((o==null?void 0:o.length)===1)return o[0];se(this,"type",r,n,{issues:ny(o)})}return r}}}function Xa(){return{kind:"schema",type:"unknown",reference:Xa,expects:"unknown",async:!1,_run(t){return t.typed=!0,t}}}function vx(t,e,r=new Set){for(const n of e)n.type==="variant"?vx(t,n.options,r):r.add(n.entries[t].expects);return r}function mp(t,e,r){let n;return{kind:"schema",type:"variant",reference:mp,expects:"Object",async:!1,key:t,options:e,message:r,_run(i,s){const o=i.value;if(o&&typeof o=="object"){const a=o[this.key];if(this.key in o){let u;for(const c of this.options)if(c.type==="variant"||!c.entries[this.key]._run({typed:!1,value:a},s).issues){const l=c._run({typed:!1,value:o},s);if(!l.issues)return l;(!u||!u.typed&&l.typed)&&(u=l)}if(u)return u}n||(n=[...vx(this.key,this.options)].join(" | ")||"never"),se(this,"type",i,s,{input:a,expected:n,path:[{type:"object",origin:"value",input:o,key:this.key,value:a}]})}else se(this,"type",i,s);return i}}}function mj(t,e,r){let n;return{kind:"schema",type:"variant",reference:mj,expects:"Object",async:!0,key:t,options:e,message:r,async _run(i,s){const o=i.value;if(o&&typeof o=="object"){const a=o[this.key];if(this.key in o){let u;for(const c of this.options)if(c.type==="variant"||!(await c.entries[this.key]._run({typed:!1,value:a},s)).issues){const l=await c._run({typed:!1,value:o},s);if(!l.issues)return l;(!u||!u.typed&&l.typed)&&(u=l)}if(u)return u}n||(n=[...vx(this.key,this.options)].join(" | ")||"never"),se(this,"type",i,s,{input:a,expected:n,path:[{type:"object",origin:"value",input:o,key:this.key,value:a}]})}else se(this,"type",i,s);return i}}}function Yw(t){return{kind:"schema",type:"void",reference:Yw,expects:"void",async:!1,message:t,_run(e,r){return e.value===void 0?e.typed=!0:se(this,"type",e,r),e}}}function Lz(t,e){return gx(Object.keys(t.entries),e)}function zz(t,e){const r={...t.entries};for(const n of e)delete r[n];return{...t,entries:r}}function br(t,e,r){const n=t._run({typed:!1,value:e},fp(r));if(n.issues)throw new lg(n.issues);return n.value}async function yj(t,e,r){const n=await t._run({typed:!1,value:e},fp(r));if(n.issues)throw new lg(n.issues);return n.value}function Vz(t,e){const r=n=>br(t,n,e);return r.schema=t,r.config=e,r}function Wz(t,e){const r=n=>yj(t,n,e);return r.schema=t,r.config=e,r}function Hz(t,e){const r={};for(const n in t.entries)r[n]=!e||e.includes(n)?un(t.entries[n]):t.entries[n];return{...t,entries:r}}function Gz(t,e){const r={};for(const n in t.entries)r[n]=!e||e.includes(n)?yx(t.entries[n]):t.entries[n];return{...t,entries:r}}function qz(t,e){const r={};for(const n of e)r[n]=t.entries[n];return{...t,entries:r}}function Lt(...t){return{...t[0],pipe:t,_run(e,r){for(let n=0;nbx(t,n,e);return r.schema=t,r.config=e,r}function Qz(t,e){const r=n=>gj(t,n,e);return r.schema=t,r.config=e,r}function Zz(t){return t.wrapped}const eV=Object.freeze(Object.defineProperty({__proto__:null,BIC_REGEX:A4,CUID2_REGEX:j4,DECIMAL_REGEX:M4,EMAIL_REGEX:$4,EMOJI_REGEX:N4,HEXADECIMAL_REGEX:R4,HEX_COLOR_REGEX:D4,IMEI_REGEX:B4,IPV4_REGEX:U4,IPV6_REGEX:F4,IP_REGEX:L4,ISO_DATE_REGEX:z4,ISO_DATE_TIME_REGEX:V4,ISO_TIMESTAMP_REGEX:G4,ISO_TIME_REGEX:W4,ISO_TIME_SECOND_REGEX:H4,ISO_WEEK_REGEX:q4,MAC48_REGEX:K4,MAC64_REGEX:X4,MAC_REGEX:J4,OCTAL_REGEX:Y4,ULID_REGEX:Q4,UUID_REGEX:Z4,ValiError:lg,_addIssue:se,_isLuhnAlgo:dx,_isValidObjectKey:_c,_stringify:Xn,any:PA,array:at,arrayAsync:IA,awaitAsync:k4,bic:ik,bigint:dg,blob:kA,boolean:pp,brand:sk,bytes:ok,check:kf,checkAsync:ak,checkItems:uk,config:Nz,creditCard:ck,cuid2:lk,custom:AA,customAsync:jA,date:MA,decimal:fk,deleteGlobalConfig:bz,deleteGlobalMessage:_z,deleteSchemaMessage:Sz,deleteSpecificMessage:Oz,email:dk,emoji:hk,empty:pk,endsWith:mk,entriesFromList:Tz,enum:qw,enum_:qw,everyItem:yk,excludes:gk,fallback:Rz,fallbackAsync:Dz,file:$A,filterItems:vk,findItem:bk,finite:wk,flatten:Bz,forward:Uz,forwardAsync:Fz,function:Kw,function_:Kw,getDefault:Jo,getDefaults:Vw,getDefaultsAsync:Ww,getDotPath:nk,getFallback:hp,getFallbacks:Hw,getFallbacksAsync:Gw,getGlobalConfig:fp,getGlobalMessage:ek,getSchemaMessage:tk,getSpecificMessage:rk,hash:_k,hexColor:Sk,hexadecimal:xk,imei:Ek,includes:Ok,instance:NA,integer:Cr,intersect:RA,intersectAsync:DA,ip:Ck,ipv4:Tk,ipv6:Pk,is:ty,isOfKind:Pz,isOfType:Iz,isValiError:kz,isoDate:Ik,isoDateTime:kk,isoTime:Ak,isoTimeSecond:jk,isoTimestamp:Mk,isoWeek:$k,keyof:Lz,lazy:yf,lazyAsync:BA,length:Nk,literal:He,looseObject:UA,looseObjectAsync:FA,looseTuple:LA,looseTupleAsync:zA,mac:Rk,mac48:Dk,mac64:Bk,map:VA,mapAsync:WA,mapItems:Uk,maxBytes:Fk,maxLength:Lk,maxSize:zk,maxValue:Vk,mimeType:Wk,minBytes:Hk,minLength:Gk,minSize:qk,minValue:Kk,multipleOf:Xk,nan:HA,never:GA,nonEmpty:Jk,nonNullable:qA,nonNullableAsync:KA,nonNullish:XA,nonNullishAsync:JA,nonOptional:px,nonOptionalAsync:mx,normalize:Yk,notBytes:Qk,notLength:Zk,notSize:eA,notValue:tA,null:Xw,null_:Xw,nullable:Ft,nullableAsync:YA,nullish:mc,nullishAsync:QA,number:xr,object:Ce,objectAsync:ZA,objectWithRest:ej,objectWithRestAsync:tj,octal:rA,omit:zz,optional:un,optionalAsync:yx,parse:br,parseAsync:yj,parser:Vz,parserAsync:Wz,partial:Hz,partialAsync:Gz,partialCheck:iA,partialCheckAsync:sA,pick:qz,picklist:gx,pipe:Lt,pipeAsync:Kz,promise:rj,rawCheck:oA,rawCheckAsync:aA,rawTransform:uA,rawTransformAsync:cA,readonly:lA,record:gf,recordAsync:nj,reduceItems:fA,regex:dA,required:Xz,requiredAsync:Jz,safeInteger:hA,safeParse:bx,safeParseAsync:gj,safeParser:Yz,safeParserAsync:Qz,set:ij,setAsync:sj,setGlobalConfig:vz,setGlobalMessage:wz,setSchemaMessage:xz,setSpecificMessage:Ez,size:pA,someItem:mA,sortItems:yA,startsWith:gA,strictObject:oj,strictObjectAsync:aj,strictTuple:uj,strictTupleAsync:cj,string:Ye,symbol:lj,toLowerCase:vA,toMaxValue:bA,toMinValue:wA,toUpperCase:_A,transform:dp,transformAsync:xA,trim:SA,trimEnd:EA,trimStart:OA,tuple:hg,tupleAsync:fj,tupleWithRest:dj,tupleWithRestAsync:hj,ulid:CA,undefined:Jw,undefined_:Jw,union:vn,unionAsync:pj,unknown:Xa,unwrap:Zz,url:hx,uuid:fg,value:TA,variant:mp,variantAsync:mj,void:Yw,void_:Yw},Symbol.toStringTag,{value:"Module"}));function xc(t){const e=Object.entries(t).map(([r,n])=>Ce({[r]:n}));return Lt(vn(e),dp(r=>({...r,$kind:Object.keys(r)[0]})))}const Af=Lt(Ye(),dp(t=>Jt(t)),kf(Oo)),xi=Af,yc=Ye(),li=Lt(vn([Ye(),Lt(xr(),Cr())]),kf(t=>{try{return BigInt(t),BigInt(t)>=0&&BigInt(t)<=18446744073709551615n}catch{return!1}},"Invalid u64")),Ja=Ce({objectId:Af,version:li,digest:Ye()}),wr=Lt(vn([Ce({GasCoin:He(!0)}),Ce({Input:Lt(xr(),Cr()),type:un(He("pure"))}),Ce({Input:Lt(xr(),Cr()),type:un(He("object"))}),Ce({Result:Lt(xr(),Cr())}),Ce({NestedResult:hg([Lt(xr(),Cr()),Lt(xr(),Cr())])})]),dp(t=>({...t,$kind:Object.keys(t)[0]}))),tV=Ce({budget:Ft(li),price:Ft(li),owner:Ft(Af),payment:Ft(at(Ja))}),Qw=vn([He("address"),He("bool"),He("u8"),He("u16"),He("u32"),He("u64"),He("u128"),He("u256"),Ce({vector:yf(()=>Qw)}),Ce({datatype:Ce({package:Ye(),module:Ye(),type:Ye(),typeParameters:at(yf(()=>Qw))})}),Ce({typeParameter:Lt(xr(),Cr())})]),rV=Ce({ref:Ft(vn([He("&"),He("&mut")])),body:Qw}),nV=Ce({package:xi,module:Ye(),function:Ye(),typeArguments:at(Ye()),arguments:at(wr),_argumentTypes:un(Ft(at(rV)))}),iV=Ce({name:Ye(),inputs:gf(Ye(),vn([wr,at(wr)])),data:gf(Ye(),Xa())}),sV=xc({MoveCall:nV,TransferObjects:Ce({objects:at(wr),address:wr}),SplitCoins:Ce({coin:wr,amounts:at(wr)}),MergeCoins:Ce({destination:wr,sources:at(wr)}),Publish:Ce({modules:at(yc),dependencies:at(xi)}),MakeMoveVec:Ce({type:Ft(Ye()),elements:at(wr)}),Upgrade:Ce({modules:at(yc),dependencies:at(xi),package:xi,ticket:wr}),$Intent:iV}),vj=xc({ImmOrOwnedObject:Ja,SharedObject:Ce({objectId:xi,initialSharedVersion:li,mutable:pp()}),Receiving:Ja}),oV=xc({Object:vj,Pure:Ce({bytes:yc}),UnresolvedPure:Ce({value:Xa()}),UnresolvedObject:Ce({objectId:xi,version:un(Ft(li)),digest:un(Ft(Ye())),initialSharedVersion:un(Ft(li))})}),lC=xc({Object:vj,Pure:Ce({bytes:yc})}),bj=xc({None:He(!0),Epoch:li}),L0=Ce({version:He(2),sender:mc(Af),expiration:mc(bj),gasData:tV,inputs:at(oV),commands:at(sV)}),au={MoveCall(t){const[e,r="",n=""]="target"in t?t.target.split("::"):[t.package,t.module,t.function];return{$kind:"MoveCall",MoveCall:{package:e,module:r,function:n,typeArguments:t.typeArguments??[],arguments:t.arguments??[]}}},TransferObjects(t,e){return{$kind:"TransferObjects",TransferObjects:{objects:t.map(r=>br(wr,r)),address:br(wr,e)}}},SplitCoins(t,e){return{$kind:"SplitCoins",SplitCoins:{coin:br(wr,t),amounts:e.map(r=>br(wr,r))}}},MergeCoins(t,e){return{$kind:"MergeCoins",MergeCoins:{destination:br(wr,t),sources:e.map(r=>br(wr,r))}}},Publish({modules:t,dependencies:e}){return{$kind:"Publish",Publish:{modules:t.map(r=>typeof r=="string"?r:zt(new Uint8Array(r))),dependencies:e.map(r=>$o(r))}}},Upgrade({modules:t,dependencies:e,package:r,ticket:n}){return{$kind:"Upgrade",Upgrade:{modules:t.map(i=>typeof i=="string"?i:zt(new Uint8Array(i))),dependencies:e.map(i=>$o(i)),package:r,ticket:br(wr,n)}}},MakeMoveVec({type:t,elements:e}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:t??null,elements:e.map(r=>br(wr,r))}}},Intent({name:t,inputs:e={},data:r={}}){return{$kind:"$Intent",$Intent:{name:t,inputs:Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Array.isArray(i)?i.map(s=>br(wr,s)):br(wr,i)])),data:r}}}},Zw=Ce({digest:Ye(),objectId:Ye(),version:vn([Lt(xr(),Cr()),Ye(),dg()])}),aV=xc({ImmOrOwned:Zw,Shared:Ce({objectId:xi,initialSharedVersion:li,mutable:pp()}),Receiving:Zw}),fC=xc({Object:aV,Pure:at(Lt(xr(),Cr()))}),wj=vn([Ce({kind:He("Input"),index:Lt(xr(),Cr()),value:Xa(),type:un(He("object"))}),Ce({kind:He("Input"),index:Lt(xr(),Cr()),value:Xa(),type:He("pure")})]),uV=vn([Ce({Epoch:Lt(xr(),Cr())}),Ce({None:Ft(He(!0))})]),dC=Lt(vn([xr(),Ye(),dg()]),kf(t=>{if(!["string","number","bigint"].includes(typeof t))return!1;try{return BigInt(t),!0}catch{return!1}})),wx=vn([Ce({bool:Ft(He(!0))}),Ce({u8:Ft(He(!0))}),Ce({u64:Ft(He(!0))}),Ce({u128:Ft(He(!0))}),Ce({address:Ft(He(!0))}),Ce({signer:Ft(He(!0))}),Ce({vector:yf(()=>wx)}),Ce({struct:yf(()=>cV)}),Ce({u16:Ft(He(!0))}),Ce({u32:Ft(He(!0))}),Ce({u256:Ft(He(!0))})]),cV=Ce({address:Ye(),module:Ye(),name:Ye(),typeParams:at(wx)}),lV=Ce({budget:un(dC),price:un(dC),payment:un(at(Zw)),owner:un(Ye())}),fV=[wj,Ce({kind:He("GasCoin")}),Ce({kind:He("Result"),index:Lt(xr(),Cr())}),Ce({kind:He("NestedResult"),index:Lt(xr(),Cr()),resultIndex:Lt(xr(),Cr())})],Ho=vn([...fV]),dV=Ce({kind:He("MoveCall"),target:Lt(Ye(),kf(t=>t.split("::").length===3)),typeArguments:at(Ye()),arguments:at(Ho)}),hV=Ce({kind:He("TransferObjects"),objects:at(Ho),address:Ho}),pV=Ce({kind:He("SplitCoins"),coin:Ho,amounts:at(Ho)}),mV=Ce({kind:He("MergeCoins"),destination:Ho,sources:at(Ho)}),yV=Ce({kind:He("MakeMoveVec"),type:vn([Ce({Some:wx}),Ce({None:Ft(He(!0))})]),objects:at(Ho)}),gV=Ce({kind:He("Publish"),modules:at(at(Lt(xr(),Cr()))),dependencies:at(Ye())}),vV=Ce({kind:He("Upgrade"),modules:at(at(Lt(xr(),Cr()))),dependencies:at(Ye()),packageId:Ye(),ticket:Ho}),bV=[dV,hV,pV,mV,gV,vV,yV],wV=vn([...bV]);Ce({version:He(1),sender:un(Ye()),expiration:mc(uV),gasConfig:lV,inputs:at(wj),transactions:at(wV)});function hC(t){var r;const e=t.inputs.map((n,i)=>{if(n.Object)return{kind:"Input",index:i,value:{Object:n.Object.ImmOrOwnedObject?{ImmOrOwned:n.Object.ImmOrOwnedObject}:n.Object.Receiving?{Receiving:{digest:n.Object.Receiving.digest,version:n.Object.Receiving.version,objectId:n.Object.Receiving.objectId}}:{Shared:{mutable:n.Object.SharedObject.mutable,initialSharedVersion:n.Object.SharedObject.initialSharedVersion,objectId:n.Object.SharedObject.objectId}}},type:"object"};if(n.Pure)return{kind:"Input",index:i,value:{Pure:Array.from(yn(n.Pure.bytes))},type:"pure"};if(n.UnresolvedPure)return{kind:"Input",type:"pure",index:i,value:n.UnresolvedPure.value};if(n.UnresolvedObject)return{kind:"Input",type:"object",index:i,value:n.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:t.sender??void 0,expiration:((r=t.expiration)==null?void 0:r.$kind)==="Epoch"?{Epoch:Number(t.expiration.Epoch)}:t.expiration?{None:!0}:null,gasConfig:{owner:t.gasData.owner??void 0,budget:t.gasData.budget??void 0,price:t.gasData.price??void 0,payment:t.gasData.payment??void 0},inputs:e,transactions:t.commands.map(n=>{if(n.MakeMoveVec)return{kind:"MakeMoveVec",type:n.MakeMoveVec.type===null?{None:!0}:{Some:Zm.parseFromStr(n.MakeMoveVec.type)},objects:n.MakeMoveVec.elements.map(i=>ho(i,e))};if(n.MergeCoins)return{kind:"MergeCoins",destination:ho(n.MergeCoins.destination,e),sources:n.MergeCoins.sources.map(i=>ho(i,e))};if(n.MoveCall)return{kind:"MoveCall",target:`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`,typeArguments:n.MoveCall.typeArguments,arguments:n.MoveCall.arguments.map(i=>ho(i,e))};if(n.Publish)return{kind:"Publish",modules:n.Publish.modules.map(i=>Array.from(yn(i))),dependencies:n.Publish.dependencies};if(n.SplitCoins)return{kind:"SplitCoins",coin:ho(n.SplitCoins.coin,e),amounts:n.SplitCoins.amounts.map(i=>ho(i,e))};if(n.TransferObjects)return{kind:"TransferObjects",objects:n.TransferObjects.objects.map(i=>ho(i,e)),address:ho(n.TransferObjects.address,e)};if(n.Upgrade)return{kind:"Upgrade",modules:n.Upgrade.modules.map(i=>Array.from(yn(i))),dependencies:n.Upgrade.dependencies,packageId:n.Upgrade.package,ticket:ho(n.Upgrade.ticket,e)};throw new Error(`Unknown transaction ${Object.keys(n)}`)})}}function ho(t,e){if(t.$kind==="GasCoin")return{kind:"GasCoin"};if(t.$kind==="Result")return{kind:"Result",index:t.Result};if(t.$kind==="NestedResult")return{kind:"NestedResult",index:t.NestedResult[0],resultIndex:t.NestedResult[1]};if(t.$kind==="Input")return e[t.Input];throw new Error(`Invalid argument ${Object.keys(t)}`)}function _V(t){var e,r,n;return br(L0,{version:2,sender:t.sender??null,expiration:t.expiration?"Epoch"in t.expiration?{Epoch:t.expiration.Epoch}:{None:!0}:null,gasData:{owner:t.gasConfig.owner??null,budget:((e=t.gasConfig.budget)==null?void 0:e.toString())??null,price:((r=t.gasConfig.price)==null?void 0:r.toString())??null,payment:((n=t.gasConfig.payment)==null?void 0:n.map(i=>({digest:i.digest,objectId:i.objectId,version:i.version.toString()})))??null},inputs:t.inputs.map(i=>{if(i.kind==="Input"){if(ty(fC,i.value)){const s=br(fC,i.value);if(s.Object){if(s.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:s.Object.ImmOrOwned.objectId,version:String(s.Object.ImmOrOwned.version),digest:s.Object.ImmOrOwned.digest}}};if(s.Object.Shared)return{Object:{SharedObject:{mutable:s.Object.Shared.mutable??null,initialSharedVersion:s.Object.Shared.initialSharedVersion,objectId:s.Object.Shared.objectId}}};if(s.Object.Receiving)return{Object:{Receiving:{digest:s.Object.Receiving.digest,version:String(s.Object.Receiving.version),objectId:s.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:zt(new Uint8Array(s.Pure))}}}return i.type==="object"?{UnresolvedObject:{objectId:i.value}}:{UnresolvedPure:{value:i.value}}}throw new Error("Invalid input")}),commands:t.transactions.map(i=>{switch(i.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in i.type?Zm.tagToString(i.type.Some):null,elements:i.objects.map(s=>po(s))}};case"MergeCoins":return{MergeCoins:{destination:po(i.destination),sources:i.sources.map(s=>po(s))}};case"MoveCall":{const[s,o,a]=i.target.split("::");return{MoveCall:{package:s,module:o,function:a,typeArguments:i.typeArguments,arguments:i.arguments.map(u=>po(u))}}}case"Publish":return{Publish:{modules:i.modules.map(s=>zt(Uint8Array.from(s))),dependencies:i.dependencies}};case"SplitCoins":return{SplitCoins:{coin:po(i.coin),amounts:i.amounts.map(s=>po(s))}};case"TransferObjects":return{TransferObjects:{objects:i.objects.map(s=>po(s)),address:po(i.address)}};case"Upgrade":return{Upgrade:{modules:i.modules.map(s=>zt(Uint8Array.from(s))),dependencies:i.dependencies,package:i.packageId,ticket:po(i.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(i)}`)})})}function po(t){switch(t.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:t.index};case"NestedResult":return{NestedResult:[t.index,t.resultIndex]};case"Input":return{Input:t.index}}}function yp(t){return vn(Object.entries(t).map(([e,r])=>Ce({[e]:r})))}const Zi=yp({GasCoin:He(!0),Input:Lt(xr(),Cr()),Result:Lt(xr(),Cr()),NestedResult:hg([Lt(xr(),Cr()),Lt(xr(),Cr())])}),xV=Ce({budget:Ft(li),price:Ft(li),owner:Ft(Af),payment:Ft(at(Ja))}),SV=Ce({package:xi,module:Ye(),function:Ye(),typeArguments:at(Ye()),arguments:at(Zi)}),EV=Ce({name:Ye(),inputs:gf(Ye(),vn([Zi,at(Zi)])),data:gf(Ye(),Xa())}),OV=yp({MoveCall:SV,TransferObjects:Ce({objects:at(Zi),address:Zi}),SplitCoins:Ce({coin:Zi,amounts:at(Zi)}),MergeCoins:Ce({destination:Zi,sources:at(Zi)}),Publish:Ce({modules:at(yc),dependencies:at(xi)}),MakeMoveVec:Ce({type:Ft(Ye()),elements:at(Zi)}),Upgrade:Ce({modules:at(yc),dependencies:at(xi),package:xi,ticket:Zi}),$Intent:EV}),CV=yp({ImmOrOwnedObject:Ja,SharedObject:Ce({objectId:xi,initialSharedVersion:li,mutable:pp()}),Receiving:Ja}),TV=yp({Object:CV,Pure:Ce({bytes:yc}),UnresolvedPure:Ce({value:Xa()}),UnresolvedObject:Ce({objectId:xi,version:un(Ft(li)),digest:un(Ft(Ye())),initialSharedVersion:un(Ft(li))})}),PV=yp({None:He(!0),Epoch:li}),IV=Ce({version:He(2),sender:mc(Af),expiration:mc(PV),gasData:xV,inputs:at(TV),commands:at(OV)}),kV=50,AV=1000n,jV=5e10;async function MV(t,e,r){return await BV(t,e),await DV(t,e),e.onlyTransactionKind||(await $V(t,e),await NV(t,e),await RV(t,e)),await UV(t),await r()}async function $V(t,e){t.gasConfig.price||(t.gasConfig.price=String(await gp(e).getReferenceGasPrice()))}async function NV(t,e){if(t.gasConfig.budget)return;const r=await gp(e).dryRunTransactionBlock({transactionBlock:t.build({overrides:{gasData:{budget:String(jV),payment:[]}}})});if(r.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${r.effects.status.error}`,{cause:r});const n=AV*BigInt(t.gasConfig.price||1n),i=BigInt(r.effects.gasUsed.computationCost)+n,s=i+BigInt(r.effects.gasUsed.storageCost)-BigInt(r.effects.gasUsed.storageRebate);t.gasConfig.budget=String(s>i?s:i)}async function RV(t,e){if(!t.gasConfig.payment){const n=(await gp(e).getCoins({owner:t.gasConfig.owner||t.sender,coinType:TL})).data.filter(i=>!t.inputs.find(o=>{var a;return(a=o.Object)!=null&&a.ImmOrOwnedObject?i.coinObjectId===o.Object.ImmOrOwnedObject.objectId:!1})).map(i=>({objectId:i.coinObjectId,digest:i.digest,version:i.version}));if(!n.length)throw new Error("No valid gas coins found for the transaction.");t.gasConfig.payment=n.map(i=>br(Ja,i))}}async function DV(t,e){const r=t.inputs.filter(l=>{var f;return l.UnresolvedObject&&!(l.UnresolvedObject.version||(f=l.UnresolvedObject)!=null&&f.initialSharedVersion)}),n=[...new Set(r.map(l=>$o(l.UnresolvedObject.objectId)))],i=n.length?VV(n,kV):[],s=(await Promise.all(i.map(l=>gp(e).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat(),o=new Map(n.map((l,f)=>[l,s[f]])),a=Array.from(o).filter(([l,f])=>f.error).map(([l,f])=>JSON.stringify(f.error));if(a.length)throw new Error(`The following input objects are invalid: ${a.join(", ")}`);const u=s.map(l=>{if(l.error||!l.data)throw new Error(`Failed to fetch object: ${l.error}`);const f=l.data.owner,d=f&&typeof f=="object"&&"Shared"in f?f.Shared.initial_shared_version:null;return{objectId:l.data.objectId,digest:l.data.digest,version:l.data.version,initialSharedVersion:d}}),c=new Map(n.map((l,f)=>[l,u[f]]));for(const[l,f]of t.inputs.entries()){if(!f.UnresolvedObject)continue;let d;const h=Jt(f.UnresolvedObject.objectId),m=c.get(h);f.UnresolvedObject.initialSharedVersion??(m==null?void 0:m.initialSharedVersion)?d=No.SharedObjectRef({objectId:h,initialSharedVersion:f.UnresolvedObject.initialSharedVersion||(m==null?void 0:m.initialSharedVersion),mutable:FV(t,l)}):LV(t,l)&&(d=No.ReceivingRef({objectId:h,digest:f.UnresolvedObject.digest??(m==null?void 0:m.digest),version:f.UnresolvedObject.version??(m==null?void 0:m.version)})),t.inputs[t.inputs.indexOf(f)]=d??No.ObjectRef({objectId:h,digest:f.UnresolvedObject.digest??(m==null?void 0:m.digest),version:f.UnresolvedObject.version??(m==null?void 0:m.version)})}}async function BV(t,e){const{inputs:r,commands:n}=t,i=[],s=new Set;n.forEach(a=>{if(a.MoveCall){if(a.MoveCall._argumentTypes)return;if(a.MoveCall.arguments.map(l=>l.$kind==="Input"?t.inputs[l.Input]:null).some(l=>(l==null?void 0:l.UnresolvedPure)||(l==null?void 0:l.UnresolvedObject))){const l=`${a.MoveCall.package}::${a.MoveCall.module}::${a.MoveCall.function}`;s.add(l),i.push(a.MoveCall)}}switch(a.$kind){case"SplitCoins":a.SplitCoins.amounts.forEach(u=>{pC(u,ot.U64,t)});break;case"TransferObjects":pC(a.TransferObjects.address,ot.Address,t);break}});const o=new Map;if(s.size>0){const a=gp(e);await Promise.all([...s].map(async u=>{const[c,l,f]=u.split("::"),d=await a.getNormalizedMoveFunction({package:c,module:l,function:f});o.set(u,d.parameters.map(h=>yz(h)))}))}i.length&&await Promise.all(i.map(async a=>{const u=o.get(`${a.package}::${a.module}::${a.function}`);if(!u)return;const l=u.length>0&&mz(u.at(-1))?u.slice(0,u.length-1):u;a._argumentTypes=l})),n.forEach(a=>{if(!a.MoveCall)return;const u=a.MoveCall,c=`${u.package}::${u.module}::${u.function}`,l=u._argumentTypes;if(l){if(l.length!==a.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${c}`);l.forEach((f,d)=>{var S,O;const h=u.arguments[d];if(h.$kind!=="Input")return;const m=r[h.Input];if(!m.UnresolvedPure&&!m.UnresolvedObject)return;const g=((S=m.UnresolvedPure)==null?void 0:S.value)??((O=m.UnresolvedObject)==null?void 0:O.objectId),x=zw(f.body);if(x){h.type="pure",r[r.indexOf(m)]=No.Pure(x.serialize(g));return}if(typeof g!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(g,null,2)}`);h.type="object";const _=m.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:g}}:m;r[h.Input]=_})}})}function UV(t){t.inputs.forEach((e,r)=>{if(e.$kind!=="Object"&&e.$kind!=="Pure")throw new Error(`Input at index ${r} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(e)}`)})}function pC(t,e,r){if(t.$kind!=="Input")return;const n=r.inputs[t.Input];n.$kind==="UnresolvedPure"&&(r.inputs[t.Input]=No.Pure(e.serialize(n.UnresolvedPure.value)))}function FV(t,e){let r=!1;return t.getInputUses(e,(n,i)=>{if(i.MoveCall&&i.MoveCall._argumentTypes){const s=i.MoveCall.arguments.indexOf(n);r=i.MoveCall._argumentTypes[s].ref!=="&"||r}(i.$kind==="MakeMoveVec"||i.$kind==="MergeCoins"||i.$kind==="SplitCoins")&&(r=!0)}),r}function LV(t,e){let r=!1;return t.getInputUses(e,(n,i)=>{if(i.MoveCall&&i.MoveCall._argumentTypes){const s=i.MoveCall.arguments.indexOf(n);r=zV(i.MoveCall._argumentTypes[s])||r}}),r}function zV(t){return typeof t.body!="object"||!("datatype"in t.body)?!1:t.body.datatype.package==="0x2"&&t.body.datatype.module==="transfer"&&t.body.datatype.type==="Receiving"}function gp(t){if(!t.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return t.client}function VV(t,e){return Array.from({length:Math.ceil(t.length/e)},(r,n)=>t.slice(n*e,n*e+e))}function WV(t){function e(r){return t(r)}return e.system=()=>e("0x5"),e.clock=()=>e("0x6"),e.random=()=>e("0x8"),e.denyList=()=>e("0x403"),e.option=({type:r,value:n})=>i=>i.moveCall({typeArguments:[r],target:`0x1::option::${n===null?"none":"some"}`,arguments:n===null?[]:[i.object(n)]}),e}function HV(t){function e(r,n){if(typeof r=="string")return t(Kd(r).serialize(n));if(r instanceof Uint8Array||ag(r))return t(r);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return e.u8=r=>t(ot.U8.serialize(r)),e.u16=r=>t(ot.U16.serialize(r)),e.u32=r=>t(ot.U32.serialize(r)),e.u64=r=>t(ot.U64.serialize(r)),e.u128=r=>t(ot.U128.serialize(r)),e.u256=r=>t(ot.U256.serialize(r)),e.bool=r=>t(ot.Bool.serialize(r)),e.string=r=>t(ot.String.serialize(r)),e.address=r=>t(ot.Address.serialize(r)),e.id=e.address,e.vector=(r,n)=>t(ot.vector(Kd(r)).serialize(n)),e.option=(r,n)=>t(ot.option(Kd(r)).serialize(n)),e}function Kd(t){switch(t){case"u8":return ot.u8();case"u16":return ot.u16();case"u32":return ot.u32();case"u64":return ot.u64();case"u128":return ot.u128();case"u256":return ot.u256();case"bool":return ot.bool();case"string":return ot.string();case"id":case"address":return ot.Address}const e=t.match(/^(vector|option)<(.+)>$/);if(e){const[r,n]=e.slice(1);return r==="vector"?ot.vector(Kd(n)):ot.option(Kd(n))}throw new Error(`Invalid Pure type name: ${t}`)}function GV(t,e){const r=Array.from(`${t}::`).map(i=>i.charCodeAt(0)),n=new Uint8Array(r.length+e.length);return n.set(r),n.set(e,r.length),Ih(n,{dkLen:32})}function mC(t){return Jt(t).replace("0x","")}let td=class Xc{constructor(e){this.version=2,this.sender=(e==null?void 0:e.sender)??null,this.expiration=(e==null?void 0:e.expiration)??null,this.inputs=(e==null?void 0:e.inputs)??[],this.commands=(e==null?void 0:e.commands)??[],this.gasData=(e==null?void 0:e.gasData)??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(e){const n=ot.TransactionKind.parse(e).ProgrammableTransaction;if(!n)throw new Error("Unable to deserialize from bytes.");return Xc.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:n.inputs,commands:n.commands})}static fromBytes(e){const r=ot.TransactionData.parse(e),n=r==null?void 0:r.V1,i=n.kind.ProgrammableTransaction;if(!n||!i)throw new Error("Unable to deserialize from bytes.");return Xc.restore({version:2,sender:n.sender,expiration:n.expiration,gasData:n.gasData,inputs:i.inputs,commands:i.commands})}static restore(e){return e.version===2?new Xc(br(L0,e)):new Xc(br(L0,_V(e)))}static getDigestFromBytes(e){const r=GV("TransactionData",e);return Pf(r)}get gasConfig(){return this.gasData}set gasConfig(e){this.gasData=e}build({maxSizeBytes:e=1/0,overrides:r,onlyTransactionKind:n}={}){const i=this.inputs,s=this.commands,o={ProgrammableTransaction:{inputs:i,commands:s}};if(n)return ot.TransactionKind.serialize(o,{maxSize:e}).toBytes();const a=(r==null?void 0:r.expiration)??this.expiration,u=(r==null?void 0:r.sender)??this.sender,c={...this.gasData,...r==null?void 0:r.gasConfig,...r==null?void 0:r.gasData};if(!u)throw new Error("Missing transaction sender");if(!c.budget)throw new Error("Missing gas budget");if(!c.payment)throw new Error("Missing gas payment");if(!c.price)throw new Error("Missing gas price");const l={sender:mC(u),expiration:a||{None:!0},gasData:{payment:c.payment,owner:mC(this.gasData.owner??u),price:BigInt(c.price),budget:BigInt(c.budget)},kind:{ProgrammableTransaction:{inputs:i,commands:s}}};return ot.TransactionData.serialize({V1:l},{maxSize:e}).toBytes()}addInput(e,r){const n=this.inputs.length;return this.inputs.push(r),{Input:n,type:e,$kind:"Input"}}getInputUses(e,r){this.mapArguments((n,i)=>(n.$kind==="Input"&&n.Input===e&&r(n,i),n))}mapArguments(e){for(const r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(i=>e(i,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(i=>e(i,r)),r.TransferObjects.address=e(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=e(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(i=>e(i,r));break;case"MergeCoins":r.MergeCoins.destination=e(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(i=>e(i,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(i=>e(i,r));break;case"Upgrade":r.Upgrade.ticket=e(r.Upgrade.ticket,r);break;case"$Intent":const n=r.$Intent.inputs;r.$Intent.inputs={};for(const[i,s]of Object.entries(n))r.$Intent.inputs[i]=Array.isArray(s)?s.map(o=>e(o,r)):e(s,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(e,r){if(!Array.isArray(r)){this.commands[e]=r;return}const n=r.length-1;this.commands.splice(e,1,...r),n!==0&&this.mapArguments(i=>{switch(i.$kind){case"Result":i.Result>e&&(i.Result+=n);break;case"NestedResult":i.NestedResult[0]>e&&(i.NestedResult[0]+=n);break}return i})}getDigest(){const e=this.build({onlyTransactionKind:!1});return Xc.getDigestFromBytes(e)}snapshot(){return br(L0,this)}};function yC(t){if(typeof t=="string")return Jt(t);if(t.Object)return t.Object.ImmOrOwnedObject?Jt(t.Object.ImmOrOwnedObject.objectId):t.Object.Receiving?Jt(t.Object.Receiving.objectId):Jt(t.Object.SharedObject.objectId);if(t.UnresolvedObject)return Jt(t.UnresolvedObject.objectId)}var _j=t=>{throw TypeError(t)},_x=(t,e,r)=>e.has(t)||_j("Cannot "+r),kt=(t,e,r)=>(_x(t,e,"read from private field"),r?r.call(t):e.get(t)),rd=(t,e,r)=>e.has(t)?_j("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),uu=(t,e,r,n)=>(_x(t,e,"write to private field"),e.set(t,r),r),xo=(t,e,r)=>(_x(t,e,"access private method"),r),Sd,Xd,xu,Nt,es,z0,xx,e1,Sx;function qV(t){const e={$kind:"Result",Result:t},r=[],n=i=>r[i]??(r[i]={$kind:"NestedResult",NestedResult:[t,i]});return new Proxy(e,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,s){if(s in i)return Reflect.get(i,s);if(s===Symbol.iterator)return function*(){let a=0;for(;;)yield n(a),a++};if(typeof s=="symbol")return;const o=parseInt(s,10);if(!(Number.isNaN(o)||o<0))return n(o)}})}const xj=Symbol.for("@mysten/transaction");function Sj(t){return!!t&&typeof t=="object"&&t[xj]===!0}const gC={buildPlugins:new Map,serializationPlugins:new Map},Dv=Symbol.for("@mysten/transaction/registry");function nd(){try{const t=globalThis;return t[Dv]||(t[Dv]=gC),t[Dv]}catch{return gC}}const KV=class t1{constructor(){rd(this,es),rd(this,Sd),rd(this,Xd),rd(this,xu,new Map),rd(this,Nt),this.object=WV(r=>{var s,o;if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&ty(wr,r))return r;const n=yC(r),i=kt(this,Nt).inputs.find(a=>n===yC(a));return(s=i==null?void 0:i.Object)!=null&&s.SharedObject&&typeof r=="object"&&((o=r.Object)!=null&&o.SharedObject)&&(i.Object.SharedObject.mutable=i.Object.SharedObject.mutable||r.Object.SharedObject.mutable),i?{$kind:"Input",Input:kt(this,Nt).inputs.indexOf(i),type:"object"}:kt(this,Nt).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:Jt(r)}}:r)});const e=nd();uu(this,Nt,new td),uu(this,Xd,[...e.buildPlugins.values()]),uu(this,Sd,[...e.serializationPlugins.values()])}static fromKind(e){const r=new t1;return uu(r,Nt,td.fromKindBytes(typeof e=="string"?yn(e):e)),r}static from(e){const r=new t1;return Sj(e)?uu(r,Nt,new td(e.getData())):typeof e!="string"||!e.startsWith("{")?uu(r,Nt,td.fromBytes(typeof e=="string"?yn(e):e)):uu(r,Nt,td.restore(JSON.parse(e))),r}static registerGlobalSerializationPlugin(e,r){nd().serializationPlugins.set(e,r??e)}static unregisterGlobalSerializationPlugin(e){nd().serializationPlugins.delete(e)}static registerGlobalBuildPlugin(e,r){nd().buildPlugins.set(e,r??e)}static unregisterGlobalBuildPlugin(e){nd().buildPlugins.delete(e)}addSerializationPlugin(e){kt(this,Sd).push(e)}addBuildPlugin(e){kt(this,Xd).push(e)}addIntentResolver(e,r){if(kt(this,xu).has(e)&&kt(this,xu).get(e)!==r)throw new Error(`Intent resolver for ${e} already exists`);kt(this,xu).set(e,r)}setSender(e){kt(this,Nt).sender=e}setSenderIfNotSet(e){kt(this,Nt).sender||(kt(this,Nt).sender=e)}setExpiration(e){kt(this,Nt).expiration=e?br(bj,e):null}setGasPrice(e){kt(this,Nt).gasConfig.price=String(e)}setGasBudget(e){kt(this,Nt).gasConfig.budget=String(e)}setGasBudgetIfNotSet(e){kt(this,Nt).gasData.budget==null&&(kt(this,Nt).gasConfig.budget=String(e))}setGasOwner(e){kt(this,Nt).gasConfig.owner=e}setGasPayment(e){kt(this,Nt).gasConfig.payment=e.map(r=>br(Ja,r))}get blockData(){return hC(kt(this,Nt).snapshot())}getData(){return kt(this,Nt).snapshot()}get[xj](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:HV(e=>ag(e)?kt(this,Nt).addInput("pure",{$kind:"Pure",Pure:{bytes:e.toBase64()}}):kt(this,Nt).addInput("pure",ty(lC,e)?br(lC,e):e instanceof Uint8Array?No.Pure(e):{$kind:"UnresolvedPure",UnresolvedPure:{value:e}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...e){return this.object(No.ObjectRef(...e))}receivingRef(...e){return this.object(No.ReceivingRef(...e))}sharedObjectRef(...e){return this.object(No.SharedObjectRef(...e))}add(e){if(typeof e=="function")return e(this);const r=kt(this,Nt).commands.push(e);return qV(r-1)}splitCoins(e,r){return this.add(au.SplitCoins(typeof e=="string"?this.object(e):xo(this,es,xx).call(this,e),r.map(n=>typeof n=="number"||typeof n=="bigint"||typeof n=="string"?this.pure.u64(n):xo(this,es,z0).call(this,n))))}mergeCoins(e,r){return this.add(au.MergeCoins(this.object(e),r.map(n=>this.object(n))))}publish({modules:e,dependencies:r}){return this.add(au.Publish({modules:e,dependencies:r}))}upgrade({modules:e,dependencies:r,package:n,ticket:i}){return this.add(au.Upgrade({modules:e,dependencies:r,package:n,ticket:this.object(i)}))}moveCall({arguments:e,...r}){return this.add(au.MoveCall({...r,arguments:e==null?void 0:e.map(n=>xo(this,es,z0).call(this,n))}))}transferObjects(e,r){return this.add(au.TransferObjects(e.map(n=>this.object(n)),typeof r=="string"?this.pure.address(r):xo(this,es,z0).call(this,r)))}makeMoveVec({type:e,elements:r}){return this.add(au.MakeMoveVec({type:e,elements:r.map(n=>this.object(n))}))}serialize(){return JSON.stringify(hC(kt(this,Nt).snapshot()))}async toJSON(e={}){return await this.prepareForSerialization(e),JSON.stringify(br(IV,kt(this,Nt).snapshot()),(r,n)=>typeof n=="bigint"?n.toString():n,2)}async sign(e){const{signer:r,...n}=e,i=await this.build(n);return r.signTransaction(i)}async build(e={}){return await this.prepareForSerialization(e),await xo(this,es,e1).call(this,e),kt(this,Nt).build({onlyTransactionKind:e.onlyTransactionKind})}async getDigest(e={}){return await xo(this,es,e1).call(this,e),kt(this,Nt).getDigest()}async prepareForSerialization(e){var i;const r=new Set;for(const s of kt(this,Nt).commands)s.$Intent&&r.add(s.$Intent.name);const n=[...kt(this,Sd)];for(const s of r)if(!((i=e.supportedIntents)!=null&&i.includes(s))){if(!kt(this,xu).has(s))throw new Error(`Missing intent resolver for ${s}`);n.push(kt(this,xu).get(s))}await xo(this,es,Sx).call(this,n,e)}};Sd=new WeakMap;Xd=new WeakMap;xu=new WeakMap;Nt=new WeakMap;es=new WeakSet;z0=function(t){return ag(t)?this.pure(t):xo(this,es,xx).call(this,t)};xx=function(t){return typeof t=="function"?br(wr,t(this)):br(wr,t)};e1=async function(t){if(!t.onlyTransactionKind&&!kt(this,Nt).sender)throw new Error("Missing transaction sender");await xo(this,es,Sx).call(this,[...kt(this,Xd),MV],t)};Sx=async function(t,e){const r=n=>{if(n>=t.length)return()=>{};const i=t[n];return async()=>{const s=r(n+1);let o=!1,a=!1;if(await i(kt(this,Nt),e,async()=>{if(o)throw new Error(`next() was call multiple times in TransactionPlugin ${n}`);o=!0,await s(),a=!0}),!o)throw new Error(`next() was not called in TransactionPlugin ${n}`);if(!a)throw new Error(`next() was not awaited in TransactionPlugin ${n}`)}};await r(0)()};let kh=KV;async function XV(t,e){if(t.features["sui:signTransaction"])return t.features["sui:signTransaction"].signTransaction(e);if(!t.features["sui:signTransactionBlock"])throw new Error(`Provided wallet (${t.name}) does not support the signTransaction feature.`);const{signTransactionBlock:r}=t.features["sui:signTransactionBlock"],n=kh.from(await e.transaction.toJSON()),{transactionBlockBytes:i,signature:s}=await r({transactionBlock:n,account:e.account,chain:e.chain});return{bytes:i,signature:s}}const JV=["standard:connect","standard:events"];function YV(t,e=[]){return[...JV,...e].every(r=>r in t.features)}const QV="sui:devnet",ZV="sui:testnet",eW="sui:localnet",Ex="sui:mainnet",tW=[QV,ZV,eW,Ex];function rW(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function nW(t){var e=rW(t,"string");return typeof e=="symbol"?e:String(e)}function iW(t,e,r){return e=nW(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function vC(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function bC(t){for(var e=1;e{for(var n of Object.keys(t)){var i;if(t[n]!==((i=e[n])!==null&&i!==void 0?i:r[n]))return!1}return!0},Ox=t=>{var e=r=>{var n=t.defaultClassName,i=bC(bC({},t.defaultVariants),r);for(var s in i){var o,a=(o=i[s])!==null&&o!==void 0?o:t.defaultVariants[s];if(a!=null){var u=a;typeof u=="boolean"&&(u=u===!0?"true":"false");var c=t.variantClassNames[s][u];c&&(n+=" "+c)}}for(var[l,f]of t.compoundVariants)sW(l,i,t.defaultVariants)&&(n+=" "+f);return n};return e.variants=()=>Object.keys(t.variantClassNames),e.classNames={get base(){return t.defaultClassName.split(" ")[0]},get variants(){return wC(t.variantClassNames,r=>wC(r,n=>n.split(" ")[0]))}},e};function Cx(t,e=[]){let r=[];function n(s,o){const a=I.createContext(o),u=r.length;r=[...r,o];function c(f){const{scope:d,children:h,...m}=f,g=(d==null?void 0:d[t][u])||a,x=I.useMemo(()=>m,Object.values(m));return V.jsx(g.Provider,{value:x,children:h})}function l(f,d){const h=(d==null?void 0:d[t][u])||a,m=I.useContext(h);if(m)return m;if(o!==void 0)return o;throw new Error(`\`${f}\` must be used within \`${s}\``)}return c.displayName=s+"Provider",[c,l]}const i=()=>{const s=r.map(o=>I.createContext(o));return function(a){const u=(a==null?void 0:a[t])||s;return I.useMemo(()=>({[`__scope${t}`]:{...a,[t]:u}}),[a,u])}};return i.scopeName=t,[n,oW(i,...e)]}function oW(...t){const e=t[0];if(t.length===1)return e;const r=()=>{const n=t.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(s){const o=n.reduce((a,{useScope:u,scopeName:c})=>{const f=u(s)[`__scope${c}`];return{...a,...f}},{});return I.useMemo(()=>({[`__scope${e.scopeName}`]:o}),[o])}};return r.scopeName=e.scopeName,r}function Ej(t){const e=t+"CollectionProvider",[r,n]=Cx(e),[i,s]=r(e,{collectionRef:{current:null},itemMap:new Map}),o=h=>{const{scope:m,children:g}=h,x=Ws.useRef(null),_=Ws.useRef(new Map).current;return V.jsx(i,{scope:m,itemMap:_,collectionRef:x,children:g})};o.displayName=e;const a=t+"CollectionSlot",u=Ws.forwardRef((h,m)=>{const{scope:g,children:x}=h,_=s(a,g),S=cn(m,_.collectionRef);return V.jsx(gn,{ref:S,children:x})});u.displayName=a;const c=t+"CollectionItemSlot",l="data-radix-collection-item",f=Ws.forwardRef((h,m)=>{const{scope:g,children:x,..._}=h,S=Ws.useRef(null),O=cn(m,S),D=s(c,g);return Ws.useEffect(()=>(D.itemMap.set(S,{ref:S,..._}),()=>void D.itemMap.delete(S))),V.jsx(gn,{[l]:"",ref:O,children:x})});f.displayName=c;function d(h){const m=s(t+"CollectionConsumer",h);return Ws.useCallback(()=>{const x=m.collectionRef.current;if(!x)return[];const _=Array.from(x.querySelectorAll(`[${l}]`));return Array.from(m.itemMap.values()).sort((D,z)=>_.indexOf(D.ref.current)-_.indexOf(z.ref.current))},[m.collectionRef,m.itemMap])}return[{Provider:o,Slot:u,ItemSlot:f},d,n]}var Oj=I.createContext(void 0),aW=t=>{const{dir:e,children:r}=t;return V.jsx(Oj.Provider,{value:e,children:r})};function Cj(t){const e=I.useContext(Oj);return t||e||"ltr"}const uW=["top","right","bottom","left"],Ya=Math.min,bi=Math.max,iy=Math.round,r0=Math.floor,no=t=>({x:t,y:t}),cW={left:"right",right:"left",bottom:"top",top:"bottom"},lW={start:"end",end:"start"};function r1(t,e,r){return bi(t,Ya(e,r))}function Go(t,e){return typeof t=="function"?t(e):t}function qo(t){return t.split("-")[0]}function jf(t){return t.split("-")[1]}function Tx(t){return t==="x"?"y":"x"}function Px(t){return t==="y"?"height":"width"}function Qa(t){return["top","bottom"].includes(qo(t))?"y":"x"}function Ix(t){return Tx(Qa(t))}function fW(t,e,r){r===void 0&&(r=!1);const n=jf(t),i=Ix(t),s=Px(i);let o=i==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return e.reference[s]>e.floating[s]&&(o=sy(o)),[o,sy(o)]}function dW(t){const e=sy(t);return[n1(t),e,n1(e)]}function n1(t){return t.replace(/start|end/g,e=>lW[e])}function hW(t,e,r){const n=["left","right"],i=["right","left"],s=["top","bottom"],o=["bottom","top"];switch(t){case"top":case"bottom":return r?e?i:n:e?n:i;case"left":case"right":return e?s:o;default:return[]}}function pW(t,e,r,n){const i=jf(t);let s=hW(qo(t),r==="start",n);return i&&(s=s.map(o=>o+"-"+i),e&&(s=s.concat(s.map(n1)))),s}function sy(t){return t.replace(/left|right|bottom|top/g,e=>cW[e])}function mW(t){return{top:0,right:0,bottom:0,left:0,...t}}function Tj(t){return typeof t!="number"?mW(t):{top:t,right:t,bottom:t,left:t}}function oy(t){const{x:e,y:r,width:n,height:i}=t;return{width:n,height:i,top:r,left:e,right:e+n,bottom:r+i,x:e,y:r}}function _C(t,e,r){let{reference:n,floating:i}=t;const s=Qa(e),o=Ix(e),a=Px(o),u=qo(e),c=s==="y",l=n.x+n.width/2-i.width/2,f=n.y+n.height/2-i.height/2,d=n[a]/2-i[a]/2;let h;switch(u){case"top":h={x:l,y:n.y-i.height};break;case"bottom":h={x:l,y:n.y+n.height};break;case"right":h={x:n.x+n.width,y:f};break;case"left":h={x:n.x-i.width,y:f};break;default:h={x:n.x,y:n.y}}switch(jf(e)){case"start":h[o]-=d*(r&&c?-1:1);break;case"end":h[o]+=d*(r&&c?-1:1);break}return h}const yW=async(t,e,r)=>{const{placement:n="bottom",strategy:i="absolute",middleware:s=[],platform:o}=r,a=s.filter(Boolean),u=await(o.isRTL==null?void 0:o.isRTL(e));let c=await o.getElementRects({reference:t,floating:e,strategy:i}),{x:l,y:f}=_C(c,n,u),d=n,h={},m=0;for(let g=0;g({name:"arrow",options:t,async fn(e){const{x:r,y:n,placement:i,rects:s,platform:o,elements:a,middlewareData:u}=e,{element:c,padding:l=0}=Go(t,e)||{};if(c==null)return{};const f=Tj(l),d={x:r,y:n},h=Ix(i),m=Px(h),g=await o.getDimensions(c),x=h==="y",_=x?"top":"left",S=x?"bottom":"right",O=x?"clientHeight":"clientWidth",D=s.reference[m]+s.reference[h]-d[h]-s.floating[m],z=d[h]-s.reference[h],G=await(o.getOffsetParent==null?void 0:o.getOffsetParent(c));let K=G?G[O]:0;(!K||!await(o.isElement==null?void 0:o.isElement(G)))&&(K=a.floating[O]||s.floating[m]);const J=D/2-z/2,fe=K/2-g[m]/2-1,pe=Ya(f[_],fe),Oe=Ya(f[S],fe),Ue=pe,W=K-g[m]-Oe,p=K/2-g[m]/2+J,T=r1(Ue,p,W),$=!u.arrow&&jf(i)!=null&&p!==T&&s.reference[m]/2-(pp<=0)){var Oe,Ue;const p=(((Oe=s.flip)==null?void 0:Oe.index)||0)+1,T=K[p];if(T)return{data:{index:p,overflows:pe},reset:{placement:T}};let $=(Ue=pe.filter(L=>L.overflows[0]<=0).sort((L,N)=>L.overflows[1]-N.overflows[1])[0])==null?void 0:Ue.placement;if(!$)switch(h){case"bestFit":{var W;const L=(W=pe.filter(N=>{if(G){const j=Qa(N.placement);return j===S||j==="y"}return!0}).map(N=>[N.placement,N.overflows.filter(j=>j>0).reduce((j,B)=>j+B,0)]).sort((N,j)=>N[1]-j[1])[0])==null?void 0:W[0];L&&($=L);break}case"initialPlacement":$=a;break}if(i!==$)return{reset:{placement:$}}}return{}}}};function xC(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function SC(t){return uW.some(e=>t[e]>=0)}const bW=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){const{rects:r}=e,{strategy:n="referenceHidden",...i}=Go(t,e);switch(n){case"referenceHidden":{const s=await Ah(e,{...i,elementContext:"reference"}),o=xC(s,r.reference);return{data:{referenceHiddenOffsets:o,referenceHidden:SC(o)}}}case"escaped":{const s=await Ah(e,{...i,altBoundary:!0}),o=xC(s,r.floating);return{data:{escapedOffsets:o,escaped:SC(o)}}}default:return{}}}}};async function wW(t,e){const{placement:r,platform:n,elements:i}=t,s=await(n.isRTL==null?void 0:n.isRTL(i.floating)),o=qo(r),a=jf(r),u=Qa(r)==="y",c=["left","top"].includes(o)?-1:1,l=s&&u?-1:1,f=Go(e,t);let{mainAxis:d,crossAxis:h,alignmentAxis:m}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof m=="number"&&(h=a==="end"?m*-1:m),u?{x:h*l,y:d*c}:{x:d*c,y:h*l}}const _W=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var r,n;const{x:i,y:s,placement:o,middlewareData:a}=e,u=await wW(e,t);return o===((r=a.offset)==null?void 0:r.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:i+u.x,y:s+u.y,data:{...u,placement:o}}}}},xW=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:r,y:n,placement:i}=e,{mainAxis:s=!0,crossAxis:o=!1,limiter:a={fn:x=>{let{x:_,y:S}=x;return{x:_,y:S}}},...u}=Go(t,e),c={x:r,y:n},l=await Ah(e,u),f=Qa(qo(i)),d=Tx(f);let h=c[d],m=c[f];if(s){const x=d==="y"?"top":"left",_=d==="y"?"bottom":"right",S=h+l[x],O=h-l[_];h=r1(S,h,O)}if(o){const x=f==="y"?"top":"left",_=f==="y"?"bottom":"right",S=m+l[x],O=m-l[_];m=r1(S,m,O)}const g=a.fn({...e,[d]:h,[f]:m});return{...g,data:{x:g.x-r,y:g.y-n,enabled:{[d]:s,[f]:o}}}}}},SW=function(t){return t===void 0&&(t={}),{options:t,fn(e){const{x:r,y:n,placement:i,rects:s,middlewareData:o}=e,{offset:a=0,mainAxis:u=!0,crossAxis:c=!0}=Go(t,e),l={x:r,y:n},f=Qa(i),d=Tx(f);let h=l[d],m=l[f];const g=Go(a,e),x=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(u){const O=d==="y"?"height":"width",D=s.reference[d]-s.floating[O]+x.mainAxis,z=s.reference[d]+s.reference[O]-x.mainAxis;hz&&(h=z)}if(c){var _,S;const O=d==="y"?"width":"height",D=["top","left"].includes(qo(i)),z=s.reference[f]-s.floating[O]+(D&&((_=o.offset)==null?void 0:_[f])||0)+(D?0:x.crossAxis),G=s.reference[f]+s.reference[O]+(D?0:((S=o.offset)==null?void 0:S[f])||0)-(D?x.crossAxis:0);mG&&(m=G)}return{[d]:h,[f]:m}}}},EW=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){var r,n;const{placement:i,rects:s,platform:o,elements:a}=e,{apply:u=()=>{},...c}=Go(t,e),l=await Ah(e,c),f=qo(i),d=jf(i),h=Qa(i)==="y",{width:m,height:g}=s.floating;let x,_;f==="top"||f==="bottom"?(x=f,_=d===(await(o.isRTL==null?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(_=f,x=d==="end"?"top":"bottom");const S=g-l.top-l.bottom,O=m-l.left-l.right,D=Ya(g-l[x],S),z=Ya(m-l[_],O),G=!e.middlewareData.shift;let K=D,J=z;if((r=e.middlewareData.shift)!=null&&r.enabled.x&&(J=O),(n=e.middlewareData.shift)!=null&&n.enabled.y&&(K=S),G&&!d){const pe=bi(l.left,0),Oe=bi(l.right,0),Ue=bi(l.top,0),W=bi(l.bottom,0);h?J=m-2*(pe!==0||Oe!==0?pe+Oe:bi(l.left,l.right)):K=g-2*(Ue!==0||W!==0?Ue+W:bi(l.top,l.bottom))}await u({...e,availableWidth:J,availableHeight:K});const fe=await o.getDimensions(a.floating);return m!==fe.width||g!==fe.height?{reset:{rects:!0}}:{}}}};function pg(){return typeof window<"u"}function Mf(t){return Pj(t)?(t.nodeName||"").toLowerCase():"#document"}function Si(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function uo(t){var e;return(e=(Pj(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function Pj(t){return pg()?t instanceof Node||t instanceof Si(t).Node:!1}function ks(t){return pg()?t instanceof Element||t instanceof Si(t).Element:!1}function oo(t){return pg()?t instanceof HTMLElement||t instanceof Si(t).HTMLElement:!1}function EC(t){return!pg()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Si(t).ShadowRoot}function vp(t){const{overflow:e,overflowX:r,overflowY:n,display:i}=As(t);return/auto|scroll|overlay|hidden|clip/.test(e+n+r)&&!["inline","contents"].includes(i)}function OW(t){return["table","td","th"].includes(Mf(t))}function mg(t){return[":popover-open",":modal"].some(e=>{try{return t.matches(e)}catch{return!1}})}function kx(t){const e=Ax(),r=ks(t)?As(t):t;return r.transform!=="none"||r.perspective!=="none"||(r.containerType?r.containerType!=="normal":!1)||!e&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!e&&(r.filter?r.filter!=="none":!1)||["transform","perspective","filter"].some(n=>(r.willChange||"").includes(n))||["paint","layout","strict","content"].some(n=>(r.contain||"").includes(n))}function CW(t){let e=Za(t);for(;oo(e)&&!vf(e);){if(kx(e))return e;if(mg(e))return null;e=Za(e)}return null}function Ax(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function vf(t){return["html","body","#document"].includes(Mf(t))}function As(t){return Si(t).getComputedStyle(t)}function yg(t){return ks(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Za(t){if(Mf(t)==="html")return t;const e=t.assignedSlot||t.parentNode||EC(t)&&t.host||uo(t);return EC(e)?e.host:e}function Ij(t){const e=Za(t);return vf(e)?t.ownerDocument?t.ownerDocument.body:t.body:oo(e)&&vp(e)?e:Ij(e)}function jh(t,e,r){var n;e===void 0&&(e=[]),r===void 0&&(r=!0);const i=Ij(t),s=i===((n=t.ownerDocument)==null?void 0:n.body),o=Si(i);if(s){const a=i1(o);return e.concat(o,o.visualViewport||[],vp(i)?i:[],a&&r?jh(a):[])}return e.concat(i,jh(i,[],r))}function i1(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function kj(t){const e=As(t);let r=parseFloat(e.width)||0,n=parseFloat(e.height)||0;const i=oo(t),s=i?t.offsetWidth:r,o=i?t.offsetHeight:n,a=iy(r)!==s||iy(n)!==o;return a&&(r=s,n=o),{width:r,height:n,$:a}}function jx(t){return ks(t)?t:t.contextElement}function jl(t){const e=jx(t);if(!oo(e))return no(1);const r=e.getBoundingClientRect(),{width:n,height:i,$:s}=kj(e);let o=(s?iy(r.width):r.width)/n,a=(s?iy(r.height):r.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!a||!Number.isFinite(a))&&(a=1),{x:o,y:a}}const TW=no(0);function Aj(t){const e=Si(t);return!Ax()||!e.visualViewport?TW:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function PW(t,e,r){return e===void 0&&(e=!1),!r||e&&r!==Si(t)?!1:e}function gc(t,e,r,n){e===void 0&&(e=!1),r===void 0&&(r=!1);const i=t.getBoundingClientRect(),s=jx(t);let o=no(1);e&&(n?ks(n)&&(o=jl(n)):o=jl(t));const a=PW(s,r,n)?Aj(s):no(0);let u=(i.left+a.x)/o.x,c=(i.top+a.y)/o.y,l=i.width/o.x,f=i.height/o.y;if(s){const d=Si(s),h=n&&ks(n)?Si(n):n;let m=d,g=i1(m);for(;g&&n&&h!==m;){const x=jl(g),_=g.getBoundingClientRect(),S=As(g),O=_.left+(g.clientLeft+parseFloat(S.paddingLeft))*x.x,D=_.top+(g.clientTop+parseFloat(S.paddingTop))*x.y;u*=x.x,c*=x.y,l*=x.x,f*=x.y,u+=O,c+=D,m=Si(g),g=i1(m)}}return oy({width:l,height:f,x:u,y:c})}function Mx(t,e){const r=yg(t).scrollLeft;return e?e.left+r:gc(uo(t)).left+r}function jj(t,e,r){r===void 0&&(r=!1);const n=t.getBoundingClientRect(),i=n.left+e.scrollLeft-(r?0:Mx(t,n)),s=n.top+e.scrollTop;return{x:i,y:s}}function IW(t){let{elements:e,rect:r,offsetParent:n,strategy:i}=t;const s=i==="fixed",o=uo(n),a=e?mg(e.floating):!1;if(n===o||a&&s)return r;let u={scrollLeft:0,scrollTop:0},c=no(1);const l=no(0),f=oo(n);if((f||!f&&!s)&&((Mf(n)!=="body"||vp(o))&&(u=yg(n)),oo(n))){const h=gc(n);c=jl(n),l.x=h.x+n.clientLeft,l.y=h.y+n.clientTop}const d=o&&!f&&!s?jj(o,u,!0):no(0);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-u.scrollLeft*c.x+l.x+d.x,y:r.y*c.y-u.scrollTop*c.y+l.y+d.y}}function kW(t){return Array.from(t.getClientRects())}function AW(t){const e=uo(t),r=yg(t),n=t.ownerDocument.body,i=bi(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),s=bi(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let o=-r.scrollLeft+Mx(t);const a=-r.scrollTop;return As(n).direction==="rtl"&&(o+=bi(e.clientWidth,n.clientWidth)-i),{width:i,height:s,x:o,y:a}}function jW(t,e){const r=Si(t),n=uo(t),i=r.visualViewport;let s=n.clientWidth,o=n.clientHeight,a=0,u=0;if(i){s=i.width,o=i.height;const c=Ax();(!c||c&&e==="fixed")&&(a=i.offsetLeft,u=i.offsetTop)}return{width:s,height:o,x:a,y:u}}function MW(t,e){const r=gc(t,!0,e==="fixed"),n=r.top+t.clientTop,i=r.left+t.clientLeft,s=oo(t)?jl(t):no(1),o=t.clientWidth*s.x,a=t.clientHeight*s.y,u=i*s.x,c=n*s.y;return{width:o,height:a,x:u,y:c}}function OC(t,e,r){let n;if(e==="viewport")n=jW(t,r);else if(e==="document")n=AW(uo(t));else if(ks(e))n=MW(e,r);else{const i=Aj(t);n={x:e.x-i.x,y:e.y-i.y,width:e.width,height:e.height}}return oy(n)}function Mj(t,e){const r=Za(t);return r===e||!ks(r)||vf(r)?!1:As(r).position==="fixed"||Mj(r,e)}function $W(t,e){const r=e.get(t);if(r)return r;let n=jh(t,[],!1).filter(a=>ks(a)&&Mf(a)!=="body"),i=null;const s=As(t).position==="fixed";let o=s?Za(t):t;for(;ks(o)&&!vf(o);){const a=As(o),u=kx(o);!u&&a.position==="fixed"&&(i=null),(s?!u&&!i:!u&&a.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||vp(o)&&!u&&Mj(t,o))?n=n.filter(l=>l!==o):i=a,o=Za(o)}return e.set(t,n),n}function NW(t){let{element:e,boundary:r,rootBoundary:n,strategy:i}=t;const o=[...r==="clippingAncestors"?mg(e)?[]:$W(e,this._c):[].concat(r),n],a=o[0],u=o.reduce((c,l)=>{const f=OC(e,l,i);return c.top=bi(f.top,c.top),c.right=Ya(f.right,c.right),c.bottom=Ya(f.bottom,c.bottom),c.left=bi(f.left,c.left),c},OC(e,a,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function RW(t){const{width:e,height:r}=kj(t);return{width:e,height:r}}function DW(t,e,r){const n=oo(e),i=uo(e),s=r==="fixed",o=gc(t,!0,s,e);let a={scrollLeft:0,scrollTop:0};const u=no(0);if(n||!n&&!s)if((Mf(e)!=="body"||vp(i))&&(a=yg(e)),n){const d=gc(e,!0,s,e);u.x=d.x+e.clientLeft,u.y=d.y+e.clientTop}else i&&(u.x=Mx(i));const c=i&&!n&&!s?jj(i,a):no(0),l=o.left+a.scrollLeft-u.x-c.x,f=o.top+a.scrollTop-u.y-c.y;return{x:l,y:f,width:o.width,height:o.height}}function Bv(t){return As(t).position==="static"}function CC(t,e){if(!oo(t)||As(t).position==="fixed")return null;if(e)return e(t);let r=t.offsetParent;return uo(t)===r&&(r=r.ownerDocument.body),r}function $j(t,e){const r=Si(t);if(mg(t))return r;if(!oo(t)){let i=Za(t);for(;i&&!vf(i);){if(ks(i)&&!Bv(i))return i;i=Za(i)}return r}let n=CC(t,e);for(;n&&OW(n)&&Bv(n);)n=CC(n,e);return n&&vf(n)&&Bv(n)&&!kx(n)?r:n||CW(t)||r}const BW=async function(t){const e=this.getOffsetParent||$j,r=this.getDimensions,n=await r(t.floating);return{reference:DW(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function UW(t){return As(t).direction==="rtl"}const FW={convertOffsetParentRelativeRectToViewportRelativeRect:IW,getDocumentElement:uo,getClippingRect:NW,getOffsetParent:$j,getElementRects:BW,getClientRects:kW,getDimensions:RW,getScale:jl,isElement:ks,isRTL:UW};function LW(t,e){let r=null,n;const i=uo(t);function s(){var a;clearTimeout(n),(a=r)==null||a.disconnect(),r=null}function o(a,u){a===void 0&&(a=!1),u===void 0&&(u=1),s();const{left:c,top:l,width:f,height:d}=t.getBoundingClientRect();if(a||e(),!f||!d)return;const h=r0(l),m=r0(i.clientWidth-(c+f)),g=r0(i.clientHeight-(l+d)),x=r0(c),S={rootMargin:-h+"px "+-m+"px "+-g+"px "+-x+"px",threshold:bi(0,Ya(1,u))||1};let O=!0;function D(z){const G=z[0].intersectionRatio;if(G!==u){if(!O)return o();G?o(!1,G):n=setTimeout(()=>{o(!1,1e-7)},1e3)}O=!1}try{r=new IntersectionObserver(D,{...S,root:i.ownerDocument})}catch{r=new IntersectionObserver(D,S)}r.observe(t)}return o(!0),s}function zW(t,e,r,n){n===void 0&&(n={});const{ancestorScroll:i=!0,ancestorResize:s=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:u=!1}=n,c=jx(t),l=i||s?[...c?jh(c):[],...jh(e)]:[];l.forEach(_=>{i&&_.addEventListener("scroll",r,{passive:!0}),s&&_.addEventListener("resize",r)});const f=c&&a?LW(c,r):null;let d=-1,h=null;o&&(h=new ResizeObserver(_=>{let[S]=_;S&&S.target===c&&h&&(h.unobserve(e),cancelAnimationFrame(d),d=requestAnimationFrame(()=>{var O;(O=h)==null||O.observe(e)})),r()}),c&&!u&&h.observe(c),h.observe(e));let m,g=u?gc(t):null;u&&x();function x(){const _=gc(t);g&&(_.x!==g.x||_.y!==g.y||_.width!==g.width||_.height!==g.height)&&r(),g=_,m=requestAnimationFrame(x)}return r(),()=>{var _;l.forEach(S=>{i&&S.removeEventListener("scroll",r),s&&S.removeEventListener("resize",r)}),f==null||f(),(_=h)==null||_.disconnect(),h=null,u&&cancelAnimationFrame(m)}}const VW=_W,WW=xW,HW=vW,GW=EW,qW=bW,TC=gW,KW=SW,XW=(t,e,r)=>{const n=new Map,i={platform:FW,...r},s={...i.platform,_c:n};return yW(t,e,{...i,platform:s})};var V0=typeof document<"u"?I.useLayoutEffect:I.useEffect;function ay(t,e){if(t===e)return!0;if(typeof t!=typeof e)return!1;if(typeof t=="function"&&t.toString()===e.toString())return!0;let r,n,i;if(t&&e&&typeof t=="object"){if(Array.isArray(t)){if(r=t.length,r!==e.length)return!1;for(n=r;n--!==0;)if(!ay(t[n],e[n]))return!1;return!0}if(i=Object.keys(t),r=i.length,r!==Object.keys(e).length)return!1;for(n=r;n--!==0;)if(!{}.hasOwnProperty.call(e,i[n]))return!1;for(n=r;n--!==0;){const s=i[n];if(!(s==="_owner"&&t.$$typeof)&&!ay(t[s],e[s]))return!1}return!0}return t!==t&&e!==e}function Nj(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function PC(t,e){const r=Nj(t);return Math.round(e*r)/r}function Uv(t){const e=I.useRef(t);return V0(()=>{e.current=t}),e}function JW(t){t===void 0&&(t={});const{placement:e="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:s,floating:o}={},transform:a=!0,whileElementsMounted:u,open:c}=t,[l,f]=I.useState({x:0,y:0,strategy:r,placement:e,middlewareData:{},isPositioned:!1}),[d,h]=I.useState(n);ay(d,n)||h(n);const[m,g]=I.useState(null),[x,_]=I.useState(null),S=I.useCallback(N=>{N!==G.current&&(G.current=N,g(N))},[]),O=I.useCallback(N=>{N!==K.current&&(K.current=N,_(N))},[]),D=s||m,z=o||x,G=I.useRef(null),K=I.useRef(null),J=I.useRef(l),fe=u!=null,pe=Uv(u),Oe=Uv(i),Ue=Uv(c),W=I.useCallback(()=>{if(!G.current||!K.current)return;const N={placement:e,strategy:r,middleware:d};Oe.current&&(N.platform=Oe.current),XW(G.current,K.current,N).then(j=>{const B={...j,isPositioned:Ue.current!==!1};p.current&&!ay(J.current,B)&&(J.current=B,Qy.flushSync(()=>{f(B)}))})},[d,e,r,Oe,Ue]);V0(()=>{c===!1&&J.current.isPositioned&&(J.current.isPositioned=!1,f(N=>({...N,isPositioned:!1})))},[c]);const p=I.useRef(!1);V0(()=>(p.current=!0,()=>{p.current=!1}),[]),V0(()=>{if(D&&(G.current=D),z&&(K.current=z),D&&z){if(pe.current)return pe.current(D,z,W);W()}},[D,z,W,pe,fe]);const T=I.useMemo(()=>({reference:G,floating:K,setReference:S,setFloating:O}),[S,O]),$=I.useMemo(()=>({reference:D,floating:z}),[D,z]),L=I.useMemo(()=>{const N={position:r,left:0,top:0};if(!$.floating)return N;const j=PC($.floating,l.x),B=PC($.floating,l.y);return a?{...N,transform:"translate("+j+"px, "+B+"px)",...Nj($.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:j,top:B}},[r,a,$.floating,l.x,l.y]);return I.useMemo(()=>({...l,update:W,refs:T,elements:$,floatingStyles:L}),[l,W,T,$,L])}const YW=t=>{function e(r){return{}.hasOwnProperty.call(r,"current")}return{name:"arrow",options:t,fn(r){const{element:n,padding:i}=typeof t=="function"?t(r):t;return n&&e(n)?n.current!=null?TC({element:n.current,padding:i}).fn(r):{}:n?TC({element:n,padding:i}).fn(r):{}}}},QW=(t,e)=>({...VW(t),options:[t,e]}),ZW=(t,e)=>({...WW(t),options:[t,e]}),eH=(t,e)=>({...KW(t),options:[t,e]}),tH=(t,e)=>({...HW(t),options:[t,e]}),rH=(t,e)=>({...GW(t),options:[t,e]}),nH=(t,e)=>({...qW(t),options:[t,e]}),iH=(t,e)=>({...YW(t),options:[t,e]});var sH="Arrow",Rj=I.forwardRef((t,e)=>{const{children:r,width:n=10,height:i=5,...s}=t;return V.jsx(Wr.svg,{...s,ref:e,width:n,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?r:V.jsx("polygon",{points:"0,0 30,0 15,10"})})});Rj.displayName=sH;var oH=Rj;function aH(t){const[e,r]=I.useState(void 0);return fc(()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const n=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const s=i[0];let o,a;if("borderBoxSize"in s){const u=s.borderBoxSize,c=Array.isArray(u)?u[0]:u;o=c.inlineSize,a=c.blockSize}else o=t.offsetWidth,a=t.offsetHeight;r({width:o,height:a})});return n.observe(t,{box:"border-box"}),()=>n.unobserve(t)}else r(void 0)},[t]),e}var $x="Popper",[Dj,gg]=Cx($x),[uH,Bj]=Dj($x),Uj=t=>{const{__scopePopper:e,children:r}=t,[n,i]=I.useState(null);return V.jsx(uH,{scope:e,anchor:n,onAnchorChange:i,children:r})};Uj.displayName=$x;var Fj="PopperAnchor",Lj=I.forwardRef((t,e)=>{const{__scopePopper:r,virtualRef:n,...i}=t,s=Bj(Fj,r),o=I.useRef(null),a=cn(e,o);return I.useEffect(()=>{s.onAnchorChange((n==null?void 0:n.current)||o.current)}),n?null:V.jsx(Wr.div,{...i,ref:a})});Lj.displayName=Fj;var Nx="PopperContent",[cH,lH]=Dj(Nx),zj=I.forwardRef((t,e)=>{var Xe,it,Ge,mr,Qt,Bt;const{__scopePopper:r,side:n="bottom",sideOffset:i=0,align:s="center",alignOffset:o=0,arrowPadding:a=0,avoidCollisions:u=!0,collisionBoundary:c=[],collisionPadding:l=0,sticky:f="partial",hideWhenDetached:d=!1,updatePositionStrategy:h="optimized",onPlaced:m,...g}=t,x=Bj(Nx,r),[_,S]=I.useState(null),O=cn(e,ln=>S(ln)),[D,z]=I.useState(null),G=aH(D),K=(G==null?void 0:G.width)??0,J=(G==null?void 0:G.height)??0,fe=n+(s!=="center"?"-"+s:""),pe=typeof l=="number"?l:{top:0,right:0,bottom:0,left:0,...l},Oe=Array.isArray(c)?c:[c],Ue=Oe.length>0,W={padding:pe,boundary:Oe.filter(dH),altBoundary:Ue},{refs:p,floatingStyles:T,placement:$,isPositioned:L,middlewareData:N}=JW({strategy:"fixed",placement:fe,whileElementsMounted:(...ln)=>zW(...ln,{animationFrame:h==="always"}),elements:{reference:x.anchor},middleware:[QW({mainAxis:i+J,alignmentAxis:o}),u&&ZW({mainAxis:!0,crossAxis:!1,limiter:f==="partial"?eH():void 0,...W}),u&&tH({...W}),rH({...W,apply:({elements:ln,rects:Ut,availableWidth:ar,availableHeight:Yo})=>{const{width:qt,height:ir}=Ut.reference,bn=ln.floating.style;bn.setProperty("--radix-popper-available-width",`${ar}px`),bn.setProperty("--radix-popper-available-height",`${Yo}px`),bn.setProperty("--radix-popper-anchor-width",`${qt}px`),bn.setProperty("--radix-popper-anchor-height",`${ir}px`)}}),D&&iH({element:D,padding:a}),hH({arrowWidth:K,arrowHeight:J}),d&&nH({strategy:"referenceHidden",...W})]}),[j,B]=Hj($),P=Is(m);fc(()=>{L&&(P==null||P())},[L,P]);const v=(Xe=N.arrow)==null?void 0:Xe.x,U=(it=N.arrow)==null?void 0:it.y,ue=((Ge=N.arrow)==null?void 0:Ge.centerOffset)!==0,[de,Ee]=I.useState();return fc(()=>{_&&Ee(window.getComputedStyle(_).zIndex)},[_]),V.jsx("div",{ref:p.setFloating,"data-radix-popper-content-wrapper":"",style:{...T,transform:L?T.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:de,"--radix-popper-transform-origin":[(mr=N.transformOrigin)==null?void 0:mr.x,(Qt=N.transformOrigin)==null?void 0:Qt.y].join(" "),...((Bt=N.hide)==null?void 0:Bt.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:V.jsx(cH,{scope:r,placedSide:j,onArrowChange:z,arrowX:v,arrowY:U,shouldHideArrow:ue,children:V.jsx(Wr.div,{"data-side":j,"data-align":B,...g,ref:O,style:{...g.style,animation:L?void 0:"none"}})})})});zj.displayName=Nx;var Vj="PopperArrow",fH={top:"bottom",right:"left",bottom:"top",left:"right"},Wj=I.forwardRef(function(e,r){const{__scopePopper:n,...i}=e,s=lH(Vj,n),o=fH[s.placedSide];return V.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:V.jsx(oH,{...i,ref:r,style:{...i.style,display:"block"}})})});Wj.displayName=Vj;function dH(t){return t!==null}var hH=t=>({name:"transformOrigin",options:t,fn(e){var x,_,S;const{placement:r,rects:n,middlewareData:i}=e,o=((x=i.arrow)==null?void 0:x.centerOffset)!==0,a=o?0:t.arrowWidth,u=o?0:t.arrowHeight,[c,l]=Hj(r),f={start:"0%",center:"50%",end:"100%"}[l],d=(((_=i.arrow)==null?void 0:_.x)??0)+a/2,h=(((S=i.arrow)==null?void 0:S.y)??0)+u/2;let m="",g="";return c==="bottom"?(m=o?f:`${d}px`,g=`${-u}px`):c==="top"?(m=o?f:`${d}px`,g=`${n.floating.height+u}px`):c==="right"?(m=`${-u}px`,g=o?f:`${h}px`):c==="left"&&(m=`${n.floating.width+u}px`,g=o?f:`${h}px`),{data:{x:m,y:g}}}});function Hj(t){const[e,r="center"]=t.split("-");return[e,r]}var pH=Uj,Gj=Lj,qj=zj,Kj=Wj,Fv="rovingFocusGroup.onEntryFocus",mH={bubbles:!1,cancelable:!0},vg="RovingFocusGroup",[s1,Xj,yH]=Ej(vg),[gH,Jj]=Cx(vg,[yH]),[vH,bH]=gH(vg),Yj=I.forwardRef((t,e)=>V.jsx(s1.Provider,{scope:t.__scopeRovingFocusGroup,children:V.jsx(s1.Slot,{scope:t.__scopeRovingFocusGroup,children:V.jsx(wH,{...t,ref:e})})}));Yj.displayName=vg;var wH=I.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:s,currentTabStopId:o,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:u,onEntryFocus:c,preventScrollOnEntryFocus:l=!1,...f}=t,d=I.useRef(null),h=cn(e,d),m=Cj(s),[g=null,x]=X_({prop:o,defaultProp:a,onChange:u}),[_,S]=I.useState(!1),O=Is(c),D=Xj(r),z=I.useRef(!1),[G,K]=I.useState(0);return I.useEffect(()=>{const J=d.current;if(J)return J.addEventListener(Fv,O),()=>J.removeEventListener(Fv,O)},[O]),V.jsx(vH,{scope:r,orientation:n,dir:m,loop:i,currentTabStopId:g,onItemFocus:I.useCallback(J=>x(J),[x]),onItemShiftTab:I.useCallback(()=>S(!0),[]),onFocusableItemAdd:I.useCallback(()=>K(J=>J+1),[]),onFocusableItemRemove:I.useCallback(()=>K(J=>J-1),[]),children:V.jsx(Wr.div,{tabIndex:_||G===0?-1:0,"data-orientation":n,...f,ref:h,style:{outline:"none",...t.style},onMouseDown:pt(t.onMouseDown,()=>{z.current=!0}),onFocus:pt(t.onFocus,J=>{const fe=!z.current;if(J.target===J.currentTarget&&fe&&!_){const pe=new CustomEvent(Fv,mH);if(J.currentTarget.dispatchEvent(pe),!pe.defaultPrevented){const Oe=D().filter($=>$.focusable),Ue=Oe.find($=>$.active),W=Oe.find($=>$.id===g),T=[Ue,W,...Oe].filter(Boolean).map($=>$.ref.current);eM(T,l)}}z.current=!1}),onBlur:pt(t.onBlur,()=>S(!1))})})}),Qj="RovingFocusGroupItem",Zj=I.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:s,...o}=t,a=Il(),u=s||a,c=bH(Qj,r),l=c.currentTabStopId===u,f=Xj(r),{onFocusableItemAdd:d,onFocusableItemRemove:h}=c;return I.useEffect(()=>{if(n)return d(),()=>h()},[n,d,h]),V.jsx(s1.ItemSlot,{scope:r,id:u,focusable:n,active:i,children:V.jsx(Wr.span,{tabIndex:l?0:-1,"data-orientation":c.orientation,...o,ref:e,onMouseDown:pt(t.onMouseDown,m=>{n?c.onItemFocus(u):m.preventDefault()}),onFocus:pt(t.onFocus,()=>c.onItemFocus(u)),onKeyDown:pt(t.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){c.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const g=SH(m,c.orientation,c.dir);if(g!==void 0){if(m.metaKey||m.ctrlKey||m.altKey||m.shiftKey)return;m.preventDefault();let _=f().filter(S=>S.focusable).map(S=>S.ref.current);if(g==="last")_.reverse();else if(g==="prev"||g==="next"){g==="prev"&&_.reverse();const S=_.indexOf(m.currentTarget);_=c.loop?EH(_,S+1):_.slice(S+1)}setTimeout(()=>eM(_))}})})})});Zj.displayName=Qj;var _H={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function xH(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function SH(t,e,r){const n=xH(t.key,r);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return _H[n]}function eM(t,e=!1){const r=document.activeElement;for(const n of t)if(n===r||(n.focus({preventScroll:e}),document.activeElement!==r))return}function EH(t,e){return t.map((r,n)=>t[(e+n)%t.length])}var OH=Yj,CH=Zj,o1=["Enter"," "],TH=["ArrowDown","PageUp","Home"],tM=["ArrowUp","PageDown","End"],PH=[...TH,...tM],IH={ltr:[...o1,"ArrowRight"],rtl:[...o1,"ArrowLeft"]},kH={ltr:["ArrowLeft"],rtl:["ArrowRight"]},bp="Menu",[Mh,AH,jH]=Ej(bp),[Sc,rM]=eg(bp,[jH,gg,Jj]),bg=gg(),nM=Jj(),[MH,Ec]=Sc(bp),[$H,wp]=Sc(bp),iM=t=>{const{__scopeMenu:e,open:r=!1,children:n,dir:i,onOpenChange:s,modal:o=!0}=t,a=bg(e),[u,c]=I.useState(null),l=I.useRef(!1),f=Is(s),d=Cj(i);return I.useEffect(()=>{const h=()=>{l.current=!0,document.addEventListener("pointerdown",m,{capture:!0,once:!0}),document.addEventListener("pointermove",m,{capture:!0,once:!0})},m=()=>l.current=!1;return document.addEventListener("keydown",h,{capture:!0}),()=>{document.removeEventListener("keydown",h,{capture:!0}),document.removeEventListener("pointerdown",m,{capture:!0}),document.removeEventListener("pointermove",m,{capture:!0})}},[]),V.jsx(pH,{...a,children:V.jsx(MH,{scope:e,open:r,onOpenChange:f,content:u,onContentChange:c,children:V.jsx($H,{scope:e,onClose:I.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:l,dir:d,modal:o,children:n})})})};iM.displayName=bp;var NH="MenuAnchor",Rx=I.forwardRef((t,e)=>{const{__scopeMenu:r,...n}=t,i=bg(r);return V.jsx(Gj,{...i,...n,ref:e})});Rx.displayName=NH;var Dx="MenuPortal",[RH,sM]=Sc(Dx,{forceMount:void 0}),oM=t=>{const{__scopeMenu:e,forceMount:r,children:n,container:i}=t,s=Ec(Dx,e);return V.jsx(RH,{scope:e,forceMount:r,children:V.jsx(Xo,{present:r||s.open,children:V.jsx(Y_,{asChild:!0,container:i,children:n})})})};oM.displayName=Dx;var Hi="MenuContent",[DH,Bx]=Sc(Hi),aM=I.forwardRef((t,e)=>{const r=sM(Hi,t.__scopeMenu),{forceMount:n=r.forceMount,...i}=t,s=Ec(Hi,t.__scopeMenu),o=wp(Hi,t.__scopeMenu);return V.jsx(Mh.Provider,{scope:t.__scopeMenu,children:V.jsx(Xo,{present:n||s.open,children:V.jsx(Mh.Slot,{scope:t.__scopeMenu,children:o.modal?V.jsx(BH,{...i,ref:e}):V.jsx(UH,{...i,ref:e})})})})}),BH=I.forwardRef((t,e)=>{const r=Ec(Hi,t.__scopeMenu),n=I.useRef(null),i=cn(e,n);return I.useEffect(()=>{const s=n.current;if(s)return aI(s)},[]),V.jsx(Ux,{...t,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:pt(t.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})}),UH=I.forwardRef((t,e)=>{const r=Ec(Hi,t.__scopeMenu);return V.jsx(Ux,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})}),Ux=I.forwardRef((t,e)=>{const{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:o,disableOutsidePointerEvents:a,onEntryFocus:u,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:f,onInteractOutside:d,onDismiss:h,disableOutsideScroll:m,...g}=t,x=Ec(Hi,r),_=wp(Hi,r),S=bg(r),O=nM(r),D=AH(r),[z,G]=I.useState(null),K=I.useRef(null),J=cn(e,K,x.onContentChange),fe=I.useRef(0),pe=I.useRef(""),Oe=I.useRef(0),Ue=I.useRef(null),W=I.useRef("right"),p=I.useRef(0),T=m?Q_:I.Fragment,$=m?{as:gn,allowPinchZoom:!0}:void 0,L=j=>{var Xe,it;const B=pe.current+j,P=D().filter(Ge=>!Ge.disabled),v=document.activeElement,U=(Xe=P.find(Ge=>Ge.ref.current===v))==null?void 0:Xe.textValue,ue=P.map(Ge=>Ge.textValue),de=YH(ue,B,U),Ee=(it=P.find(Ge=>Ge.textValue===de))==null?void 0:it.ref.current;(function Ge(mr){pe.current=mr,window.clearTimeout(fe.current),mr!==""&&(fe.current=window.setTimeout(()=>Ge(""),1e3))})(B),Ee&&setTimeout(()=>Ee.focus())};I.useEffect(()=>()=>window.clearTimeout(fe.current),[]),Q3();const N=I.useCallback(j=>{var P,v;return W.current===((P=Ue.current)==null?void 0:P.side)&&ZH(j,(v=Ue.current)==null?void 0:v.area)},[]);return V.jsx(DH,{scope:r,searchRef:pe,onItemEnter:I.useCallback(j=>{N(j)&&j.preventDefault()},[N]),onItemLeave:I.useCallback(j=>{var B;N(j)||((B=K.current)==null||B.focus(),G(null))},[N]),onTriggerLeave:I.useCallback(j=>{N(j)&&j.preventDefault()},[N]),pointerGraceTimerRef:Oe,onPointerGraceIntentChange:I.useCallback(j=>{Ue.current=j},[]),children:V.jsx(T,{...$,children:V.jsx(J_,{asChild:!0,trapped:i,onMountAutoFocus:pt(s,j=>{var B;j.preventDefault(),(B=K.current)==null||B.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:V.jsx(tg,{asChild:!0,disableOutsidePointerEvents:a,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:f,onInteractOutside:d,onDismiss:h,children:V.jsx(OH,{asChild:!0,...O,dir:_.dir,orientation:"vertical",loop:n,currentTabStopId:z,onCurrentTabStopIdChange:G,onEntryFocus:pt(u,j=>{_.isUsingKeyboardRef.current||j.preventDefault()}),preventScrollOnEntryFocus:!0,children:V.jsx(qj,{role:"menu","aria-orientation":"vertical","data-state":SM(x.open),"data-radix-menu-content":"",dir:_.dir,...S,...g,ref:J,style:{outline:"none",...g.style},onKeyDown:pt(g.onKeyDown,j=>{const P=j.target.closest("[data-radix-menu-content]")===j.currentTarget,v=j.ctrlKey||j.altKey||j.metaKey,U=j.key.length===1;P&&(j.key==="Tab"&&j.preventDefault(),!v&&U&&L(j.key));const ue=K.current;if(j.target!==ue||!PH.includes(j.key))return;j.preventDefault();const Ee=D().filter(Xe=>!Xe.disabled).map(Xe=>Xe.ref.current);tM.includes(j.key)&&Ee.reverse(),XH(Ee)}),onBlur:pt(t.onBlur,j=>{j.currentTarget.contains(j.target)||(window.clearTimeout(fe.current),pe.current="")}),onPointerMove:pt(t.onPointerMove,$h(j=>{const B=j.target,P=p.current!==j.clientX;if(j.currentTarget.contains(B)&&P){const v=j.clientX>p.current?"right":"left";W.current=v,p.current=j.clientX}}))})})})})})})});aM.displayName=Hi;var FH="MenuGroup",Fx=I.forwardRef((t,e)=>{const{__scopeMenu:r,...n}=t;return V.jsx(Wr.div,{role:"group",...n,ref:e})});Fx.displayName=FH;var LH="MenuLabel",uM=I.forwardRef((t,e)=>{const{__scopeMenu:r,...n}=t;return V.jsx(Wr.div,{...n,ref:e})});uM.displayName=LH;var uy="MenuItem",IC="menu.itemSelect",wg=I.forwardRef((t,e)=>{const{disabled:r=!1,onSelect:n,...i}=t,s=I.useRef(null),o=wp(uy,t.__scopeMenu),a=Bx(uy,t.__scopeMenu),u=cn(e,s),c=I.useRef(!1),l=()=>{const f=s.current;if(!r&&f){const d=new CustomEvent(IC,{bubbles:!0,cancelable:!0});f.addEventListener(IC,h=>n==null?void 0:n(h),{once:!0}),K3(f,d),d.defaultPrevented?c.current=!1:o.onClose()}};return V.jsx(cM,{...i,ref:u,disabled:r,onClick:pt(t.onClick,l),onPointerDown:f=>{var d;(d=t.onPointerDown)==null||d.call(t,f),c.current=!0},onPointerUp:pt(t.onPointerUp,f=>{var d;c.current||(d=f.currentTarget)==null||d.click()}),onKeyDown:pt(t.onKeyDown,f=>{const d=a.searchRef.current!=="";r||d&&f.key===" "||o1.includes(f.key)&&(f.currentTarget.click(),f.preventDefault())})})});wg.displayName=uy;var cM=I.forwardRef((t,e)=>{const{__scopeMenu:r,disabled:n=!1,textValue:i,...s}=t,o=Bx(uy,r),a=nM(r),u=I.useRef(null),c=cn(e,u),[l,f]=I.useState(!1),[d,h]=I.useState("");return I.useEffect(()=>{const m=u.current;m&&h((m.textContent??"").trim())},[s.children]),V.jsx(Mh.ItemSlot,{scope:r,disabled:n,textValue:i??d,children:V.jsx(CH,{asChild:!0,...a,focusable:!n,children:V.jsx(Wr.div,{role:"menuitem","data-highlighted":l?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0,...s,ref:c,onPointerMove:pt(t.onPointerMove,$h(m=>{n?o.onItemLeave(m):(o.onItemEnter(m),m.defaultPrevented||m.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:pt(t.onPointerLeave,$h(m=>o.onItemLeave(m))),onFocus:pt(t.onFocus,()=>f(!0)),onBlur:pt(t.onBlur,()=>f(!1))})})})}),zH="MenuCheckboxItem",lM=I.forwardRef((t,e)=>{const{checked:r=!1,onCheckedChange:n,...i}=t;return V.jsx(mM,{scope:t.__scopeMenu,checked:r,children:V.jsx(wg,{role:"menuitemcheckbox","aria-checked":cy(r)?"mixed":r,...i,ref:e,"data-state":zx(r),onSelect:pt(i.onSelect,()=>n==null?void 0:n(cy(r)?!0:!r),{checkForDefaultPrevented:!1})})})});lM.displayName=zH;var fM="MenuRadioGroup",[VH,WH]=Sc(fM,{value:void 0,onValueChange:()=>{}}),dM=I.forwardRef((t,e)=>{const{value:r,onValueChange:n,...i}=t,s=Is(n);return V.jsx(VH,{scope:t.__scopeMenu,value:r,onValueChange:s,children:V.jsx(Fx,{...i,ref:e})})});dM.displayName=fM;var hM="MenuRadioItem",pM=I.forwardRef((t,e)=>{const{value:r,...n}=t,i=WH(hM,t.__scopeMenu),s=r===i.value;return V.jsx(mM,{scope:t.__scopeMenu,checked:s,children:V.jsx(wg,{role:"menuitemradio","aria-checked":s,...n,ref:e,"data-state":zx(s),onSelect:pt(n.onSelect,()=>{var o;return(o=i.onValueChange)==null?void 0:o.call(i,r)},{checkForDefaultPrevented:!1})})})});pM.displayName=hM;var Lx="MenuItemIndicator",[mM,HH]=Sc(Lx,{checked:!1}),yM=I.forwardRef((t,e)=>{const{__scopeMenu:r,forceMount:n,...i}=t,s=HH(Lx,r);return V.jsx(Xo,{present:n||cy(s.checked)||s.checked===!0,children:V.jsx(Wr.span,{...i,ref:e,"data-state":zx(s.checked)})})});yM.displayName=Lx;var GH="MenuSeparator",gM=I.forwardRef((t,e)=>{const{__scopeMenu:r,...n}=t;return V.jsx(Wr.div,{role:"separator","aria-orientation":"horizontal",...n,ref:e})});gM.displayName=GH;var qH="MenuArrow",vM=I.forwardRef((t,e)=>{const{__scopeMenu:r,...n}=t,i=bg(r);return V.jsx(Kj,{...i,...n,ref:e})});vM.displayName=qH;var KH="MenuSub",[Mpe,bM]=Sc(KH),Ed="MenuSubTrigger",wM=I.forwardRef((t,e)=>{const r=Ec(Ed,t.__scopeMenu),n=wp(Ed,t.__scopeMenu),i=bM(Ed,t.__scopeMenu),s=Bx(Ed,t.__scopeMenu),o=I.useRef(null),{pointerGraceTimerRef:a,onPointerGraceIntentChange:u}=s,c={__scopeMenu:t.__scopeMenu},l=I.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return I.useEffect(()=>l,[l]),I.useEffect(()=>{const f=a.current;return()=>{window.clearTimeout(f),u(null)}},[a,u]),V.jsx(Rx,{asChild:!0,...c,children:V.jsx(cM,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":i.contentId,"data-state":SM(r.open),...t,ref:Zy(e,i.onTriggerChange),onClick:f=>{var d;(d=t.onClick)==null||d.call(t,f),!(t.disabled||f.defaultPrevented)&&(f.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:pt(t.onPointerMove,$h(f=>{s.onItemEnter(f),!f.defaultPrevented&&!t.disabled&&!r.open&&!o.current&&(s.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{r.onOpenChange(!0),l()},100))})),onPointerLeave:pt(t.onPointerLeave,$h(f=>{var h,m;l();const d=(h=r.content)==null?void 0:h.getBoundingClientRect();if(d){const g=(m=r.content)==null?void 0:m.dataset.side,x=g==="right",_=x?-5:5,S=d[x?"left":"right"],O=d[x?"right":"left"];s.onPointerGraceIntentChange({area:[{x:f.clientX+_,y:f.clientY},{x:S,y:d.top},{x:O,y:d.top},{x:O,y:d.bottom},{x:S,y:d.bottom}],side:g}),window.clearTimeout(a.current),a.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(f),f.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:pt(t.onKeyDown,f=>{var h;const d=s.searchRef.current!=="";t.disabled||d&&f.key===" "||IH[n.dir].includes(f.key)&&(r.onOpenChange(!0),(h=r.content)==null||h.focus(),f.preventDefault())})})})});wM.displayName=Ed;var _M="MenuSubContent",xM=I.forwardRef((t,e)=>{const r=sM(Hi,t.__scopeMenu),{forceMount:n=r.forceMount,...i}=t,s=Ec(Hi,t.__scopeMenu),o=wp(Hi,t.__scopeMenu),a=bM(_M,t.__scopeMenu),u=I.useRef(null),c=cn(e,u);return V.jsx(Mh.Provider,{scope:t.__scopeMenu,children:V.jsx(Xo,{present:n||s.open,children:V.jsx(Mh.Slot,{scope:t.__scopeMenu,children:V.jsx(Ux,{id:a.contentId,"aria-labelledby":a.triggerId,...i,ref:c,align:"start",side:o.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:l=>{var f;o.isUsingKeyboardRef.current&&((f=u.current)==null||f.focus()),l.preventDefault()},onCloseAutoFocus:l=>l.preventDefault(),onFocusOutside:pt(t.onFocusOutside,l=>{l.target!==a.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:pt(t.onEscapeKeyDown,l=>{o.onClose(),l.preventDefault()}),onKeyDown:pt(t.onKeyDown,l=>{var h;const f=l.currentTarget.contains(l.target),d=kH[o.dir].includes(l.key);f&&d&&(s.onOpenChange(!1),(h=a.trigger)==null||h.focus(),l.preventDefault())})})})})})});xM.displayName=_M;function SM(t){return t?"open":"closed"}function cy(t){return t==="indeterminate"}function zx(t){return cy(t)?"indeterminate":t?"checked":"unchecked"}function XH(t){const e=document.activeElement;for(const r of t)if(r===e||(r.focus(),document.activeElement!==e))return}function JH(t,e){return t.map((r,n)=>t[(e+n)%t.length])}function YH(t,e,r){const i=e.length>1&&Array.from(e).every(c=>c===e[0])?e[0]:e,s=r?t.indexOf(r):-1;let o=JH(t,Math.max(s,0));i.length===1&&(o=o.filter(c=>c!==r));const u=o.find(c=>c.toLowerCase().startsWith(i.toLowerCase()));return u!==r?u:void 0}function QH(t,e){const{x:r,y:n}=t;let i=!1;for(let s=0,o=e.length-1;sn!=l>n&&r<(c-a)*(n-u)/(l-u)+a&&(i=!i)}return i}function ZH(t,e){if(!e)return!1;const r={x:t.clientX,y:t.clientY};return QH(r,e)}function $h(t){return e=>e.pointerType==="mouse"?t(e):void 0}var eG=iM,tG=Rx,rG=oM,nG=aM,iG=Fx,sG=uM,oG=wg,aG=lM,uG=dM,cG=pM,lG=yM,fG=gM,dG=vM,hG=wM,pG=xM,Vx="DropdownMenu",[mG,$pe]=eg(Vx,[rM]),Qn=rM(),[yG,EM]=mG(Vx),OM=t=>{const{__scopeDropdownMenu:e,children:r,dir:n,open:i,defaultOpen:s,onOpenChange:o,modal:a=!0}=t,u=Qn(e),c=I.useRef(null),[l=!1,f]=X_({prop:i,defaultProp:s,onChange:o});return V.jsx(yG,{scope:e,triggerId:Il(),triggerRef:c,contentId:Il(),open:l,onOpenChange:f,onOpenToggle:I.useCallback(()=>f(d=>!d),[f]),modal:a,children:V.jsx(eG,{...u,open:l,onOpenChange:f,dir:n,modal:a,children:r})})};OM.displayName=Vx;var CM="DropdownMenuTrigger",TM=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,disabled:n=!1,...i}=t,s=EM(CM,r),o=Qn(r);return V.jsx(tG,{asChild:!0,...o,children:V.jsx(Wr.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...i,ref:Zy(e,s.triggerRef),onPointerDown:pt(t.onPointerDown,a=>{!n&&a.button===0&&a.ctrlKey===!1&&(s.onOpenToggle(),s.open||a.preventDefault())}),onKeyDown:pt(t.onKeyDown,a=>{n||(["Enter"," "].includes(a.key)&&s.onOpenToggle(),a.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});TM.displayName=CM;var gG="DropdownMenuPortal",PM=t=>{const{__scopeDropdownMenu:e,...r}=t,n=Qn(e);return V.jsx(rG,{...n,...r})};PM.displayName=gG;var IM="DropdownMenuContent",kM=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=EM(IM,r),s=Qn(r),o=I.useRef(!1);return V.jsx(nG,{id:i.contentId,"aria-labelledby":i.triggerId,...s,...n,ref:e,onCloseAutoFocus:pt(t.onCloseAutoFocus,a=>{var u;o.current||(u=i.triggerRef.current)==null||u.focus(),o.current=!1,a.preventDefault()}),onInteractOutside:pt(t.onInteractOutside,a=>{const u=a.detail.originalEvent,c=u.button===0&&u.ctrlKey===!0,l=u.button===2||c;(!i.modal||l)&&(o.current=!0)}),style:{...t.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});kM.displayName=IM;var vG="DropdownMenuGroup",bG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(iG,{...i,...n,ref:e})});bG.displayName=vG;var wG="DropdownMenuLabel",_G=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(sG,{...i,...n,ref:e})});_G.displayName=wG;var xG="DropdownMenuItem",AM=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(oG,{...i,...n,ref:e})});AM.displayName=xG;var SG="DropdownMenuCheckboxItem",EG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(aG,{...i,...n,ref:e})});EG.displayName=SG;var OG="DropdownMenuRadioGroup",CG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(uG,{...i,...n,ref:e})});CG.displayName=OG;var TG="DropdownMenuRadioItem",PG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(cG,{...i,...n,ref:e})});PG.displayName=TG;var IG="DropdownMenuItemIndicator",kG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(lG,{...i,...n,ref:e})});kG.displayName=IG;var AG="DropdownMenuSeparator",jM=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(fG,{...i,...n,ref:e})});jM.displayName=AG;var jG="DropdownMenuArrow",MG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(dG,{...i,...n,ref:e})});MG.displayName=jG;var $G="DropdownMenuSubTrigger",NG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(hG,{...i,...n,ref:e})});NG.displayName=$G;var RG="DropdownMenuSubContent",DG=I.forwardRef((t,e)=>{const{__scopeDropdownMenu:r,...n}=t,i=Qn(r);return V.jsx(pG,{...i,...n,ref:e,style:{...t.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});DG.displayName=RG;var BG=OM,UG=TM,FG=PM,LG=kM,MM=AM,zG=jM;const VG="1.15.0",WG="1.39.0",HG={"-32700":"ParseError","-32701":"OversizedRequest","-32702":"OversizedResponse","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError","-32604":"ServerBusy","-32000":"CallExecutionFailed","-32001":"UnknownError","-32003":"SubscriptionClosed","-32004":"SubscriptionClosedWithError","-32005":"BatchesNotSupported","-32006":"TooManySubscriptions","-32050":"TransientError","-32002":"TransactionExecutionClientError"};let $M=class extends Error{},NM=class extends $M{constructor(e,r){super(e),this.code=r,this.type=HG[r]??"ServerError"}},GG=class extends $M{constructor(e,r,n){super(e),this.status=r,this.statusText=n}};var RM=t=>{throw TypeError(t)},Wx=(t,e,r)=>e.has(t)||RM("Cannot "+r),Ur=(t,e,r)=>(Wx(t,e,"read from private field"),r?r.call(t):e.get(t)),cu=(t,e,r)=>e.has(t)?RM("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Ml=(t,e,r,n)=>(Wx(t,e,"write to private field"),e.set(t,r),r),DM=(t,e,r)=>(Wx(t,e,"access private method"),r),qG=(t,e,r,n)=>({set _(i){Ml(t,e,i)},get _(){return Ur(t,e,n)}}),Su,Jd,Co,Lu,Nh,$l,ly,BM,UM;function KG(t){const e=new URL(t);return e.protocol=e.protocol.replace("http","ws"),e.toString()}const XG={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5};let JG=class{constructor(e,r={}){if(cu(this,ly),cu(this,Su,0),cu(this,Jd,0),cu(this,Co,null),cu(this,Lu,null),cu(this,Nh,new Set),cu(this,$l,new Map),this.endpoint=e,this.options={...XG,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=KG(this.endpoint))}async makeRequest(e,r){const n=await DM(this,ly,BM).call(this);return new Promise((i,s)=>{Ml(this,Su,Ur(this,Su)+1),Ur(this,$l).set(Ur(this,Su),{resolve:i,reject:s,timeout:setTimeout(()=>{Ur(this,$l).delete(Ur(this,Su)),s(new Error(`Request timeout: ${e}`))},this.options.callTimeout)}),n.send(JSON.stringify({jsonrpc:"2.0",id:Ur(this,Su),method:e,params:r}))}).then(({error:i,result:s})=>{if(i)throw new NM(i.message,i.code);return s})}async subscribe(e){const r=new YG(e);return Ur(this,Nh).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};Su=new WeakMap;Jd=new WeakMap;Co=new WeakMap;Lu=new WeakMap;Nh=new WeakMap;$l=new WeakMap;ly=new WeakSet;BM=function(){return Ur(this,Lu)?Ur(this,Lu):(Ml(this,Lu,new Promise(t=>{var e;(e=Ur(this,Co))==null||e.close(),Ml(this,Co,new this.options.WebSocketConstructor(this.endpoint)),Ur(this,Co).addEventListener("open",()=>{Ml(this,Jd,0),t(Ur(this,Co))}),Ur(this,Co).addEventListener("close",()=>{qG(this,Jd)._++,Ur(this,Jd)<=this.options.maxReconnects&&setTimeout(()=>{DM(this,ly,UM).call(this)},this.options.reconnectTimeout)}),Ur(this,Co).addEventListener("message",({data:r})=>{let n;try{n=JSON.parse(r)}catch(i){console.error(new Error(`Failed to parse RPC message: ${r}`,{cause:i}));return}if("id"in n&&n.id!=null&&Ur(this,$l).has(n.id)){const{resolve:i,timeout:s}=Ur(this,$l).get(n.id);clearTimeout(s),i(n)}else if("params"in n){const{params:i}=n;Ur(this,Nh).forEach(s=>{s.subscriptionId===i.subscription&&i.subscription===s.subscriptionId&&s.onMessage(i.result)})}})})),Ur(this,Lu))};UM=async function(){var t;return(t=Ur(this,Co))==null||t.close(),Ml(this,Lu,null),Promise.allSettled([...Ur(this,Nh)].map(e=>e.subscribe(this)))};let YG=class{constructor(e){this.subscriptionId=null,this.subscribed=!1,this.input=e}onMessage(e){this.subscribed&&this.input.onMessage(e)}async unsubscribe(e){const{subscriptionId:r}=this;return this.subscribed=!1,r==null?!1:(this.subscriptionId=null,e.makeRequest(this.input.unsubscribe,[r]))}async subscribe(e){this.subscriptionId=null,this.subscribed=!0;const r=await e.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=r)}};var FM=t=>{throw TypeError(t)},Hx=(t,e,r)=>e.has(t)||FM("Cannot "+r),Ui=(t,e,r)=>(Hx(t,e,"read from private field"),r?r.call(t):e.get(t)),n0=(t,e,r)=>e.has(t)?FM("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),a1=(t,e,r,n)=>(Hx(t,e,"write to private field"),e.set(t,r),r),QG=(t,e,r)=>(Hx(t,e,"access private method"),r),Od,gs,Yd,u1,LM;let ZG=class{constructor(e){n0(this,u1),n0(this,Od,0),n0(this,gs),n0(this,Yd),a1(this,gs,e)}fetch(e,r){const n=Ui(this,gs).fetch??fetch;if(!n)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return n(e,r)}async request(e){var i,s;a1(this,Od,Ui(this,Od)+1);const r=await this.fetch(((i=Ui(this,gs).rpc)==null?void 0:i.url)??Ui(this,gs).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":VG,"Client-Target-Api-Version":WG,"Client-Request-Method":e.method,...(s=Ui(this,gs).rpc)==null?void 0:s.headers},body:JSON.stringify({jsonrpc:"2.0",id:Ui(this,Od),method:e.method,params:e.params})});if(!r.ok)throw new GG(`Unexpected status code: ${r.status}`,r.status,r.statusText);const n=await r.json();if("error"in n&&n.error!=null)throw new NM(n.error.message,n.error.code);return n.result}async subscribe(e){const r=await QG(this,u1,LM).call(this).subscribe(e);return async()=>!!await r()}};Od=new WeakMap;gs=new WeakMap;Yd=new WeakMap;u1=new WeakSet;LM=function(){var t;if(!Ui(this,Yd)){const e=Ui(this,gs).WebSocketConstructor??WebSocket;if(!e)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");a1(this,Yd,new JG(((t=Ui(this,gs).websocket)==null?void 0:t.url)??Ui(this,gs).url,{WebSocketConstructor:e,...Ui(this,gs).websocket}))}return Ui(this,Yd)};function W0(t){switch(t){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw new Error(`Unknown network: ${t}`)}}const zM=Symbol.for("@mysten/SuiClient");function eq(t){return typeof t=="object"&&t!==null&&t[zM]===!0}let VM=class{get[zM](){return!0}constructor(e){this.transport=e.transport??new ZG({url:e.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(e){if(!e.owner||!Oo(Jt(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[e.owner,e.coinType,e.cursor,e.limit]})}async getAllCoins(e){if(!e.owner||!Oo(Jt(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[e.owner,e.cursor,e.limit]})}async getBalance(e){if(!e.owner||!Oo(Jt(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[e.owner,e.coinType]})}async getAllBalances(e){if(!e.owner||!Oo(Jt(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[e.owner]})}async getCoinMetadata(e){return await this.transport.request({method:"suix_getCoinMetadata",params:[e.coinType]})}async getTotalSupply(e){return await this.transport.request({method:"suix_getTotalSupply",params:[e.coinType]})}async call(e,r){return await this.transport.request({method:e,params:r})}async getMoveFunctionArgTypes(e){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[e.package,e.module,e.function]})}async getNormalizedMoveModulesByPackage(e){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[e.package]})}async getNormalizedMoveModule(e){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[e.package,e.module]})}async getNormalizedMoveFunction(e){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[e.package,e.module,e.function]})}async getNormalizedMoveStruct(e){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[e.package,e.module,e.struct]})}async getOwnedObjects(e){if(!e.owner||!Oo(Jt(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[e.owner,{filter:e.filter,options:e.options},e.cursor,e.limit]})}async getObject(e){if(!e.id||!e0($o(e.id)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"sui_getObject",params:[e.id,e.options]})}async tryGetPastObject(e){return await this.transport.request({method:"sui_tryGetPastObject",params:[e.id,e.version,e.options]})}async multiGetObjects(e){if(e.ids.forEach(n=>{if(!n||!e0($o(n)))throw new Error(`Invalid Sui Object id ${n}`)}),e.ids.length!==new Set(e.ids).size)throw new Error(`Duplicate object ids in batch call ${e.ids}`);return await this.transport.request({method:"sui_multiGetObjects",params:[e.ids,e.options]})}async queryTransactionBlocks(e){return await this.transport.request({method:"suix_queryTransactionBlocks",params:[{filter:e.filter,options:e.options},e.cursor,e.limit,(e.order||"descending")==="descending"]})}async getTransactionBlock(e){if(!aC(e.digest))throw new Error("Invalid Transaction digest");return await this.transport.request({method:"sui_getTransactionBlock",params:[e.digest,e.options]})}async multiGetTransactionBlocks(e){if(e.digests.forEach(n=>{if(!aC(n))throw new Error(`Invalid Transaction digest ${n}`)}),e.digests.length!==new Set(e.digests).size)throw new Error(`Duplicate digests in batch call ${e.digests}`);return await this.transport.request({method:"sui_multiGetTransactionBlocks",params:[e.digests,e.options]})}async executeTransactionBlock({transactionBlock:e,signature:r,options:n,requestType:i}){const s=await this.transport.request({method:"sui_executeTransactionBlock",params:[typeof e=="string"?e:zt(e),Array.isArray(r)?r:[r],n]});if(i==="WaitForLocalExecution")try{await this.waitForTransaction({digest:s.digest})}catch{}return s}async signAndExecuteTransaction({transaction:e,signer:r,...n}){let i;e instanceof Uint8Array?i=e:(e.setSenderIfNotSet(r.toSuiAddress()),i=await e.build({client:this}));const{signature:s,bytes:o}=await r.signTransaction(i);return this.executeTransactionBlock({transactionBlock:o,signature:s,...n})}async getTotalTransactionBlocks(){const e=await this.transport.request({method:"sui_getTotalTransactionBlocks",params:[]});return BigInt(e)}async getReferenceGasPrice(){const e=await this.transport.request({method:"suix_getReferenceGasPrice",params:[]});return BigInt(e)}async getStakes(e){if(!e.owner||!Oo(Jt(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[e.owner]})}async getStakesByIds(e){return e.stakedSuiIds.forEach(r=>{if(!r||!e0($o(r)))throw new Error(`Invalid Sui Stake id ${r}`)}),await this.transport.request({method:"suix_getStakesByIds",params:[e.stakedSuiIds]})}async getLatestSuiSystemState(){return await this.transport.request({method:"suix_getLatestSuiSystemState",params:[]})}async queryEvents(e){return await this.transport.request({method:"suix_queryEvents",params:[e.query,e.cursor,e.limit,(e.order||"descending")==="descending"]})}async subscribeEvent(e){return this.transport.subscribe({method:"suix_subscribeEvent",unsubscribe:"suix_unsubscribeEvent",params:[e.filter],onMessage:e.onMessage})}async subscribeTransaction(e){return this.transport.subscribe({method:"suix_subscribeTransaction",unsubscribe:"suix_unsubscribeTransaction",params:[e.filter],onMessage:e.onMessage})}async devInspectTransactionBlock(e){var n;let r;if(Sj(e.transactionBlock))e.transactionBlock.setSenderIfNotSet(e.sender),r=zt(await e.transactionBlock.build({client:this,onlyTransactionKind:!0}));else if(typeof e.transactionBlock=="string")r=e.transactionBlock;else if(e.transactionBlock instanceof Uint8Array)r=zt(e.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[e.sender,r,(n=e.gasPrice)==null?void 0:n.toString(),e.epoch]})}async dryRunTransactionBlock(e){return await this.transport.request({method:"sui_dryRunTransactionBlock",params:[typeof e.transactionBlock=="string"?e.transactionBlock:zt(e.transactionBlock)]})}async getDynamicFields(e){if(!e.parentId||!e0($o(e.parentId)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"suix_getDynamicFields",params:[e.parentId,e.cursor,e.limit]})}async getDynamicFieldObject(e){return await this.transport.request({method:"suix_getDynamicFieldObject",params:[e.parentId,e.name]})}async getLatestCheckpointSequenceNumber(){const e=await this.transport.request({method:"sui_getLatestCheckpointSequenceNumber",params:[]});return String(e)}async getCheckpoint(e){return await this.transport.request({method:"sui_getCheckpoint",params:[e.id]})}async getCheckpoints(e){return await this.transport.request({method:"sui_getCheckpoints",params:[e.cursor,e==null?void 0:e.limit,e.descendingOrder]})}async getCommitteeInfo(e){return await this.transport.request({method:"suix_getCommitteeInfo",params:[e==null?void 0:e.epoch]})}async getNetworkMetrics(){return await this.transport.request({method:"suix_getNetworkMetrics",params:[]})}async getAddressMetrics(){return await this.transport.request({method:"suix_getLatestAddressMetrics",params:[]})}async getEpochMetrics(e){return await this.transport.request({method:"suix_getEpochMetrics",params:[e==null?void 0:e.cursor,e==null?void 0:e.limit,e==null?void 0:e.descendingOrder]})}async getAllEpochAddressMetrics(e){return await this.transport.request({method:"suix_getAllEpochAddressMetrics",params:[e==null?void 0:e.descendingOrder]})}async getEpochs(e){return await this.transport.request({method:"suix_getEpochs",params:[e==null?void 0:e.cursor,e==null?void 0:e.limit,e==null?void 0:e.descendingOrder]})}async getMoveCallMetrics(){return await this.transport.request({method:"suix_getMoveCallMetrics",params:[]})}async getCurrentEpoch(){return await this.transport.request({method:"suix_getCurrentEpoch",params:[]})}async getValidatorsApy(){return await this.transport.request({method:"suix_getValidatorsApy",params:[]})}async getChainIdentifier(){const e=await this.getCheckpoint({id:"0"}),r=qa(e.digest);return Ka(r.slice(0,4))}async resolveNameServiceAddress(e){return await this.transport.request({method:"suix_resolveNameServiceAddress",params:[e.name]})}async resolveNameServiceNames({format:e="dot",...r}){const{nextCursor:n,hasNextPage:i,data:s}=await this.transport.request({method:"suix_resolveNameServiceNames",params:[r.address,r.cursor,r.limit]});return{hasNextPage:i,nextCursor:n,data:s.map(o=>OL(o,e))}}async getProtocolConfig(e){return await this.transport.request({method:"sui_getProtocolConfig",params:[e==null?void 0:e.version]})}async waitForTransaction({signal:e,timeout:r=60*1e3,pollInterval:n=2*1e3,...i}){const s=AbortSignal.timeout(r),o=new Promise((a,u)=>{s.addEventListener("abort",()=>u(s.reason))});for(o.catch(()=>{});!s.aborted;){e==null||e.throwIfAborted();try{return await this.getTransactionBlock(i)}catch{await Promise.race([new Promise(u=>setTimeout(u,n)),o])}}throw s.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};function WM(t,e){return ot.IntentMessage(ot.fixedArray(e.length,ot.u8())).serialize({intent:{scope:{[t]:!0},version:{V0:!0},appId:{Sui:!0}},value:e}).toBytes()}function HM(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let r=0;r1&&n.slice(1).every(h=>h.length===0||jC(h.charCodeAt(0))),o=r.endsWith('\\"""'),a=t.endsWith('"')&&!o,u=t.endsWith("\\"),c=a||u,l=!i||t.length>70||c||s||o;let f="";const d=i&&jC(t.charCodeAt(0));return(l&&!d||s)&&(f+=` +`),f+=r,(l||c)&&(f+=` +`),'"""'+f+'"""'}const sq=10,XM=2;function oq(t){return _g(t,[])}function _g(t,e){switch(typeof t){case"string":return JSON.stringify(t);case"function":return t.name?`[function ${t.name}]`:"[function]";case"object":return aq(t,e);default:return String(t)}}function aq(t,e){if(t===null)return"null";if(e.includes(t))return"[Circular]";const r=[...e,t];if(uq(t)){const n=t.toJSON();if(n!==t)return typeof n=="string"?n:_g(n,r)}else if(Array.isArray(t))return lq(t,r);return cq(t,r)}function uq(t){return typeof t.toJSON=="function"}function cq(t,e){const r=Object.entries(t);return r.length===0?"{}":e.length>XM?"["+fq(t)+"]":"{ "+r.map(([i,s])=>i+": "+_g(s,e)).join(", ")+" }"}function lq(t,e){if(t.length===0)return"[]";if(e.length>XM)return"[Array]";const r=Math.min(sq,t.length),n=t.length-r,i=[];for(let s=0;s1&&i.push(`... ${n} more items`),"["+i.join(", ")+"]"}function fq(t){const e=Object.prototype.toString.call(t).replace(/^\[object /,"").replace(/]$/,"");if(e==="Object"&&typeof t.constructor=="function"){const r=t.constructor.name;if(typeof r=="string"&&r!=="")return r}return e}function dq(t){return`"${t.replace(hq,pq)}"`}const hq=/[\x00-\x1f\x22\x5c\x7f-\x9f]/g;function pq(t){return mq[t.charCodeAt(0)]}const mq=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000B","\\f","\\r","\\u000E","\\u000F","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001A","\\u001B","\\u001C","\\u001D","\\u001E","\\u001F","","",'\\"',"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\u007F","\\u0080","\\u0081","\\u0082","\\u0083","\\u0084","\\u0085","\\u0086","\\u0087","\\u0088","\\u0089","\\u008A","\\u008B","\\u008C","\\u008D","\\u008E","\\u008F","\\u0090","\\u0091","\\u0092","\\u0093","\\u0094","\\u0095","\\u0096","\\u0097","\\u0098","\\u0099","\\u009A","\\u009B","\\u009C","\\u009D","\\u009E","\\u009F"],yq=Object.freeze({});function gq(t,e,r=KM){const n=new Map;for(const _ of Object.values(c1))n.set(_,vq(e,_));let i,s=Array.isArray(t),o=[t],a=-1,u=[],c=t,l,f;const d=[],h=[];do{a++;const _=a===o.length,S=_&&u.length!==0;if(_){if(l=h.length===0?void 0:d[d.length-1],c=f,f=h.pop(),S)if(s){c=c.slice();let D=0;for(const[z,G]of u){const K=z-D;G===null?(c.splice(K,1),D++):c[K]=G}}else{c=Object.defineProperties({},Object.getOwnPropertyDescriptors(c));for(const[D,z]of u)c[D]=z}a=i.index,o=i.keys,u=i.edits,s=i.inArray,i=i.prev}else if(f){if(l=s?a:o[a],c=f[l],c==null)continue;d.push(l)}let O;if(!Array.isArray(c)){var m,g;kC(c)||rq(!1,`Invalid AST Node: ${oq(c)}.`);const D=_?(m=n.get(c.kind))===null||m===void 0?void 0:m.leave:(g=n.get(c.kind))===null||g===void 0?void 0:g.enter;if(O=D==null?void 0:D.call(e,c,l,f,d,h),O===yq)break;if(O===!1){if(!_){d.pop();continue}}else if(O!==void 0&&(u.push([l,O]),!_))if(kC(O))c=O;else{d.pop();continue}}if(O===void 0&&S&&u.push([l,c]),_)d.pop();else{var x;i={inArray:s,index:a,keys:o,edits:u,prev:i},s=Array.isArray(c),o=s?c:(x=r[c.kind])!==null&&x!==void 0?x:[],a=-1,u=[],f&&h.push(f),f=c}}while(i!==void 0);return u.length!==0?u[u.length-1][1]:t}function vq(t,e){const r=t[e];return typeof r=="object"?r:typeof r=="function"?{enter:r,leave:void 0}:{enter:t.enter,leave:t.leave}}function bq(t){return gq(t,_q)}const wq=80,_q={Name:{leave:t=>t.value},Variable:{leave:t=>"$"+t.name},Document:{leave:t=>Le(t.definitions,` + +`)},OperationDefinition:{leave(t){const e=Ot("(",Le(t.variableDefinitions,", "),")"),r=Le([t.operation,Le([t.name,e]),Le(t.directives," ")]," ");return(r==="query"?"":r+" ")+t.selectionSet}},VariableDefinition:{leave:({variable:t,type:e,defaultValue:r,directives:n})=>t+": "+e+Ot(" = ",r)+Ot(" ",Le(n," "))},SelectionSet:{leave:({selections:t})=>Xi(t)},Field:{leave({alias:t,name:e,arguments:r,directives:n,selectionSet:i}){const s=Ot("",t,": ")+e;let o=s+Ot("(",Le(r,", "),")");return o.length>wq&&(o=s+Ot(`( +`,H0(Le(r,` +`)),` +)`)),Le([o,Le(n," "),i]," ")}},Argument:{leave:({name:t,value:e})=>t+": "+e},FragmentSpread:{leave:({name:t,directives:e})=>"..."+t+Ot(" ",Le(e," "))},InlineFragment:{leave:({typeCondition:t,directives:e,selectionSet:r})=>Le(["...",Ot("on ",t),Le(e," "),r]," ")},FragmentDefinition:{leave:({name:t,typeCondition:e,variableDefinitions:r,directives:n,selectionSet:i})=>`fragment ${t}${Ot("(",Le(r,", "),")")} on ${e} ${Ot("",Le(n," ")," ")}`+i},IntValue:{leave:({value:t})=>t},FloatValue:{leave:({value:t})=>t},StringValue:{leave:({value:t,block:e})=>e?iq(t):dq(t)},BooleanValue:{leave:({value:t})=>t?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:t})=>t},ListValue:{leave:({values:t})=>"["+Le(t,", ")+"]"},ObjectValue:{leave:({fields:t})=>"{"+Le(t,", ")+"}"},ObjectField:{leave:({name:t,value:e})=>t+": "+e},Directive:{leave:({name:t,arguments:e})=>"@"+t+Ot("(",Le(e,", "),")")},NamedType:{leave:({name:t})=>t},ListType:{leave:({type:t})=>"["+t+"]"},NonNullType:{leave:({type:t})=>t+"!"},SchemaDefinition:{leave:({description:t,directives:e,operationTypes:r})=>Ot("",t,` +`)+Le(["schema",Le(e," "),Xi(r)]," ")},OperationTypeDefinition:{leave:({operation:t,type:e})=>t+": "+e},ScalarTypeDefinition:{leave:({description:t,name:e,directives:r})=>Ot("",t,` +`)+Le(["scalar",e,Le(r," ")]," ")},ObjectTypeDefinition:{leave:({description:t,name:e,interfaces:r,directives:n,fields:i})=>Ot("",t,` +`)+Le(["type",e,Ot("implements ",Le(r," & ")),Le(n," "),Xi(i)]," ")},FieldDefinition:{leave:({description:t,name:e,arguments:r,type:n,directives:i})=>Ot("",t,` +`)+e+(MC(r)?Ot(`( +`,H0(Le(r,` +`)),` +)`):Ot("(",Le(r,", "),")"))+": "+n+Ot(" ",Le(i," "))},InputValueDefinition:{leave:({description:t,name:e,type:r,defaultValue:n,directives:i})=>Ot("",t,` +`)+Le([e+": "+r,Ot("= ",n),Le(i," ")]," ")},InterfaceTypeDefinition:{leave:({description:t,name:e,interfaces:r,directives:n,fields:i})=>Ot("",t,` +`)+Le(["interface",e,Ot("implements ",Le(r," & ")),Le(n," "),Xi(i)]," ")},UnionTypeDefinition:{leave:({description:t,name:e,directives:r,types:n})=>Ot("",t,` +`)+Le(["union",e,Le(r," "),Ot("= ",Le(n," | "))]," ")},EnumTypeDefinition:{leave:({description:t,name:e,directives:r,values:n})=>Ot("",t,` +`)+Le(["enum",e,Le(r," "),Xi(n)]," ")},EnumValueDefinition:{leave:({description:t,name:e,directives:r})=>Ot("",t,` +`)+Le([e,Le(r," ")]," ")},InputObjectTypeDefinition:{leave:({description:t,name:e,directives:r,fields:n})=>Ot("",t,` +`)+Le(["input",e,Le(r," "),Xi(n)]," ")},DirectiveDefinition:{leave:({description:t,name:e,arguments:r,repeatable:n,locations:i})=>Ot("",t,` +`)+"directive @"+e+(MC(r)?Ot(`( +`,H0(Le(r,` +`)),` +)`):Ot("(",Le(r,", "),")"))+(n?" repeatable":"")+" on "+Le(i," | ")},SchemaExtension:{leave:({directives:t,operationTypes:e})=>Le(["extend schema",Le(t," "),Xi(e)]," ")},ScalarTypeExtension:{leave:({name:t,directives:e})=>Le(["extend scalar",t,Le(e," ")]," ")},ObjectTypeExtension:{leave:({name:t,interfaces:e,directives:r,fields:n})=>Le(["extend type",t,Ot("implements ",Le(e," & ")),Le(r," "),Xi(n)]," ")},InterfaceTypeExtension:{leave:({name:t,interfaces:e,directives:r,fields:n})=>Le(["extend interface",t,Ot("implements ",Le(e," & ")),Le(r," "),Xi(n)]," ")},UnionTypeExtension:{leave:({name:t,directives:e,types:r})=>Le(["extend union",t,Le(e," "),Ot("= ",Le(r," | "))]," ")},EnumTypeExtension:{leave:({name:t,directives:e,values:r})=>Le(["extend enum",t,Le(e," "),Xi(r)]," ")},InputObjectTypeExtension:{leave:({name:t,directives:e,fields:r})=>Le(["extend input",t,Le(e," "),Xi(r)]," ")}};function Le(t,e=""){var r;return(r=t==null?void 0:t.filter(n=>n).join(e))!==null&&r!==void 0?r:""}function Xi(t){return Ot(`{ +`,H0(Le(t,` +`)),` +}`)}function Ot(t,e,r=""){return e!=null&&e!==""?t+e+r:""}function H0(t){return Ot(" ",t.replace(/\n/g,` + `))}function MC(t){var e;return(e=t==null?void 0:t.some(r=>r.includes(` +`)))!==null&&e!==void 0?e:!1}var JM=t=>{throw TypeError(t)},YM=(t,e,r)=>e.has(t)||JM("Cannot "+r),i0=(t,e,r)=>(YM(t,e,"read from private field"),r?r.call(t):e.get(t)),s0=(t,e,r)=>e.has(t)?JM("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),o0=(t,e,r,n)=>(YM(t,e,"write to private field"),e.set(t,r),r),G0,q0,K0,X0;class xq extends Error{}class Sq{constructor({url:e,fetch:r=fetch,headers:n={},queries:i={}}){s0(this,G0),s0(this,q0),s0(this,K0),s0(this,X0),o0(this,G0,e),o0(this,q0,i),o0(this,K0,n),o0(this,X0,(...s)=>r(...s))}async query(e){const r=await i0(this,X0).call(this,i0(this,G0),{method:"POST",headers:{"Content-Type":"application/json",...i0(this,K0)},body:JSON.stringify({query:typeof e.query=="string"?String(e.query):bq(e.query),variables:e.variables,extensions:e.extensions,operationName:e.operationName})});if(!r.ok)throw new xq(`GraphQL request failed: ${r.statusText} (${r.status})`);return await r.json()}async execute(e,r){return this.query({...r,query:i0(this,q0)[e]})}}G0=new WeakMap;q0=new WeakMap;K0=new WeakMap;X0=new WeakMap;var a0={NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType"};class Eq extends Error{constructor(e,r,n,i,s,o,a){super(e),this.name="GraphQLError",this.message=e,s&&(this.path=s),r&&(this.nodes=Array.isArray(r)?r:[r]),n&&(this.source=n),i&&(this.positions=i),o&&(this.originalError=o);var u=a;if(!u&&o){var c=o.extensions;c&&typeof c=="object"&&(u=c)}this.extensions=u||{}}toJSON(){return{...this,message:this.message}}toString(){return this.message}get[Symbol.toStringTag](){return"GraphQLError"}}var Dt,Ke;function qr(t){return new Eq(`Syntax Error: Unexpected token at ${Ke} in ${t}`)}function Ei(t){if(t.lastIndex=Ke,t.test(Dt))return Dt.slice(Ke,Ke=t.lastIndex)}var u0=/ +(?=[^\s])/y;function Oq(t){for(var e=t.split(` +`),r="",n=0,i=0,s=e.length-1,o=0;oc.name.value!=="_unmask"));var u;return{kind:a0.DOCUMENT,definitions:n,get loc(){if(!u&&a){var c=e+function(f){try{$C++;var d="";for(var h of f)if(!Vv.has(h)){Vv.add(h);var{loc:m}=h;m&&(d+=m.source.body)}return d}finally{--$C==0&&Vv.clear()}}(r||[]);return{start:0,end:c.length,source:{body:c,name:"GraphQLTada",locationOffset:{line:1,column:1}}}}return u},set loc(c){u=c}}}return t.scalar=function(r,n){return n},t.persisted=function(r,n){return{kind:a0.DOCUMENT,definitions:n?n.definitions:[],documentId:r}},t}ZM();const jq=ZM();function Mq(t){if(t.length!==1)throw new Error("Invalid base64Url character: "+t);const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".indexOf(t);if(r===-1)throw new Error("Invalid base64Url character: "+t);const n=r.toString(2).padStart(6,"0");return Array.from(n).map(Number)}function $q(t){let e=[];for(let r=0;r{throw TypeError(t)},t5=(t,e,r)=>e.has(t)||e5("Cannot "+r),Wv=(t,e,r)=>(t5(t,e,"read from private field"),r?r.call(t):e.get(t)),NC=(t,e,r)=>e.has(t)?e5("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),c0=(t,e,r,n)=>(t5(t,e,"write to private field"),e.set(t,r),r),Jc,Cd;const Lq=class f1 extends GM{constructor(e,{client:r}={}){super(),NC(this,Jc),NC(this,Cd),c0(this,Cd,r),typeof e=="string"?c0(this,Jc,yn(e)):e instanceof Uint8Array?c0(this,Jc,e):c0(this,Jc,Uint8Array.from(e))}equals(e){return super.equals(e)}toRawBytes(){return Wv(this,Jc)}flag(){return _p.ZkLogin}async verify(e,r){throw Error("does not support")}verifyPersonalMessage(e,r){const n=d1(r),i=new f1(n.publicKey).toSuiAddress();return RC({address:i,bytes:zt(e),signature:n.serializedSignature,intentScope:"PERSONAL_MESSAGE",client:Wv(this,Cd)})}verifyTransaction(e,r){const n=d1(r),i=new f1(n.publicKey).toSuiAddress();return RC({address:i,bytes:zt(e),signature:n.serializedSignature,intentScope:"TRANSACTION_DATA",client:Wv(this,Cd)})}};Jc=new WeakMap;Cd=new WeakMap;let zq=Lq;function Vq(t,e,r){const n=Fq(t,32),i=new TextEncoder().encode(e),s=new Uint8Array(1+i.length+n.length);return s.set([i.length],0),s.set(i,1),s.set(n,1+i.length),new zq(s,r)}const Wq=jq(` + query Zklogin( + $bytes: Base64! + $signature: Base64! + $intentScope: ZkLoginIntentScope! + $author: SuiAddress! + ) { + verifyZkloginSignature( + bytes: $bytes + signature: $signature + intentScope: $intentScope + author: $author + ) { + success + errors + } + } +`);async function RC({address:t,bytes:e,signature:r,intentScope:n,client:i=new Sq({url:"https://sui-mainnet.mystenlabs.com/graphql"})}){var o,a;const s=await i.query({query:Wq,variables:{bytes:e,signature:r,intentScope:n,author:t}});return((o=s.data)==null?void 0:o.verifyZkloginSignature.success)===!0&&((a=s.data)==null?void 0:a.verifyZkloginSignature.errors.length)===0}function d1(t){const e=typeof t=="string"?yn(t):t;if(e[0]!==_p.ZkLogin)throw new Error("Invalid signature scheme");const r=e.slice(1),{inputs:n,maxEpoch:i,userSignature:s}=Uq(r),{issBase64Details:o,addressSeed:a}=n,u=Dq(o,"iss"),c=Vq(BigInt(a),u);return{serializedSignature:zt(e),signatureScheme:"ZkLogin",zkLogin:{inputs:n,maxEpoch:i,userSignature:s,iss:u,addressSeed:BigInt(a)},signature:e,publicKey:c.toRawBytes()}}function Hq({signature:t,signatureScheme:e,publicKey:r}){if(!r)throw new Error("`publicKey` is required");const n=r.toRawBytes(),i=new Uint8Array(1+t.length+n.length);return i.set([_p[e]]),i.set(t,1),i.set(n,1+t.length),zt(i)}function Gq(t){const e=yn(t),r=qM[e[0]];switch(r){case"MultiSig":const n=ot.MultiSig.parse(e.slice(1));return{serializedSignature:t,signatureScheme:r,multisig:n,bytes:e};case"ZkLogin":return d1(t);case"ED25519":case"Secp256k1":case"Secp256r1":const i=tq[r],s=e.slice(1,e.length-i),o=e.slice(1+s.length);return{serializedSignature:t,signatureScheme:r,signature:s,publicKey:o,bytes:e};default:throw new Error("Unsupported signature scheme")}}class r5 extends fx{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,O4(e);const n=ro(r);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,s=new Uint8Array(i);s.set(n.length>i?e.create().update(n).digest():n);for(let o=0;onew r5(t,e).update(r).digest();xg.create=(t,e)=>new r5(t,e);function qq(t,e,r,n){O4(t);const i=$L({dkLen:32,asyncTick:10},n),{c:s,dkLen:o,asyncTick:a}=i;if(za(s),za(o),za(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const u=ro(e),c=ro(r),l=new Uint8Array(o),f=xg.create(t,u),d=f._cloneInto().update(c);return{c:s,dkLen:o,asyncTick:a,DK:l,PRF:f,PRFSalt:d}}function Kq(t,e,r,n,i){return t.destroy(),e.destroy(),n&&n.destroy(),i.fill(0),r}function Xq(t,e,r,n){const{c:i,dkLen:s,DK:o,PRF:a,PRFSalt:u}=qq(t,e,r,n);let c;const l=new Uint8Array(4),f=F0(l),d=new Uint8Array(a.outputLen);for(let h=1,m=0;m>i&s),a=Number(r&s),u=n?4:0,c=n?0:4;t.setUint32(e+u,o,n),t.setUint32(e+c,a,n)}class Yq extends fx{constructor(e,r,n,i){super(),this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=F0(this.buffer)}update(e){mf(this);const{view:r,buffer:n,blockLen:i}=this;e=ro(e);const s=e.length;for(let o=0;oi-o&&(this.process(n,0),o=0);for(let f=o;fl.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;fBigInt(t))),ta=new Uint32Array(80),ra=new Uint32Array(80);class eK extends Yq{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:e,Al:r,Bh:n,Bl:i,Ch:s,Cl:o,Dh:a,Dl:u,Eh:c,El:l,Fh:f,Fl:d,Gh:h,Gl:m,Hh:g,Hl:x}=this;return[e,r,n,i,s,o,a,u,c,l,f,d,h,m,g,x]}set(e,r,n,i,s,o,a,u,c,l,f,d,h,m,g,x){this.Ah=e|0,this.Al=r|0,this.Bh=n|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=u|0,this.Eh=c|0,this.El=l|0,this.Fh=f|0,this.Fl=d|0,this.Gh=h|0,this.Gl=m|0,this.Hh=g|0,this.Hl=x|0}process(e,r){for(let O=0;O<16;O++,r+=4)ta[O]=e.getUint32(r),ra[O]=e.getUint32(r+=4);for(let O=16;O<80;O++){const D=ta[O-15]|0,z=ra[O-15]|0,G=We.rotrSH(D,z,1)^We.rotrSH(D,z,8)^We.shrSH(D,z,7),K=We.rotrSL(D,z,1)^We.rotrSL(D,z,8)^We.shrSL(D,z,7),J=ta[O-2]|0,fe=ra[O-2]|0,pe=We.rotrSH(J,fe,19)^We.rotrBH(J,fe,61)^We.shrSH(J,fe,6),Oe=We.rotrSL(J,fe,19)^We.rotrBL(J,fe,61)^We.shrSL(J,fe,6),Ue=We.add4L(K,Oe,ra[O-7],ra[O-16]),W=We.add4H(Ue,G,pe,ta[O-7],ta[O-16]);ta[O]=W|0,ra[O]=Ue|0}let{Ah:n,Al:i,Bh:s,Bl:o,Ch:a,Cl:u,Dh:c,Dl:l,Eh:f,El:d,Fh:h,Fl:m,Gh:g,Gl:x,Hh:_,Hl:S}=this;for(let O=0;O<80;O++){const D=We.rotrSH(f,d,14)^We.rotrSH(f,d,18)^We.rotrBH(f,d,41),z=We.rotrSL(f,d,14)^We.rotrSL(f,d,18)^We.rotrBL(f,d,41),G=f&h^~f&g,K=d&m^~d&x,J=We.add5L(S,z,K,Zq[O],ra[O]),fe=We.add5H(J,_,D,G,Qq[O],ta[O]),pe=J|0,Oe=We.rotrSH(n,i,28)^We.rotrBH(n,i,34)^We.rotrBH(n,i,39),Ue=We.rotrSL(n,i,28)^We.rotrBL(n,i,34)^We.rotrBL(n,i,39),W=n&s^n&a^s&a,p=i&o^i&u^o&u;_=g|0,S=x|0,g=h|0,x=m|0,h=f|0,m=d|0,{h:f,l:d}=We.add(c|0,l|0,fe|0,pe|0),c=a|0,l=u|0,a=s|0,u=o|0,s=n|0,o=i|0;const T=We.add3L(pe,Ue,p);n=We.add3H(T,fe,Oe,W),i=T|0}({h:n,l:i}=We.add(this.Ah|0,this.Al|0,n|0,i|0)),{h:s,l:o}=We.add(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:u}=We.add(this.Ch|0,this.Cl|0,a|0,u|0),{h:c,l}=We.add(this.Dh|0,this.Dl|0,c|0,l|0),{h:f,l:d}=We.add(this.Eh|0,this.El|0,f|0,d|0),{h,l:m}=We.add(this.Fh|0,this.Fl|0,h|0,m|0),{h:g,l:x}=We.add(this.Gh|0,this.Gl|0,g|0,x|0),{h:_,l:S}=We.add(this.Hh|0,this.Hl|0,_|0,S|0),this.set(n,i,s,o,a,u,c,l,f,d,h,m,g,x,_,S)}roundClean(){ta.fill(0),ra.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Gx=NL(()=>new eK);/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */function n5(t){if(typeof t!="string")throw new TypeError(`Invalid mnemonic type: ${typeof t}`);return t.normalize("NFKD")}function tK(t){const e=n5(t),r=e.split(" ");if(![12,15,18,21,24].includes(r.length))throw new Error("Invalid mnemonic");return{nfkd:e,words:r}}const rK=t=>n5(`mnemonic${t}`);function nK(t,e=""){return Xq(Gx,tK(t).nfkd,rK(e),{c:2048,dkLen:64})}function DC(t){return!!new RegExp("^m\\/44'\\/784'\\/[0-9]+'\\/[0-9]+'\\/[0-9]+'+$").test(t)}function iK(t){return nK(t,"")}function sK(t){return Ka(iK(t))}var Rh={};Object.defineProperty(Rh,"__esModule",{value:!0});Rh.bech32m=Dh=Rh.bech32=void 0;const hy="qpzry9x8gf2tvdw0s3jn54khce6mua7l",i5={};for(let t=0;t>25;return(t&33554431)<<5^-(e>>0&1)&996825010^-(e>>1&1)&642813549^-(e>>2&1)&513874426^-(e>>3&1)&1027748829^-(e>>4&1)&705979059}function BC(t){let e=1;for(let r=0;r126)return"Invalid prefix ("+t+")";e=Rl(e)^n>>5}e=Rl(e);for(let r=0;r=r;)s-=r,a.push(i>>s&o);if(n)s>0&&a.push(i<=e)return"Excess padding";if(i<u)throw new TypeError("Exceeds length limit");o=o.toLowerCase();let c=BC(o);if(typeof c=="string")throw new Error(c);let l=o+"1";for(let f=0;f>5)throw new Error("Non 5-bit word");c=Rl(c)^d,l+=hy.charAt(d)}for(let f=0;f<6;++f)c=Rl(c);c^=e;for(let f=0;f<6;++f){const d=c>>(5-f)*5&31;l+=hy.charAt(d)}return l}function n(o,a){if(a=a||90,o.length<8)return o+" too short";if(o.length>a)return"Exceeds length limit";const u=o.toLowerCase(),c=o.toUpperCase();if(o!==u&&o!==c)return"Mixed-case string "+o;o=u;const l=o.lastIndexOf("1");if(l===-1)return"No separator character for "+o;if(l===0)return"Missing prefix for "+o;const f=o.slice(0,l),d=o.slice(l+1);if(d.length<6)return"Data too short";let h=BC(f);if(typeof h=="string")return h;const m=[];for(let g=0;g=d.length)&&m.push(_)}return h!==e?"Invalid checksum for "+o:{prefix:f,words:m}}function i(o,a){const u=n(o,a);if(typeof u=="object")return u}function s(o,a){const u=n(o,a);if(typeof u=="object")return u;throw new Error(u)}return{decodeUnsafe:i,decode:s,encode:r,toWords:oK,fromWordsUnsafe:aK,fromWords:uK}}var Dh=Rh.bech32=s5("bech32");Rh.bech32m=s5("bech32m");const J0=32,o5="suiprivkey";class cK{async signWithIntent(e,r){const n=WM(r,e),i=Ih(n,{dkLen:32});return{signature:Hq({signature:await this.sign(i),signatureScheme:this.getKeyScheme(),publicKey:this.getPublicKey()}),bytes:zt(e)}}async signTransaction(e){return this.signWithIntent(e,"TransactionData")}async signPersonalMessage(e){const{signature:r}=await this.signWithIntent(H.vector(H.u8()).serialize(e).toBytes(),"PersonalMessage");return{bytes:zt(e),signature:r}}toSuiAddress(){return this.getPublicKey().toSuiAddress()}}class lK extends cK{}function fK(t){const{prefix:e,words:r}=Dh.decode(t);if(e!==o5)throw new Error("invalid private key prefix");const n=new Uint8Array(Dh.fromWords(r)),i=n.slice(1);return{schema:qM[n[0]],secretKey:i}}function dK(t,e){if(t.length!==J0)throw new Error("Invalid bytes length");const r=_p[e],n=new Uint8Array(t.length+1);return n.set([r]),n.set(t,1),Dh.encode(o5,Dh.toWords(n))}function hK(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var a5={exports:{}};const pK={},mK=Object.freeze(Object.defineProperty({__proto__:null,default:pK},Symbol.toStringTag,{value:"Module"})),u5=Ny(mK);(function(t){(function(e){var r=function(E){var A,M=new Float64Array(16);if(E)for(A=0;A>24&255,E[A+1]=M>>16&255,E[A+2]=M>>8&255,E[A+3]=M&255,E[A+4]=y>>24&255,E[A+5]=y>>16&255,E[A+6]=y>>8&255,E[A+7]=y&255}function g(E,A,M,y,R){var Q,Y=0;for(Q=0;Q>>8)-1}function x(E,A,M,y){return g(E,A,M,y,16)}function _(E,A,M,y){return g(E,A,M,y,32)}function S(E,A,M,y){for(var R=y[0]&255|(y[1]&255)<<8|(y[2]&255)<<16|(y[3]&255)<<24,Q=M[0]&255|(M[1]&255)<<8|(M[2]&255)<<16|(M[3]&255)<<24,Y=M[4]&255|(M[5]&255)<<8|(M[6]&255)<<16|(M[7]&255)<<24,oe=M[8]&255|(M[9]&255)<<8|(M[10]&255)<<16|(M[11]&255)<<24,_e=M[12]&255|(M[13]&255)<<8|(M[14]&255)<<16|(M[15]&255)<<24,Pe=y[4]&255|(y[5]&255)<<8|(y[6]&255)<<16|(y[7]&255)<<24,xe=A[0]&255|(A[1]&255)<<8|(A[2]&255)<<16|(A[3]&255)<<24,St=A[4]&255|(A[5]&255)<<8|(A[6]&255)<<16|(A[7]&255)<<24,$e=A[8]&255|(A[9]&255)<<8|(A[10]&255)<<16|(A[11]&255)<<24,Ze=A[12]&255|(A[13]&255)<<8|(A[14]&255)<<16|(A[15]&255)<<24,tt=y[8]&255|(y[9]&255)<<8|(y[10]&255)<<16|(y[11]&255)<<24,ht=M[16]&255|(M[17]&255)<<8|(M[18]&255)<<16|(M[19]&255)<<24,ut=M[20]&255|(M[21]&255)<<8|(M[22]&255)<<16|(M[23]&255)<<24,rt=M[24]&255|(M[25]&255)<<8|(M[26]&255)<<16|(M[27]&255)<<24,st=M[28]&255|(M[29]&255)<<8|(M[30]&255)<<16|(M[31]&255)<<24,nt=y[12]&255|(y[13]&255)<<8|(y[14]&255)<<16|(y[15]&255)<<24,Ne=R,ze=Q,Ae=Y,Re=oe,De=_e,ke=Pe,te=xe,re=St,ve=$e,he=Ze,ge=tt,we=ht,Je=ut,yt=rt,wt=st,gt=nt,q,xt=0;xt<20;xt+=2)q=Ne+Je|0,De^=q<<7|q>>>25,q=De+Ne|0,ve^=q<<9|q>>>23,q=ve+De|0,Je^=q<<13|q>>>19,q=Je+ve|0,Ne^=q<<18|q>>>14,q=ke+ze|0,he^=q<<7|q>>>25,q=he+ke|0,yt^=q<<9|q>>>23,q=yt+he|0,ze^=q<<13|q>>>19,q=ze+yt|0,ke^=q<<18|q>>>14,q=ge+te|0,wt^=q<<7|q>>>25,q=wt+ge|0,Ae^=q<<9|q>>>23,q=Ae+wt|0,te^=q<<13|q>>>19,q=te+Ae|0,ge^=q<<18|q>>>14,q=gt+we|0,Re^=q<<7|q>>>25,q=Re+gt|0,re^=q<<9|q>>>23,q=re+Re|0,we^=q<<13|q>>>19,q=we+re|0,gt^=q<<18|q>>>14,q=Ne+Re|0,ze^=q<<7|q>>>25,q=ze+Ne|0,Ae^=q<<9|q>>>23,q=Ae+ze|0,Re^=q<<13|q>>>19,q=Re+Ae|0,Ne^=q<<18|q>>>14,q=ke+De|0,te^=q<<7|q>>>25,q=te+ke|0,re^=q<<9|q>>>23,q=re+te|0,De^=q<<13|q>>>19,q=De+re|0,ke^=q<<18|q>>>14,q=ge+he|0,we^=q<<7|q>>>25,q=we+ge|0,ve^=q<<9|q>>>23,q=ve+we|0,he^=q<<13|q>>>19,q=he+ve|0,ge^=q<<18|q>>>14,q=gt+wt|0,Je^=q<<7|q>>>25,q=Je+gt|0,yt^=q<<9|q>>>23,q=yt+Je|0,wt^=q<<13|q>>>19,q=wt+yt|0,gt^=q<<18|q>>>14;Ne=Ne+R|0,ze=ze+Q|0,Ae=Ae+Y|0,Re=Re+oe|0,De=De+_e|0,ke=ke+Pe|0,te=te+xe|0,re=re+St|0,ve=ve+$e|0,he=he+Ze|0,ge=ge+tt|0,we=we+ht|0,Je=Je+ut|0,yt=yt+rt|0,wt=wt+st|0,gt=gt+nt|0,E[0]=Ne>>>0&255,E[1]=Ne>>>8&255,E[2]=Ne>>>16&255,E[3]=Ne>>>24&255,E[4]=ze>>>0&255,E[5]=ze>>>8&255,E[6]=ze>>>16&255,E[7]=ze>>>24&255,E[8]=Ae>>>0&255,E[9]=Ae>>>8&255,E[10]=Ae>>>16&255,E[11]=Ae>>>24&255,E[12]=Re>>>0&255,E[13]=Re>>>8&255,E[14]=Re>>>16&255,E[15]=Re>>>24&255,E[16]=De>>>0&255,E[17]=De>>>8&255,E[18]=De>>>16&255,E[19]=De>>>24&255,E[20]=ke>>>0&255,E[21]=ke>>>8&255,E[22]=ke>>>16&255,E[23]=ke>>>24&255,E[24]=te>>>0&255,E[25]=te>>>8&255,E[26]=te>>>16&255,E[27]=te>>>24&255,E[28]=re>>>0&255,E[29]=re>>>8&255,E[30]=re>>>16&255,E[31]=re>>>24&255,E[32]=ve>>>0&255,E[33]=ve>>>8&255,E[34]=ve>>>16&255,E[35]=ve>>>24&255,E[36]=he>>>0&255,E[37]=he>>>8&255,E[38]=he>>>16&255,E[39]=he>>>24&255,E[40]=ge>>>0&255,E[41]=ge>>>8&255,E[42]=ge>>>16&255,E[43]=ge>>>24&255,E[44]=we>>>0&255,E[45]=we>>>8&255,E[46]=we>>>16&255,E[47]=we>>>24&255,E[48]=Je>>>0&255,E[49]=Je>>>8&255,E[50]=Je>>>16&255,E[51]=Je>>>24&255,E[52]=yt>>>0&255,E[53]=yt>>>8&255,E[54]=yt>>>16&255,E[55]=yt>>>24&255,E[56]=wt>>>0&255,E[57]=wt>>>8&255,E[58]=wt>>>16&255,E[59]=wt>>>24&255,E[60]=gt>>>0&255,E[61]=gt>>>8&255,E[62]=gt>>>16&255,E[63]=gt>>>24&255}function O(E,A,M,y){for(var R=y[0]&255|(y[1]&255)<<8|(y[2]&255)<<16|(y[3]&255)<<24,Q=M[0]&255|(M[1]&255)<<8|(M[2]&255)<<16|(M[3]&255)<<24,Y=M[4]&255|(M[5]&255)<<8|(M[6]&255)<<16|(M[7]&255)<<24,oe=M[8]&255|(M[9]&255)<<8|(M[10]&255)<<16|(M[11]&255)<<24,_e=M[12]&255|(M[13]&255)<<8|(M[14]&255)<<16|(M[15]&255)<<24,Pe=y[4]&255|(y[5]&255)<<8|(y[6]&255)<<16|(y[7]&255)<<24,xe=A[0]&255|(A[1]&255)<<8|(A[2]&255)<<16|(A[3]&255)<<24,St=A[4]&255|(A[5]&255)<<8|(A[6]&255)<<16|(A[7]&255)<<24,$e=A[8]&255|(A[9]&255)<<8|(A[10]&255)<<16|(A[11]&255)<<24,Ze=A[12]&255|(A[13]&255)<<8|(A[14]&255)<<16|(A[15]&255)<<24,tt=y[8]&255|(y[9]&255)<<8|(y[10]&255)<<16|(y[11]&255)<<24,ht=M[16]&255|(M[17]&255)<<8|(M[18]&255)<<16|(M[19]&255)<<24,ut=M[20]&255|(M[21]&255)<<8|(M[22]&255)<<16|(M[23]&255)<<24,rt=M[24]&255|(M[25]&255)<<8|(M[26]&255)<<16|(M[27]&255)<<24,st=M[28]&255|(M[29]&255)<<8|(M[30]&255)<<16|(M[31]&255)<<24,nt=y[12]&255|(y[13]&255)<<8|(y[14]&255)<<16|(y[15]&255)<<24,Ne=R,ze=Q,Ae=Y,Re=oe,De=_e,ke=Pe,te=xe,re=St,ve=$e,he=Ze,ge=tt,we=ht,Je=ut,yt=rt,wt=st,gt=nt,q,xt=0;xt<20;xt+=2)q=Ne+Je|0,De^=q<<7|q>>>25,q=De+Ne|0,ve^=q<<9|q>>>23,q=ve+De|0,Je^=q<<13|q>>>19,q=Je+ve|0,Ne^=q<<18|q>>>14,q=ke+ze|0,he^=q<<7|q>>>25,q=he+ke|0,yt^=q<<9|q>>>23,q=yt+he|0,ze^=q<<13|q>>>19,q=ze+yt|0,ke^=q<<18|q>>>14,q=ge+te|0,wt^=q<<7|q>>>25,q=wt+ge|0,Ae^=q<<9|q>>>23,q=Ae+wt|0,te^=q<<13|q>>>19,q=te+Ae|0,ge^=q<<18|q>>>14,q=gt+we|0,Re^=q<<7|q>>>25,q=Re+gt|0,re^=q<<9|q>>>23,q=re+Re|0,we^=q<<13|q>>>19,q=we+re|0,gt^=q<<18|q>>>14,q=Ne+Re|0,ze^=q<<7|q>>>25,q=ze+Ne|0,Ae^=q<<9|q>>>23,q=Ae+ze|0,Re^=q<<13|q>>>19,q=Re+Ae|0,Ne^=q<<18|q>>>14,q=ke+De|0,te^=q<<7|q>>>25,q=te+ke|0,re^=q<<9|q>>>23,q=re+te|0,De^=q<<13|q>>>19,q=De+re|0,ke^=q<<18|q>>>14,q=ge+he|0,we^=q<<7|q>>>25,q=we+ge|0,ve^=q<<9|q>>>23,q=ve+we|0,he^=q<<13|q>>>19,q=he+ve|0,ge^=q<<18|q>>>14,q=gt+wt|0,Je^=q<<7|q>>>25,q=Je+gt|0,yt^=q<<9|q>>>23,q=yt+Je|0,wt^=q<<13|q>>>19,q=wt+yt|0,gt^=q<<18|q>>>14;E[0]=Ne>>>0&255,E[1]=Ne>>>8&255,E[2]=Ne>>>16&255,E[3]=Ne>>>24&255,E[4]=ke>>>0&255,E[5]=ke>>>8&255,E[6]=ke>>>16&255,E[7]=ke>>>24&255,E[8]=ge>>>0&255,E[9]=ge>>>8&255,E[10]=ge>>>16&255,E[11]=ge>>>24&255,E[12]=gt>>>0&255,E[13]=gt>>>8&255,E[14]=gt>>>16&255,E[15]=gt>>>24&255,E[16]=te>>>0&255,E[17]=te>>>8&255,E[18]=te>>>16&255,E[19]=te>>>24&255,E[20]=re>>>0&255,E[21]=re>>>8&255,E[22]=re>>>16&255,E[23]=re>>>24&255,E[24]=ve>>>0&255,E[25]=ve>>>8&255,E[26]=ve>>>16&255,E[27]=ve>>>24&255,E[28]=he>>>0&255,E[29]=he>>>8&255,E[30]=he>>>16&255,E[31]=he>>>24&255}function D(E,A,M,y){S(E,A,M,y)}function z(E,A,M,y){O(E,A,M,y)}var G=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function K(E,A,M,y,R,Q,Y){var oe=new Uint8Array(16),_e=new Uint8Array(64),Pe,xe;for(xe=0;xe<16;xe++)oe[xe]=0;for(xe=0;xe<8;xe++)oe[xe]=Q[xe];for(;R>=64;){for(D(_e,oe,Y,G),xe=0;xe<64;xe++)E[A+xe]=M[y+xe]^_e[xe];for(Pe=1,xe=8;xe<16;xe++)Pe=Pe+(oe[xe]&255)|0,oe[xe]=Pe&255,Pe>>>=8;R-=64,A+=64,y+=64}if(R>0)for(D(_e,oe,Y,G),xe=0;xe=64;){for(D(Y,Q,R,G),_e=0;_e<64;_e++)E[A+_e]=Y[_e];for(oe=1,_e=8;_e<16;_e++)oe=oe+(Q[_e]&255)|0,Q[_e]=oe&255,oe>>>=8;M-=64,A+=64}if(M>0)for(D(Y,Q,R,G),_e=0;_e>>13|M<<3)&8191,y=E[4]&255|(E[5]&255)<<8,this.r[2]=(M>>>10|y<<6)&7939,R=E[6]&255|(E[7]&255)<<8,this.r[3]=(y>>>7|R<<9)&8191,Q=E[8]&255|(E[9]&255)<<8,this.r[4]=(R>>>4|Q<<12)&255,this.r[5]=Q>>>1&8190,Y=E[10]&255|(E[11]&255)<<8,this.r[6]=(Q>>>14|Y<<2)&8191,oe=E[12]&255|(E[13]&255)<<8,this.r[7]=(Y>>>11|oe<<5)&8065,_e=E[14]&255|(E[15]&255)<<8,this.r[8]=(oe>>>8|_e<<8)&8191,this.r[9]=_e>>>5&127,this.pad[0]=E[16]&255|(E[17]&255)<<8,this.pad[1]=E[18]&255|(E[19]&255)<<8,this.pad[2]=E[20]&255|(E[21]&255)<<8,this.pad[3]=E[22]&255|(E[23]&255)<<8,this.pad[4]=E[24]&255|(E[25]&255)<<8,this.pad[5]=E[26]&255|(E[27]&255)<<8,this.pad[6]=E[28]&255|(E[29]&255)<<8,this.pad[7]=E[30]&255|(E[31]&255)<<8};Oe.prototype.blocks=function(E,A,M){for(var y=this.fin?0:2048,R,Q,Y,oe,_e,Pe,xe,St,$e,Ze,tt,ht,ut,rt,st,nt,Ne,ze,Ae,Re=this.h[0],De=this.h[1],ke=this.h[2],te=this.h[3],re=this.h[4],ve=this.h[5],he=this.h[6],ge=this.h[7],we=this.h[8],Je=this.h[9],yt=this.r[0],wt=this.r[1],gt=this.r[2],q=this.r[3],xt=this.r[4],jt=this.r[5],Mt=this.r[6],_t=this.r[7],Pt=this.r[8],It=this.r[9];M>=16;)R=E[A+0]&255|(E[A+1]&255)<<8,Re+=R&8191,Q=E[A+2]&255|(E[A+3]&255)<<8,De+=(R>>>13|Q<<3)&8191,Y=E[A+4]&255|(E[A+5]&255)<<8,ke+=(Q>>>10|Y<<6)&8191,oe=E[A+6]&255|(E[A+7]&255)<<8,te+=(Y>>>7|oe<<9)&8191,_e=E[A+8]&255|(E[A+9]&255)<<8,re+=(oe>>>4|_e<<12)&8191,ve+=_e>>>1&8191,Pe=E[A+10]&255|(E[A+11]&255)<<8,he+=(_e>>>14|Pe<<2)&8191,xe=E[A+12]&255|(E[A+13]&255)<<8,ge+=(Pe>>>11|xe<<5)&8191,St=E[A+14]&255|(E[A+15]&255)<<8,we+=(xe>>>8|St<<8)&8191,Je+=St>>>5|y,$e=0,Ze=$e,Ze+=Re*yt,Ze+=De*(5*It),Ze+=ke*(5*Pt),Ze+=te*(5*_t),Ze+=re*(5*Mt),$e=Ze>>>13,Ze&=8191,Ze+=ve*(5*jt),Ze+=he*(5*xt),Ze+=ge*(5*q),Ze+=we*(5*gt),Ze+=Je*(5*wt),$e+=Ze>>>13,Ze&=8191,tt=$e,tt+=Re*wt,tt+=De*yt,tt+=ke*(5*It),tt+=te*(5*Pt),tt+=re*(5*_t),$e=tt>>>13,tt&=8191,tt+=ve*(5*Mt),tt+=he*(5*jt),tt+=ge*(5*xt),tt+=we*(5*q),tt+=Je*(5*gt),$e+=tt>>>13,tt&=8191,ht=$e,ht+=Re*gt,ht+=De*wt,ht+=ke*yt,ht+=te*(5*It),ht+=re*(5*Pt),$e=ht>>>13,ht&=8191,ht+=ve*(5*_t),ht+=he*(5*Mt),ht+=ge*(5*jt),ht+=we*(5*xt),ht+=Je*(5*q),$e+=ht>>>13,ht&=8191,ut=$e,ut+=Re*q,ut+=De*gt,ut+=ke*wt,ut+=te*yt,ut+=re*(5*It),$e=ut>>>13,ut&=8191,ut+=ve*(5*Pt),ut+=he*(5*_t),ut+=ge*(5*Mt),ut+=we*(5*jt),ut+=Je*(5*xt),$e+=ut>>>13,ut&=8191,rt=$e,rt+=Re*xt,rt+=De*q,rt+=ke*gt,rt+=te*wt,rt+=re*yt,$e=rt>>>13,rt&=8191,rt+=ve*(5*It),rt+=he*(5*Pt),rt+=ge*(5*_t),rt+=we*(5*Mt),rt+=Je*(5*jt),$e+=rt>>>13,rt&=8191,st=$e,st+=Re*jt,st+=De*xt,st+=ke*q,st+=te*gt,st+=re*wt,$e=st>>>13,st&=8191,st+=ve*yt,st+=he*(5*It),st+=ge*(5*Pt),st+=we*(5*_t),st+=Je*(5*Mt),$e+=st>>>13,st&=8191,nt=$e,nt+=Re*Mt,nt+=De*jt,nt+=ke*xt,nt+=te*q,nt+=re*gt,$e=nt>>>13,nt&=8191,nt+=ve*wt,nt+=he*yt,nt+=ge*(5*It),nt+=we*(5*Pt),nt+=Je*(5*_t),$e+=nt>>>13,nt&=8191,Ne=$e,Ne+=Re*_t,Ne+=De*Mt,Ne+=ke*jt,Ne+=te*xt,Ne+=re*q,$e=Ne>>>13,Ne&=8191,Ne+=ve*gt,Ne+=he*wt,Ne+=ge*yt,Ne+=we*(5*It),Ne+=Je*(5*Pt),$e+=Ne>>>13,Ne&=8191,ze=$e,ze+=Re*Pt,ze+=De*_t,ze+=ke*Mt,ze+=te*jt,ze+=re*xt,$e=ze>>>13,ze&=8191,ze+=ve*q,ze+=he*gt,ze+=ge*wt,ze+=we*yt,ze+=Je*(5*It),$e+=ze>>>13,ze&=8191,Ae=$e,Ae+=Re*It,Ae+=De*Pt,Ae+=ke*_t,Ae+=te*Mt,Ae+=re*jt,$e=Ae>>>13,Ae&=8191,Ae+=ve*xt,Ae+=he*q,Ae+=ge*gt,Ae+=we*wt,Ae+=Je*yt,$e+=Ae>>>13,Ae&=8191,$e=($e<<2)+$e|0,$e=$e+Ze|0,Ze=$e&8191,$e=$e>>>13,tt+=$e,Re=Ze,De=tt,ke=ht,te=ut,re=rt,ve=st,he=nt,ge=Ne,we=ze,Je=Ae,A+=16,M-=16;this.h[0]=Re,this.h[1]=De,this.h[2]=ke,this.h[3]=te,this.h[4]=re,this.h[5]=ve,this.h[6]=he,this.h[7]=ge,this.h[8]=we,this.h[9]=Je},Oe.prototype.finish=function(E,A){var M=new Uint16Array(10),y,R,Q,Y;if(this.leftover){for(Y=this.leftover,this.buffer[Y++]=1;Y<16;Y++)this.buffer[Y]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(y=this.h[1]>>>13,this.h[1]&=8191,Y=2;Y<10;Y++)this.h[Y]+=y,y=this.h[Y]>>>13,this.h[Y]&=8191;for(this.h[0]+=y*5,y=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=y,y=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=y,M[0]=this.h[0]+5,y=M[0]>>>13,M[0]&=8191,Y=1;Y<10;Y++)M[Y]=this.h[Y]+y,y=M[Y]>>>13,M[Y]&=8191;for(M[9]-=8192,R=(y^1)-1,Y=0;Y<10;Y++)M[Y]&=R;for(R=~R,Y=0;Y<10;Y++)this.h[Y]=this.h[Y]&R|M[Y];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,Q=this.h[0]+this.pad[0],this.h[0]=Q&65535,Y=1;Y<8;Y++)Q=(this.h[Y]+this.pad[Y]|0)+(Q>>>16)|0,this.h[Y]=Q&65535;E[A+0]=this.h[0]>>>0&255,E[A+1]=this.h[0]>>>8&255,E[A+2]=this.h[1]>>>0&255,E[A+3]=this.h[1]>>>8&255,E[A+4]=this.h[2]>>>0&255,E[A+5]=this.h[2]>>>8&255,E[A+6]=this.h[3]>>>0&255,E[A+7]=this.h[3]>>>8&255,E[A+8]=this.h[4]>>>0&255,E[A+9]=this.h[4]>>>8&255,E[A+10]=this.h[5]>>>0&255,E[A+11]=this.h[5]>>>8&255,E[A+12]=this.h[6]>>>0&255,E[A+13]=this.h[6]>>>8&255,E[A+14]=this.h[7]>>>0&255,E[A+15]=this.h[7]>>>8&255},Oe.prototype.update=function(E,A,M){var y,R;if(this.leftover){for(R=16-this.leftover,R>M&&(R=M),y=0;y=16&&(R=M-M%16,this.blocks(E,A,R),A+=R,M-=R),M){for(y=0;y>16&1),Q[M-1]&=65535;Q[15]=Y[15]-32767-(Q[14]>>16&1),R=Q[15]>>16&1,Q[14]&=65535,N(Y,Q,1-R)}for(M=0;M<16;M++)E[2*M]=Y[M]&255,E[2*M+1]=Y[M]>>8}function B(E,A){var M=new Uint8Array(32),y=new Uint8Array(32);return j(M,E),j(y,A),_(M,0,y,0)}function P(E){var A=new Uint8Array(32);return j(A,E),A[0]&1}function v(E,A){var M;for(M=0;M<16;M++)E[M]=A[2*M]+(A[2*M+1]<<8);E[15]&=32767}function U(E,A,M){for(var y=0;y<16;y++)E[y]=A[y]+M[y]}function ue(E,A,M){for(var y=0;y<16;y++)E[y]=A[y]-M[y]}function de(E,A,M){var y,R,Q=0,Y=0,oe=0,_e=0,Pe=0,xe=0,St=0,$e=0,Ze=0,tt=0,ht=0,ut=0,rt=0,st=0,nt=0,Ne=0,ze=0,Ae=0,Re=0,De=0,ke=0,te=0,re=0,ve=0,he=0,ge=0,we=0,Je=0,yt=0,wt=0,gt=0,q=M[0],xt=M[1],jt=M[2],Mt=M[3],_t=M[4],Pt=M[5],It=M[6],Hr=M[7],Kt=M[8],Mr=M[9],$r=M[10],Nr=M[11],Zr=M[12],On=M[13],Cn=M[14],Tn=M[15];y=A[0],Q+=y*q,Y+=y*xt,oe+=y*jt,_e+=y*Mt,Pe+=y*_t,xe+=y*Pt,St+=y*It,$e+=y*Hr,Ze+=y*Kt,tt+=y*Mr,ht+=y*$r,ut+=y*Nr,rt+=y*Zr,st+=y*On,nt+=y*Cn,Ne+=y*Tn,y=A[1],Y+=y*q,oe+=y*xt,_e+=y*jt,Pe+=y*Mt,xe+=y*_t,St+=y*Pt,$e+=y*It,Ze+=y*Hr,tt+=y*Kt,ht+=y*Mr,ut+=y*$r,rt+=y*Nr,st+=y*Zr,nt+=y*On,Ne+=y*Cn,ze+=y*Tn,y=A[2],oe+=y*q,_e+=y*xt,Pe+=y*jt,xe+=y*Mt,St+=y*_t,$e+=y*Pt,Ze+=y*It,tt+=y*Hr,ht+=y*Kt,ut+=y*Mr,rt+=y*$r,st+=y*Nr,nt+=y*Zr,Ne+=y*On,ze+=y*Cn,Ae+=y*Tn,y=A[3],_e+=y*q,Pe+=y*xt,xe+=y*jt,St+=y*Mt,$e+=y*_t,Ze+=y*Pt,tt+=y*It,ht+=y*Hr,ut+=y*Kt,rt+=y*Mr,st+=y*$r,nt+=y*Nr,Ne+=y*Zr,ze+=y*On,Ae+=y*Cn,Re+=y*Tn,y=A[4],Pe+=y*q,xe+=y*xt,St+=y*jt,$e+=y*Mt,Ze+=y*_t,tt+=y*Pt,ht+=y*It,ut+=y*Hr,rt+=y*Kt,st+=y*Mr,nt+=y*$r,Ne+=y*Nr,ze+=y*Zr,Ae+=y*On,Re+=y*Cn,De+=y*Tn,y=A[5],xe+=y*q,St+=y*xt,$e+=y*jt,Ze+=y*Mt,tt+=y*_t,ht+=y*Pt,ut+=y*It,rt+=y*Hr,st+=y*Kt,nt+=y*Mr,Ne+=y*$r,ze+=y*Nr,Ae+=y*Zr,Re+=y*On,De+=y*Cn,ke+=y*Tn,y=A[6],St+=y*q,$e+=y*xt,Ze+=y*jt,tt+=y*Mt,ht+=y*_t,ut+=y*Pt,rt+=y*It,st+=y*Hr,nt+=y*Kt,Ne+=y*Mr,ze+=y*$r,Ae+=y*Nr,Re+=y*Zr,De+=y*On,ke+=y*Cn,te+=y*Tn,y=A[7],$e+=y*q,Ze+=y*xt,tt+=y*jt,ht+=y*Mt,ut+=y*_t,rt+=y*Pt,st+=y*It,nt+=y*Hr,Ne+=y*Kt,ze+=y*Mr,Ae+=y*$r,Re+=y*Nr,De+=y*Zr,ke+=y*On,te+=y*Cn,re+=y*Tn,y=A[8],Ze+=y*q,tt+=y*xt,ht+=y*jt,ut+=y*Mt,rt+=y*_t,st+=y*Pt,nt+=y*It,Ne+=y*Hr,ze+=y*Kt,Ae+=y*Mr,Re+=y*$r,De+=y*Nr,ke+=y*Zr,te+=y*On,re+=y*Cn,ve+=y*Tn,y=A[9],tt+=y*q,ht+=y*xt,ut+=y*jt,rt+=y*Mt,st+=y*_t,nt+=y*Pt,Ne+=y*It,ze+=y*Hr,Ae+=y*Kt,Re+=y*Mr,De+=y*$r,ke+=y*Nr,te+=y*Zr,re+=y*On,ve+=y*Cn,he+=y*Tn,y=A[10],ht+=y*q,ut+=y*xt,rt+=y*jt,st+=y*Mt,nt+=y*_t,Ne+=y*Pt,ze+=y*It,Ae+=y*Hr,Re+=y*Kt,De+=y*Mr,ke+=y*$r,te+=y*Nr,re+=y*Zr,ve+=y*On,he+=y*Cn,ge+=y*Tn,y=A[11],ut+=y*q,rt+=y*xt,st+=y*jt,nt+=y*Mt,Ne+=y*_t,ze+=y*Pt,Ae+=y*It,Re+=y*Hr,De+=y*Kt,ke+=y*Mr,te+=y*$r,re+=y*Nr,ve+=y*Zr,he+=y*On,ge+=y*Cn,we+=y*Tn,y=A[12],rt+=y*q,st+=y*xt,nt+=y*jt,Ne+=y*Mt,ze+=y*_t,Ae+=y*Pt,Re+=y*It,De+=y*Hr,ke+=y*Kt,te+=y*Mr,re+=y*$r,ve+=y*Nr,he+=y*Zr,ge+=y*On,we+=y*Cn,Je+=y*Tn,y=A[13],st+=y*q,nt+=y*xt,Ne+=y*jt,ze+=y*Mt,Ae+=y*_t,Re+=y*Pt,De+=y*It,ke+=y*Hr,te+=y*Kt,re+=y*Mr,ve+=y*$r,he+=y*Nr,ge+=y*Zr,we+=y*On,Je+=y*Cn,yt+=y*Tn,y=A[14],nt+=y*q,Ne+=y*xt,ze+=y*jt,Ae+=y*Mt,Re+=y*_t,De+=y*Pt,ke+=y*It,te+=y*Hr,re+=y*Kt,ve+=y*Mr,he+=y*$r,ge+=y*Nr,we+=y*Zr,Je+=y*On,yt+=y*Cn,wt+=y*Tn,y=A[15],Ne+=y*q,ze+=y*xt,Ae+=y*jt,Re+=y*Mt,De+=y*_t,ke+=y*Pt,te+=y*It,re+=y*Hr,ve+=y*Kt,he+=y*Mr,ge+=y*$r,we+=y*Nr,Je+=y*Zr,yt+=y*On,wt+=y*Cn,gt+=y*Tn,Q+=38*ze,Y+=38*Ae,oe+=38*Re,_e+=38*De,Pe+=38*ke,xe+=38*te,St+=38*re,$e+=38*ve,Ze+=38*he,tt+=38*ge,ht+=38*we,ut+=38*Je,rt+=38*yt,st+=38*wt,nt+=38*gt,R=1,y=Q+R+65535,R=Math.floor(y/65536),Q=y-R*65536,y=Y+R+65535,R=Math.floor(y/65536),Y=y-R*65536,y=oe+R+65535,R=Math.floor(y/65536),oe=y-R*65536,y=_e+R+65535,R=Math.floor(y/65536),_e=y-R*65536,y=Pe+R+65535,R=Math.floor(y/65536),Pe=y-R*65536,y=xe+R+65535,R=Math.floor(y/65536),xe=y-R*65536,y=St+R+65535,R=Math.floor(y/65536),St=y-R*65536,y=$e+R+65535,R=Math.floor(y/65536),$e=y-R*65536,y=Ze+R+65535,R=Math.floor(y/65536),Ze=y-R*65536,y=tt+R+65535,R=Math.floor(y/65536),tt=y-R*65536,y=ht+R+65535,R=Math.floor(y/65536),ht=y-R*65536,y=ut+R+65535,R=Math.floor(y/65536),ut=y-R*65536,y=rt+R+65535,R=Math.floor(y/65536),rt=y-R*65536,y=st+R+65535,R=Math.floor(y/65536),st=y-R*65536,y=nt+R+65535,R=Math.floor(y/65536),nt=y-R*65536,y=Ne+R+65535,R=Math.floor(y/65536),Ne=y-R*65536,Q+=R-1+37*(R-1),R=1,y=Q+R+65535,R=Math.floor(y/65536),Q=y-R*65536,y=Y+R+65535,R=Math.floor(y/65536),Y=y-R*65536,y=oe+R+65535,R=Math.floor(y/65536),oe=y-R*65536,y=_e+R+65535,R=Math.floor(y/65536),_e=y-R*65536,y=Pe+R+65535,R=Math.floor(y/65536),Pe=y-R*65536,y=xe+R+65535,R=Math.floor(y/65536),xe=y-R*65536,y=St+R+65535,R=Math.floor(y/65536),St=y-R*65536,y=$e+R+65535,R=Math.floor(y/65536),$e=y-R*65536,y=Ze+R+65535,R=Math.floor(y/65536),Ze=y-R*65536,y=tt+R+65535,R=Math.floor(y/65536),tt=y-R*65536,y=ht+R+65535,R=Math.floor(y/65536),ht=y-R*65536,y=ut+R+65535,R=Math.floor(y/65536),ut=y-R*65536,y=rt+R+65535,R=Math.floor(y/65536),rt=y-R*65536,y=st+R+65535,R=Math.floor(y/65536),st=y-R*65536,y=nt+R+65535,R=Math.floor(y/65536),nt=y-R*65536,y=Ne+R+65535,R=Math.floor(y/65536),Ne=y-R*65536,Q+=R-1+37*(R-1),E[0]=Q,E[1]=Y,E[2]=oe,E[3]=_e,E[4]=Pe,E[5]=xe,E[6]=St,E[7]=$e,E[8]=Ze,E[9]=tt,E[10]=ht,E[11]=ut,E[12]=rt,E[13]=st,E[14]=nt,E[15]=Ne}function Ee(E,A){de(E,A,A)}function Xe(E,A){var M=r(),y;for(y=0;y<16;y++)M[y]=A[y];for(y=253;y>=0;y--)Ee(M,M),y!==2&&y!==4&&de(M,M,A);for(y=0;y<16;y++)E[y]=M[y]}function it(E,A){var M=r(),y;for(y=0;y<16;y++)M[y]=A[y];for(y=250;y>=0;y--)Ee(M,M),y!==1&&de(M,M,A);for(y=0;y<16;y++)E[y]=M[y]}function Ge(E,A,M){var y=new Uint8Array(32),R=new Float64Array(80),Q,Y,oe=r(),_e=r(),Pe=r(),xe=r(),St=r(),$e=r();for(Y=0;Y<31;Y++)y[Y]=A[Y];for(y[31]=A[31]&127|64,y[0]&=248,v(R,M),Y=0;Y<16;Y++)_e[Y]=R[Y],xe[Y]=oe[Y]=Pe[Y]=0;for(oe[0]=xe[0]=1,Y=254;Y>=0;--Y)Q=y[Y>>>3]>>>(Y&7)&1,N(oe,_e,Q),N(Pe,xe,Q),U(St,oe,Pe),ue(oe,oe,Pe),U(Pe,_e,xe),ue(_e,_e,xe),Ee(xe,St),Ee($e,oe),de(oe,Pe,oe),de(Pe,_e,St),U(St,oe,Pe),ue(oe,oe,Pe),Ee(_e,oe),ue(Pe,xe,$e),de(oe,Pe,u),U(oe,oe,xe),de(Pe,Pe,oe),de(oe,xe,$e),de(xe,_e,R),Ee(_e,St),N(oe,_e,Q),N(Pe,xe,Q);for(Y=0;Y<16;Y++)R[Y+16]=oe[Y],R[Y+32]=Pe[Y],R[Y+48]=_e[Y],R[Y+64]=xe[Y];var Ze=R.subarray(32),tt=R.subarray(16);return Xe(Ze,Ze),de(tt,tt,Ze),j(E,tt),0}function mr(E,A){return Ge(E,A,s)}function Qt(E,A){return n(A,32),mr(E,A)}function Bt(E,A,M){var y=new Uint8Array(32);return Ge(y,M,A),z(E,i,y,G)}var ln=p,Ut=T;function ar(E,A,M,y,R,Q){var Y=new Uint8Array(32);return Bt(Y,R,Q),ln(E,A,M,y,Y)}function Yo(E,A,M,y,R,Q){var Y=new Uint8Array(32);return Bt(Y,R,Q),Ut(E,A,M,y,Y)}var qt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ir(E,A,M,y){for(var R=new Int32Array(16),Q=new Int32Array(16),Y,oe,_e,Pe,xe,St,$e,Ze,tt,ht,ut,rt,st,nt,Ne,ze,Ae,Re,De,ke,te,re,ve,he,ge,we,Je=E[0],yt=E[1],wt=E[2],gt=E[3],q=E[4],xt=E[5],jt=E[6],Mt=E[7],_t=A[0],Pt=A[1],It=A[2],Hr=A[3],Kt=A[4],Mr=A[5],$r=A[6],Nr=A[7],Zr=0;y>=128;){for(De=0;De<16;De++)ke=8*De+Zr,R[De]=M[ke+0]<<24|M[ke+1]<<16|M[ke+2]<<8|M[ke+3],Q[De]=M[ke+4]<<24|M[ke+5]<<16|M[ke+6]<<8|M[ke+7];for(De=0;De<80;De++)if(Y=Je,oe=yt,_e=wt,Pe=gt,xe=q,St=xt,$e=jt,Ze=Mt,tt=_t,ht=Pt,ut=It,rt=Hr,st=Kt,nt=Mr,Ne=$r,ze=Nr,te=Mt,re=Nr,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=(q>>>14|Kt<<18)^(q>>>18|Kt<<14)^(Kt>>>9|q<<23),re=(Kt>>>14|q<<18)^(Kt>>>18|q<<14)^(q>>>9|Kt<<23),ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,te=q&xt^~q&jt,re=Kt&Mr^~Kt&$r,ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,te=qt[De*2],re=qt[De*2+1],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,te=R[De%16],re=Q[De%16],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,Ae=ge&65535|we<<16,Re=ve&65535|he<<16,te=Ae,re=Re,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=(Je>>>28|_t<<4)^(_t>>>2|Je<<30)^(_t>>>7|Je<<25),re=(_t>>>28|Je<<4)^(Je>>>2|_t<<30)^(Je>>>7|_t<<25),ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,te=Je&yt^Je&wt^yt&wt,re=_t&Pt^_t&It^Pt&It,ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,Ze=ge&65535|we<<16,ze=ve&65535|he<<16,te=Pe,re=rt,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=Ae,re=Re,ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,Pe=ge&65535|we<<16,rt=ve&65535|he<<16,yt=Y,wt=oe,gt=_e,q=Pe,xt=xe,jt=St,Mt=$e,Je=Ze,Pt=tt,It=ht,Hr=ut,Kt=rt,Mr=st,$r=nt,Nr=Ne,_t=ze,De%16===15)for(ke=0;ke<16;ke++)te=R[ke],re=Q[ke],ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=R[(ke+9)%16],re=Q[(ke+9)%16],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,Ae=R[(ke+1)%16],Re=Q[(ke+1)%16],te=(Ae>>>1|Re<<31)^(Ae>>>8|Re<<24)^Ae>>>7,re=(Re>>>1|Ae<<31)^(Re>>>8|Ae<<24)^(Re>>>7|Ae<<25),ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,Ae=R[(ke+14)%16],Re=Q[(ke+14)%16],te=(Ae>>>19|Re<<13)^(Re>>>29|Ae<<3)^Ae>>>6,re=(Re>>>19|Ae<<13)^(Ae>>>29|Re<<3)^(Re>>>6|Ae<<26),ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,R[ke]=ge&65535|we<<16,Q[ke]=ve&65535|he<<16;te=Je,re=_t,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[0],re=A[0],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[0]=Je=ge&65535|we<<16,A[0]=_t=ve&65535|he<<16,te=yt,re=Pt,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[1],re=A[1],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[1]=yt=ge&65535|we<<16,A[1]=Pt=ve&65535|he<<16,te=wt,re=It,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[2],re=A[2],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[2]=wt=ge&65535|we<<16,A[2]=It=ve&65535|he<<16,te=gt,re=Hr,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[3],re=A[3],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[3]=gt=ge&65535|we<<16,A[3]=Hr=ve&65535|he<<16,te=q,re=Kt,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[4],re=A[4],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[4]=q=ge&65535|we<<16,A[4]=Kt=ve&65535|he<<16,te=xt,re=Mr,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[5],re=A[5],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[5]=xt=ge&65535|we<<16,A[5]=Mr=ve&65535|he<<16,te=jt,re=$r,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[6],re=A[6],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[6]=jt=ge&65535|we<<16,A[6]=$r=ve&65535|he<<16,te=Mt,re=Nr,ve=re&65535,he=re>>>16,ge=te&65535,we=te>>>16,te=E[7],re=A[7],ve+=re&65535,he+=re>>>16,ge+=te&65535,we+=te>>>16,he+=ve>>>16,ge+=he>>>16,we+=ge>>>16,E[7]=Mt=ge&65535|we<<16,A[7]=Nr=ve&65535|he<<16,Zr+=128,y-=128}return y}function bn(E,A,M){var y=new Int32Array(8),R=new Int32Array(8),Q=new Uint8Array(256),Y,oe=M;for(y[0]=1779033703,y[1]=3144134277,y[2]=1013904242,y[3]=2773480762,y[4]=1359893119,y[5]=2600822924,y[6]=528734635,y[7]=1541459225,R[0]=4089235720,R[1]=2227873595,R[2]=4271175723,R[3]=1595750129,R[4]=2917565137,R[5]=725511199,R[6]=4215389547,R[7]=327033209,ir(y,R,A,M),M%=128,Y=0;Y=0;--R)y=M[R/8|0]>>(R&7)&1,er(E,A,y),Zt(A,E),Zt(E,E),er(E,A,y)}function sr(E,A){var M=[r(),r(),r(),r()];$(M[0],f),$(M[1],d),$(M[2],a),de(M[3],f,d),tr(E,M,A)}function Un(E,A,M){var y=new Uint8Array(64),R=[r(),r(),r(),r()],Q;for(M||n(A,32),bn(y,A,32),y[0]&=248,y[31]&=127,y[31]|=64,sr(R,y),wn(E,R),Q=0;Q<32;Q++)A[Q+32]=E[Q];return 0}var or=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function k(E,A){var M,y,R,Q;for(y=63;y>=32;--y){for(M=0,R=y-32,Q=y-12;R>4)*or[R],M=A[R]>>8,A[R]&=255;for(R=0;R<32;R++)A[R]-=M*or[R];for(y=0;y<32;y++)A[y+1]+=A[y]>>8,E[y]=A[y]&255}function b(E){var A=new Float64Array(64),M;for(M=0;M<64;M++)A[M]=E[M];for(M=0;M<64;M++)E[M]=0;k(E,A)}function w(E,A,M,y){var R=new Uint8Array(64),Q=new Uint8Array(64),Y=new Uint8Array(64),oe,_e,Pe=new Float64Array(64),xe=[r(),r(),r(),r()];bn(R,y,32),R[0]&=248,R[31]&=127,R[31]|=64;var St=M+64;for(oe=0;oe>7&&ue(E[0],o,E[0]),de(E[3],E[0],E[1]),0)}function X(E,A,M,y){var R,Q=new Uint8Array(32),Y=new Uint8Array(64),oe=[r(),r(),r(),r()],_e=[r(),r(),r(),r()];if(M<64||F(_e,y))return-1;for(R=0;R=0},e.sign.keyPair=function(){var E=new Uint8Array(rr),A=new Uint8Array(lo);return Un(E,A),{publicKey:E,secretKey:A}},e.sign.keyPair.fromSecretKey=function(E){if(Tt(E),E.length!==lo)throw new Error("bad secret key size");for(var A=new Uint8Array(rr),M=0;Mt.replace("'",""),wK=t=>{const r=xg.create(Gx,gK).update(If(t)).digest(),n=r.slice(0,32),i=r.slice(32);return{key:n,chainCode:i}},_K=({key:t,chainCode:e},r)=>{const n=new ArrayBuffer(4);new DataView(n).setUint32(0,r);const s=new Uint8Array(1+t.length+n.byteLength);s.set(new Uint8Array(1).fill(0)),s.set(t,1),s.set(new Uint8Array(n,0,n.byteLength),t.length+1);const o=xg.create(Gx,e).update(s).digest(),a=o.slice(0,32),u=o.slice(32);return{key:a,chainCode:u}},xK=t=>bK.test(t)?!t.split("/").slice(1).map(c5).some(isNaN):!1,UC=(t,e,r=vK)=>{if(!xK(t))throw new Error("Invalid derivation path");const{key:n,chainCode:i}=wK(e);return t.split("/").slice(1).map(c5).map(o=>parseInt(o,10)).reduce((o,a)=>_K(o,a+r),{key:n,chainCode:i})},h1=32;class l5 extends GM{constructor(e){if(super(),typeof e=="string"?this.data=yn(e):e instanceof Uint8Array?this.data=e:this.data=Uint8Array.from(e),this.data.length!==h1)throw new Error(`Invalid public key input. Expected ${h1} bytes, got ${this.data.length}`)}equals(e){return super.equals(e)}toRawBytes(){return this.data}flag(){return _p.ED25519}async verify(e,r){let n;if(typeof r=="string"){const i=Gq(r);if(i.signatureScheme!=="ED25519")throw new Error("Invalid signature scheme");if(!HM(this.toRawBytes(),i.publicKey))throw new Error("Signature does not match public key");n=i.signature}else n=r;return Eu.sign.detached.verify(e,n,this.toRawBytes())}}l5.SIZE=h1;const FC="m/44'/784'/0'/0'/0'";class vl extends lK{constructor(e){super(),e?this.keypair=e:this.keypair=Eu.sign.keyPair()}getKeyScheme(){return"ED25519"}static generate(){return new vl(Eu.sign.keyPair())}static fromSecretKey(e,r){if(typeof e=="string"){const s=fK(e);if(s.schema!=="ED25519")throw new Error(`Expected a ED25519 keypair, got ${s.schema}`);return this.fromSecretKey(s.secretKey,r)}const n=e.length;if(n!==J0)throw new Error(`Wrong secretKey size. Expected ${J0} bytes, got ${n}.`);const i=Eu.sign.keyPair.fromSeed(e);if(!r||!r.skipValidation){const o=new TextEncoder().encode("sui validation"),a=Eu.sign.detached(o,i.secretKey);if(!Eu.sign.detached.verify(o,a,i.publicKey))throw new Error("provided secretKey is invalid")}return new vl(i)}getPublicKey(){return new l5(this.keypair.publicKey)}getSecretKey(){return dK(this.keypair.secretKey.slice(0,J0),this.getKeyScheme())}async sign(e){return Eu.sign.detached(e,this.keypair.secretKey)}static deriveKeypair(e,r){if(r==null&&(r=FC),!DC(r))throw new Error("Invalid derivation path");const{key:n}=UC(r,sK(e));return vl.fromSecretKey(n)}static deriveKeypairFromSeed(e,r){if(r==null&&(r=FC),!DC(r))throw new Error("Invalid derivation path");const{key:n}=UC(r,e);return vl.fromSecretKey(n)}}function SK(t){return{all:t=t||new Map,on:function(e,r){var n=t.get(e);n?n.push(r):t.set(e,[r])},off:function(e,r){var n=t.get(e);n&&(r?n.splice(n.indexOf(r)>>>0,1):t.set(e,[]))},emit:function(e,r){var n=t.get(e);n&&n.slice().map(function(i){i(r)}),(n=t.get("*"))&&n.slice().map(function(i){i(e,r)})}}}function EK(){let t,e;return{promise:new Promise((n,i)=>{t=n,e=i}),reject:e,resolve:t}}const OK=mp("type",[Ce({type:He("connect")}),Ce({type:He("sign-transaction-block"),data:Ye("`data` is required"),address:Ye("`address` is required")}),Ce({type:He("sign-personal-message"),bytes:Ye("`bytes` is required"),address:Ye("`address` is required")})]);Ce({id:Lt(Ye("`id` is required"),fg()),origin:Lt(Ye(),hx("`origin` must be a valid URL")),name:un(Ye()),payload:OK});const CK=mp("type",[Ce({type:He("connect"),address:Ye()}),Ce({type:He("sign-transaction-block"),bytes:Ye(),signature:Ye()}),Ce({type:He("sign-personal-message"),bytes:Ye(),signature:Ye()})]),TK=mp("type",[Ce({type:He("reject")}),Ce({type:He("resolve"),data:CK})]),PK=Ce({id:Lt(Ye(),fg()),source:He("zksend-channel"),payload:TK});var f5=t=>{throw TypeError(t)},Kx=(t,e,r)=>e.has(t)||f5("Cannot "+r),Mn=(t,e,r)=>(Kx(t,e,"read from private field"),r?r.call(t):e.get(t)),Ji=(t,e,r)=>e.has(t)?f5("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Fs=(t,e,r,n)=>(Kx(t,e,"write to private field"),e.set(t,r),r),Hv=(t,e,r)=>(Kx(t,e,"access private method"),r),Yc,Td,Pd,Y0,Q0,Z0,em,tm,Dl,py,Id,rm;const d5="https://getstashed.com";class l0{constructor({name:e,network:r,origin:n=d5}){Ji(this,Id),Ji(this,Yc),Ji(this,Td),Ji(this,Pd),Ji(this,Y0),Ji(this,Q0),Ji(this,Z0),Ji(this,em),Ji(this,tm),Ji(this,Dl,null),Ji(this,py,u=>{if(u.origin!==Mn(this,Pd))return;const{success:c,output:l}=bx(PK,u.data);!c||l.id!==Mn(this,Td)||(Hv(this,Id,rm).call(this),l.payload.type==="reject"?Mn(this,tm).call(this,new Error("User rejected the request")):l.payload.type==="resolve"&&Mn(this,em).call(this,l.payload.data))});const i=window.open("about:blank","_blank");if(!i)throw new Error("Failed to open new window");Fs(this,Yc,i),Fs(this,Td,crypto.randomUUID()),Fs(this,Pd,n),Fs(this,Y0,e),Fs(this,Q0,r);const{promise:s,resolve:o,reject:a}=EK();Fs(this,Z0,s),Fs(this,em,o),Fs(this,tm,a),Fs(this,Dl,setInterval(()=>{try{Mn(this,Yc).closed&&(Hv(this,Id,rm).call(this),a(new Error("User closed the Stashed window")))}catch{}},1e3))}send({type:e,...r}){return window.addEventListener("message",Mn(this,py)),Mn(this,Yc).location.assign(`${Mn(this,Pd)}/dapp/${e}?${new URLSearchParams({id:Mn(this,Td),origin:window.origin,network:Mn(this,Q0),name:Mn(this,Y0)})}${r?`#${new URLSearchParams(r)}`:""}`),Mn(this,Z0)}close(){Hv(this,Id,rm).call(this),Mn(this,Yc).close()}}Yc=new WeakMap;Td=new WeakMap;Pd=new WeakMap;Y0=new WeakMap;Q0=new WeakMap;Z0=new WeakMap;em=new WeakMap;tm=new WeakMap;Dl=new WeakMap;py=new WeakMap;Id=new WeakSet;rm=function(){Mn(this,Dl)&&(clearInterval(Mn(this,Dl)),Fs(this,Dl,null)),window.removeEventListener("message",Mn(this,py))};var h5=t=>{throw TypeError(t)},Xx=(t,e,r)=>e.has(t)||h5("Cannot "+r),Dr=(t,e,r)=>(Xx(t,e,"read from private field"),r?r.call(t):e.get(t)),ki=(t,e,r)=>e.has(t)?h5("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),ju=(t,e,r,n)=>(Xx(t,e,"write to private field"),e.set(t,r),r),f0=(t,e,r)=>(Xx(t,e,"access private method"),r),bl,Bl,Ou,Cu,Tu,p1,m1,y1,g1,Qc,kd,v1,b1;const w1="stashed:recentAddress",p5="Stashed";class IK{constructor({name:e,network:r,address:n,origin:i=d5}){ki(this,Qc),ki(this,bl),ki(this,Bl),ki(this,Ou),ki(this,Cu),ki(this,Tu),ki(this,p1,async({transactionBlock:s,account:o})=>{s.setSenderIfNotSet(o.address);const a=s.serialize(),c=await new l0({name:Dr(this,Cu),origin:Dr(this,Ou),network:Dr(this,Tu)}).send({type:"sign-transaction-block",data:a,address:o.address});return{transactionBlockBytes:c.bytes,signature:c.signature}}),ki(this,m1,async({transaction:s,account:o})=>{const a=new l0({name:Dr(this,Cu),origin:Dr(this,Ou),network:Dr(this,Tu)}),u=kh.from(await s.toJSON());u.setSenderIfNotSet(o.address);const c=u.serialize(),l=await a.send({type:"sign-transaction-block",data:c,address:o.address});return{bytes:l.bytes,signature:l.signature}}),ki(this,y1,async({message:s,account:o})=>{const a=new l0({name:Dr(this,Cu),origin:Dr(this,Ou),network:Dr(this,Tu)}),u=zt(s),c=await a.send({type:"sign-personal-message",bytes:u,address:o.address});return{bytes:u,signature:c.signature}}),ki(this,g1,(s,o)=>(Dr(this,bl).on(s,o),()=>Dr(this,bl).off(s,o))),ki(this,v1,async s=>{if(s!=null&&s.silent){const u=localStorage.getItem(w1);return u&&f0(this,Qc,kd).call(this,u),{accounts:this.accounts}}const a=await new l0({name:Dr(this,Cu),origin:Dr(this,Ou),network:Dr(this,Tu)}).send({type:"connect"});if(!("address"in a))throw new Error("Unexpected response");return f0(this,Qc,kd).call(this,a.address),{accounts:this.accounts}}),ki(this,b1,async()=>{localStorage.removeItem(w1),f0(this,Qc,kd).call(this)}),ju(this,Bl,[]),ju(this,bl,SK()),ju(this,Ou,i),ju(this,Cu,e),ju(this,Tu,r),n&&f0(this,Qc,kd).call(this,n)}get name(){return p5}get icon(){return"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1NiIgaGVpZ2h0PSI1NiIgZmlsbD0ibm9uZSI+PHJlY3Qgd2lkdGg9IjU0IiBoZWlnaHQ9IjU0IiB4PSIxIiB5PSIxIiBmaWxsPSIjNTE5REU5IiByeD0iMjciLz48cmVjdCB3aWR0aD0iNTQiIGhlaWdodD0iNTQiIHg9IjEiIHk9IjEiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIyIiByeD0iMjciLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTguMzUzIDM1LjA2NGMuOTIxIDMuNDM4IDQuMzYzIDYuNTUxIDExLjQ4MyA0LjY0NCA2Ljc5NC0xLjgyMSAxMS4wNTItNy40MSA5Ljk0OC0xMS41My0uMzgxLTEuNDIzLTEuNTMtMi4zODctMy4zLTIuMjNsLTE1LjgzMiAxLjMyYy0uOTk3LjA3Ni0xLjQ1NC0uMDg4LTEuNzE4LS43MTYtLjI1Ni0uNTk5LS4xMS0xLjI0MSAxLjA5NC0xLjg1bDEyLjA0OC02LjE4M2MuOTI0LS40NyAxLjUzOS0uNjY2IDIuMTAxLS40NjguMzUyLjEyOC41ODQuNjM4LjM3MSAxLjI2N2wtLjc4MSAyLjMwNmMtLjk1OSAyLjgzIDEuMDk0IDMuNDg4IDIuMjUgMy4xNzggMS43NTEtLjQ2OSAyLjE2My0yLjEzNiAxLjU5OS00LjI0LTEuNDMtNS4zMzctNy4wOS02LjE3LTEyLjIyMy00Ljc5Ni01LjIyMiAxLjQtOS43NDggNS42My04LjM2NiAxMC43ODkuMzI1IDEuMjE1IDEuNDQ0IDIuMTg2IDIuNzQgMi4xNTdsMS45NzgtLjAwNWMuNDA3LS4wMS4yNi4wMjQgMS4wNDYtLjA0MS43ODQtLjA2NSAyLjg4LS4zMjMgMi44OC0uMzIzbDEwLjI4Ni0xLjE2NC4yNjUtLjAzOGMuNjAyLS4xMDMgMS4wNTYuMDUzIDEuNDQuNzE1LjU3Ni45OTEtLjMwMiAxLjczOC0xLjM1MiAyLjYzM2wtLjA4NS4wNzItOS4wNDEgNy43OTJjLTEuNTUgMS4zMzctMi42MzkuODM0LTMuMDItLjU4OWwtMS4zNS01LjA0Yy0uMzM0LTEuMjQ0LTEuNTUtMi4yMjEtMi45NzQtMS44NC0xLjc4LjQ3Ny0xLjkyNCAyLjU1LTEuNDg3IDQuMThaIi8+PC9zdmc+Cg=="}get version(){return"1.0.0"}get chains(){return[Ex]}get accounts(){return Dr(this,Bl)}get features(){return{"standard:connect":{version:"1.0.0",connect:Dr(this,v1)},"standard:disconnect":{version:"1.0.0",disconnect:Dr(this,b1)},"standard:events":{version:"1.0.0",on:Dr(this,g1)},"sui:signTransactionBlock":{version:"1.0.0",signTransactionBlock:Dr(this,p1)},"sui:signTransaction":{version:"2.0.0",signTransaction:Dr(this,m1)},"sui:signPersonalMessage":{version:"1.0.0",signPersonalMessage:Dr(this,y1)}}}}bl=new WeakMap;Bl=new WeakMap;Ou=new WeakMap;Cu=new WeakMap;Tu=new WeakMap;p1=new WeakMap;m1=new WeakMap;y1=new WeakMap;g1=new WeakMap;Qc=new WeakSet;kd=function(t){t?(ju(this,Bl,[new og({address:t,chains:[Ex],features:["sui:signTransactionBlock","sui:signPersonalMessage"],publicKey:new Uint8Array})]),localStorage.setItem(w1,t)):ju(this,Bl,[]),Dr(this,bl).emit("change",{accounts:this.accounts})};v1=new WeakMap;b1=new WeakMap;function kK(t,{origin:e,network:r="mainnet"}={}){const n=sg();let i=null;try{const a=new URLSearchParams(window.location.search);i=a.get("stashed_address")||a.get("zksend_address")}catch{}const s=new IK({name:t,network:r,origin:e,address:i}),o=n.register(s);return{wallet:s,unregister:o,addressFromRedirect:i}}const AK={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function m5(t,e){let r;try{r=t()}catch{return}return{getItem:i=>{var s;const o=u=>u===null?null:JSON.parse(u,void 0),a=(s=r.getItem(i))!=null?s:null;return a instanceof Promise?a.then(o):o(a)},setItem:(i,s)=>r.setItem(i,JSON.stringify(s,void 0)),removeItem:i=>r.removeItem(i)}}const Bh=t=>e=>{try{const r=t(e);return r instanceof Promise?r:{then(n){return Bh(n)(r)},catch(n){return this}}}catch(r){return{then(n){return this},catch(n){return Bh(n)(r)}}}},jK=(t,e)=>(r,n,i)=>{let s={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:x=>x,version:0,merge:(x,_)=>({..._,...x}),...e},o=!1;const a=new Set,u=new Set;let c;try{c=s.getStorage()}catch{}if(!c)return t((...x)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(...x)},n,i);const l=Bh(s.serialize),f=()=>{const x=s.partialize({...n()});let _;const S=l({state:x,version:s.version}).then(O=>c.setItem(s.name,O)).catch(O=>{_=O});if(_)throw _;return S},d=i.setState;i.setState=(x,_)=>{d(x,_),f()};const h=t((...x)=>{r(...x),f()},n,i);let m;const g=()=>{var x;if(!c)return;o=!1,a.forEach(S=>S(n()));const _=((x=s.onRehydrateStorage)==null?void 0:x.call(s,n()))||void 0;return Bh(c.getItem.bind(c))(s.name).then(S=>{if(S)return s.deserialize(S)}).then(S=>{if(S)if(typeof S.version=="number"&&S.version!==s.version){if(s.migrate)return s.migrate(S.state,S.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return S.state}).then(S=>{var O;return m=s.merge(S,(O=n())!=null?O:h),r(m,!0),f()}).then(()=>{_==null||_(m,void 0),o=!0,u.forEach(S=>S(m))}).catch(S=>{_==null||_(void 0,S)})};return i.persist={setOptions:x=>{s={...s,...x},x.getStorage&&(c=x.getStorage())},clearStorage:()=>{c==null||c.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>g(),hasHydrated:()=>o,onHydrate:x=>(a.add(x),()=>{a.delete(x)}),onFinishHydration:x=>(u.add(x),()=>{u.delete(x)})},g(),m||h},MK=(t,e)=>(r,n,i)=>{let s={storage:m5(()=>localStorage),partialize:g=>g,version:0,merge:(g,x)=>({...x,...g}),...e},o=!1;const a=new Set,u=new Set;let c=s.storage;if(!c)return t((...g)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(...g)},n,i);const l=()=>{const g=s.partialize({...n()});return c.setItem(s.name,{state:g,version:s.version})},f=i.setState;i.setState=(g,x)=>{f(g,x),l()};const d=t((...g)=>{r(...g),l()},n,i);i.getInitialState=()=>d;let h;const m=()=>{var g,x;if(!c)return;o=!1,a.forEach(S=>{var O;return S((O=n())!=null?O:d)});const _=((x=s.onRehydrateStorage)==null?void 0:x.call(s,(g=n())!=null?g:d))||void 0;return Bh(c.getItem.bind(c))(s.name).then(S=>{if(S)if(typeof S.version=="number"&&S.version!==s.version){if(s.migrate)return[!0,s.migrate(S.state,S.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,S.state];return[!1,void 0]}).then(S=>{var O;const[D,z]=S;if(h=s.merge(z,(O=n())!=null?O:d),r(h,!0),D)return l()}).then(()=>{_==null||_(h,void 0),h=n(),o=!0,u.forEach(S=>S(h))}).catch(S=>{_==null||_(void 0,S)})};return i.persist={setOptions:g=>{s={...s,...g},g.storage&&(c=g.storage)},clearStorage:()=>{c==null||c.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:g=>(a.add(g),()=>{a.delete(g)}),onFinishHydration:g=>(u.add(g),()=>{u.delete(g)})},s.skipHydration||m(),h||d},$K=(t,e)=>"getStorage"in e||"serialize"in e||"deserialize"in e?((AK?"production":void 0)!=="production"&&console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),jK(t,e)):MK(t,e),NK=$K;function _1(t){var e=t.match(/^var\((.*)\)$/);return e?e[1]:t}function RK(t,e){var r=t;for(var n of e){if(!(n in r))throw new Error("Path ".concat(e.join(" -> ")," does not exist in object"));r=r[n]}return r}function Jx(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],n={};for(var i in t){var s=t[i],o=[...r,i];typeof s=="string"||typeof s=="number"||s==null?n[i]=e(s,o):typeof s=="object"&&!Array.isArray(s)?n[i]=Jx(s,e,o):console.warn('Skipping invalid key "'.concat(o.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(s)?"Array":typeof s,'"'))}return n}function DK(t,e){var r={};if(typeof e=="object"){var n=t;Jx(e,(a,u)=>{if(a!=null){var c=RK(n,u);r[_1(c)]=String(a)}})}else{var i=t;for(var s in i){var o=i[s];o!=null&&(r[_1(s)]=o)}}return Object.defineProperty(r,"toString",{value:function(){return Object.keys(this).map(u=>"".concat(u,":").concat(this[u])).join(";")},writable:!1}),r}var LC={},BK=t=>{var{fileScope:e,css:r}=t,n=e.packageName?[e.packageName,e.filePath].join("/"):e.filePath,i=LC[n];if(!i){var s=document.createElement("style");e.packageName&&s.setAttribute("data-package",e.packageName),s.setAttribute("data-file",e.filePath),s.setAttribute("type","text/css"),i=LC[n]=s,document.head.appendChild(s)}i.innerHTML=r};/*! https://mths.be/cssesc v3.0.0 by @mathias */var UK={},FK=UK.hasOwnProperty,LK=function(e,r){if(!e)return r;var n={};for(var i in r)n[i]=FK.call(e,i)?e[i]:r[i];return n},zK=/[ -,\.\/:-@\[-\^`\{-~]/,VK=/[ -,\.\/:-@\[\]\^`\{-~]/,WK=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,Yx=function t(e,r){r=LK(r,t.options),r.quotes!="single"&&r.quotes!="double"&&(r.quotes="single");for(var n=r.quotes=="double"?'"':"'",i=r.isIdentifier,s=e.charAt(0),o="",a=0,u=e.length;a126){if(l>=55296&&l<=56319&&a0;){const a=o.shift();if(a!==void 0)for(const u in r[a]){const c=r[a][u];o.push(c);let l=s[a];for(;l>0&&!(u in r[l]);)l=s[l];if(u in r[l]){const f=r[l][u];s[c]=f,n[c]=[...n[c],...n[f]]}else s[c]=0}}return{gotoFn:r,output:n,failure:s}}search(e){let r=0;const n=[];for(let i=0;i0&&!(s in this.gotoFn[r]);)r=this.failure[r];if(s in this.gotoFn[r]&&(r=this.gotoFn[r][s],this.output[r].length>0)){const o=this.output[r];n.push([i,o])}}return n}}var qK={appendCss:()=>{},registerClassName:()=>{},onEndFileScope:()=>{},registerComposition:()=>{},markCompositionUsed:()=>{},getIdentOption:()=>"short"},nm=[qK],KK=()=>{if(nm.length<1)throw new Error("No adapter configured");return nm[nm.length-1]},y5=!1,XK=t=>{y5||JK(t)},JK=t=>{if(!t)throw new Error('No adapter provided when calling "setAdapter"');y5=!0,nm.push(t)},YK=function(){return KK().markCompositionUsed(...arguments)};function g5(t,e){return e||(e=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}var Er;(function(t){t.Attribute="attribute",t.Pseudo="pseudo",t.PseudoElement="pseudo-element",t.Tag="tag",t.Universal="universal",t.Adjacent="adjacent",t.Child="child",t.Descendant="descendant",t.Parent="parent",t.Sibling="sibling",t.ColumnCombinator="column-combinator"})(Er||(Er={}));var Fi;(function(t){t.Any="any",t.Element="element",t.End="end",t.Equals="equals",t.Exists="exists",t.Hyphen="hyphen",t.Not="not",t.Start="start"})(Fi||(Fi={}));const zC=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,QK=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,ZK=new Map([[126,Fi.Element],[94,Fi.Start],[36,Fi.End],[42,Fi.Any],[33,Fi.Not],[124,Fi.Hyphen]]),eX=new Set(["has","not","matches","is","where","host","host-context"]);function tX(t){switch(t.type){case Er.Adjacent:case Er.Child:case Er.Descendant:case Er.Parent:case Er.Sibling:case Er.ColumnCombinator:return!0;default:return!1}}const rX=new Set(["contains","icontains"]);function nX(t,e,r){const n=parseInt(e,16)-65536;return n!==n||r?e:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,n&1023|56320)}function id(t){return t.replace(QK,nX)}function Gv(t){return t===39||t===34}function VC(t){return t===32||t===9||t===10||t===12||t===13}function iX(t){const e=[],r=v5(e,`${t}`,0);if(r0&&r0&&tX(n[n.length-1]))throw new Error("Did not expect successive traversals.")}function c(d){if(n.length>0&&n[n.length-1].type===Er.Descendant){n[n.length-1].type=d;return}u(),n.push({type:d})}function l(d,h){n.push({type:Er.Attribute,name:d,action:h,value:i(1),namespace:null,ignoreCase:"quirks"})}function f(){if(n.length&&n[n.length-1].type===Er.Descendant&&n.pop(),n.length===0)throw new Error("Empty sub-selector");t.push(n)}if(s(0),e.length===r)return r;e:for(;rw5(HC(HC({},t),r)),e;function e(r,...n){const i=typeof r=="string"?[r]:r.raw,{escapeSpecialCharacters:s=Array.isArray(r)}=t;let o="";for(let c=0;cl[0]===" "||l[0]===" "?l.slice(c):l).join(` +`)}return o=o.trim(),s&&(o=o.replace(/\\n/g,` +`)),o}}/*! @license MediaQueryParser - MIT License - Tom Golden (github@tbjgolden.com) *//*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var my=function(){return my=Object.assign||function(e){for(var r,n=1,i=arguments.length;n=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function nn(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(o)throw o.error}}return s}var cX=/(\u000D|\u000C|\u000D\u000A)/g,lX=/[\u0000\uD800-\uDFFF]/g,fX=/(\/\*)[\s\S]*?(\*\/)/g,dX=function(e,r){r===void 0&&(r=0),e=e.replace(cX,` +`).replace(lX,"�"),e=e.replace(fX,"");for(var n=[];r"})}else if(i===34){var o=GC(e,r);if(o===null)return null;var a=nn(o,2),u=a[0],c=a[1];n.push({type:"",value:c}),r=u}else if(i===35){if(r+1=65&&l<=90||l>=97&&l<=122||l>=128||l>=48&&l<=57||l===92&&r+2",value:c.toLowerCase(),flag:f}),r=u;continue}}}n.push({type:"",value:i})}else if(i===39){var o=GC(e,r);if(o===null)return null;var h=nn(o,2),u=h[0],c=h[1];n.push({type:"",value:c}),r=u}else if(i===40)n.push({type:"<(-token>"});else if(i===41)n.push({type:"<)-token>"});else if(i===43){var m=d0(e,r);if(m===null)n.push({type:"",value:i});else{var g=nn(m,2),u=g[0],x=g[1];x[0]===""?n.push({type:"",value:x[1],unit:x[2].toLowerCase(),flag:"number"}):x[0]===""?n.push({type:x[0],value:x[1],flag:x[2]}):n.push({type:x[0],value:x[1],flag:"number"}),r=u}}else if(i===44)n.push({type:""});else if(i===45){var _=d0(e,r);if(_!==null){var S=nn(_,2),u=S[0],x=S[1];x[0]===""?n.push({type:"",value:x[1],unit:x[2].toLowerCase(),flag:"number"}):x[0]===""?n.push({type:x[0],value:x[1],flag:x[2]}):n.push({type:x[0],value:x[1],flag:"number"}),r=u;continue}if(r+2"}),r+=2;continue}}var o=qC(e,r);if(o!==null){var D=nn(o,3),u=D[0],c=D[1],z=D[2];n.push({type:z,value:c}),r=u;continue}n.push({type:"",value:i})}else if(i===46){var _=d0(e,r);if(_===null)n.push({type:"",value:i});else{var G=nn(_,2),u=G[0],x=G[1];x[0]===""?n.push({type:"",value:x[1],unit:x[2].toLowerCase(),flag:"number"}):x[0]===""?n.push({type:x[0],value:x[1],flag:x[2]}):n.push({type:x[0],value:x[1],flag:"number"}),r=u;continue}}else if(i===58)n.push({type:""});else if(i===59)n.push({type:""});else if(i===60){if(r+3"}),r+=3;continue}}n.push({type:"",value:i})}else if(i===64){var o=Zx(e,r+1);if(o!==null){var J=nn(o,2),u=J[0],c=J[1];n.push({type:"",value:c.toLowerCase()}),r=u;continue}n.push({type:"",value:i})}else if(i===91)n.push({type:"<[-token>"});else if(i===92){var o=xp(e,r);if(o===null)return null;var fe=nn(o,2),u=fe[0],c=fe[1];e=e.slice(0,r)+c+e.slice(u+1),r-=1}else if(i===93)n.push({type:"<]-token>"});else if(i===123)n.push({type:"<{-token>"});else if(i===125)n.push({type:"<}-token>"});else if(i>=48&&i<=57){var o=d0(e,r),pe=nn(o,2),u=pe[0],x=pe[1];x[0]===""?n.push({type:"",value:x[1],unit:x[2].toLowerCase(),flag:"number"}):x[0]===""?n.push({type:x[0],value:x[1],flag:x[2]}):n.push({type:x[0],value:x[1],flag:"number"}),r=u}else if(i===95||i>=65&&i<=90||i>=97&&i<=122||i>=128){var o=qC(e,r);if(o===null)return null;var Oe=nn(o,3),u=Oe[0],c=Oe[1],z=Oe[2];n.push({type:z,value:c}),r=u}else n.push({type:"",value:i})}return n.push({type:""}),n},GC=function(e,r){if(e.length<=r+1)return null;for(var n=e.charCodeAt(r),i=[],s=r+1;s=65&&i<=90||i>=97&&i<=122||i>=128)return!0;if(i===92){if(e.length<=r+2)return!1;var s=e.charCodeAt(r+2);return s!==10}else return!1}else{if(n===95||n>=65&&n<=90||n>=97&&n<=122||n>=128)return!0;if(n===92){if(e.length<=r+1)return!1;var i=e.charCodeAt(r+1);return i!==10}else return!1}},xp=function(e,r){if(e.length<=r+1||e.charCodeAt(r)!==92)return null;var n=e.charCodeAt(r+1);if(n===10)return null;if(n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102){for(var i=[n],s=Math.min(r+7,e.length),o=r+2;o=48&&a<=57||a>=65&&a<=70||a>=97&&a<=102)i.push(a);else break}if(o",o,f]]}return s+1",o]]:[s,["",o,a]]},hX=function(e,r){if(e.length<=r)return null;var n="integer",i=[],s=e.charCodeAt(r);for((s===43||s===45)&&(r+=1,s===45&&i.push(45));r=48&&o<=57)i.push(o),r+=1;else break}if(r+1=48&&u<=57)for(i.push(a,u),n="number",r+=2;r=48&&o<=57)i.push(o),r+=1;else break}}if(r+1=48&&u<=57;if(l||(u===43||u===45)&&c>=48&&c<=57)for(n="number",l?(i.push(69,u),r+=2):u===45?(i.push(69,45,c),r+=3):(i.push(69,c),r+=3);r=48&&o<=57)i.push(o),r+=1;else break}}}var f=String.fromCharCode.apply(null,i),d=n==="number"?parseFloat(f):parseInt(f);return d===-0&&(d=0),Number.isNaN(d)?null:[r-1,d,n]},pX=function(e,r){if(e.length<=r)return null;for(var n=[],i=e.charCodeAt(r);r=65&&i<=90||i>=97&&i<=122||i>=128||i>=48&&i<=57){n.push(i);continue}else{var s=xp(e,r);if(s!==null){var o=nn(s,2),a=o[0],u=o[1];n.push(u),r=a;continue}}break}return r===0?null:[r-1,String.fromCharCode.apply(null,n)]},Zx=function(e,r){if(e.length<=r||!_5(e,r))return null;for(var n=[],i=e.charCodeAt(r);r=65&&i<=90||i>=97&&i<=122||i>=128||i>=48&&i<=57){n.push(i);continue}else{var s=xp(e,r);if(s!==null){var o=nn(s,2),a=o[0],u=o[1];n.push(u),r=a;continue}}break}return[r-1,String.fromCharCode.apply(null,n)]},mX=function(e,r){for(var n=e.charCodeAt(r);n===9||n===32||n===10;)n=e.charCodeAt(++r);for(var i=[],s=!1;rs+1){var a=e.charCodeAt(s+1);if(a===40){for(var u=2;s+u"];if(c!==9&&c!==32&&c!==10){var l=mX(e,s+u);if(l===null)return null;var f=nn(l,2),d=f[0],h=f[1];return[d,h,""]}}return[s+1,o.toLowerCase(),""]}}}else if(e.length>s+1){var a=e.charCodeAt(s+1);if(a===40)return[s+1,o.toLowerCase(),""]}return[s,o.toLowerCase(),""]},yX=function(e){for(var r=e.length-1;r>=0;r--)e[r]=gX(e[r]);return e},gX=function(e){if(e.mediaCondition===null)return e;var r=vX(e.mediaCondition);return r.operator===null&&r.children.length===1&&"children"in r.children[0]&&(r=r.children[0]),{mediaPrefix:e.mediaPrefix,mediaType:e.mediaType,mediaCondition:r}},vX=function t(e){for(var r=e.children.length-1;r>=0;r--){var n=e.children[r];if(!("context"in n)){var i=t(n);if(i.operator===null&&i.children.length===1)e.children[r]=i.children[0];else if(i.operator===e.operator&&(i.operator==="and"||i.operator==="or")){for(var s=[r,1],o=0;o"&&r[0].value==="media"){if(r[1].type!=="")throw ti("Expected whitespace after media");n=2;for(var s=2;s"){i=s;break}else if(o.type==="")throw ti("Expected '{' in media query but found ';'")}}return r=r.slice(n,i),xX(r)},_X=function(e){for(var r=[],n=!1,i=0;i"?(n=!0,r.length>0&&(r[r.length-1].wsAfter=!0)):(r.push(my(my({},e[i]),{wsBefore:n,wsAfter:!1})),n=!1);return r},xX=function(e){for(var r,n,i=[[]],s=0;s"?i.push([]):i[i.length-1].push(o)}var a=i.map(_X);if(a.length===1&&a[0].length===0)return[{mediaCondition:null,mediaPrefix:null,mediaType:"all"}];var u=a.map(function(h){return h.length===0?null:SX(h)}),c=[];try{for(var l=uX(u),f=l.next();!f.done;f=l.next()){var d=f.value;d!==null&&c.push(d)}}catch(h){r={error:h}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}if(c.length===0)throw ti("No valid media queries");return c},SX=function(e){var r=e[0];if(r.type==="<(-token>")try{return{mediaPrefix:null,mediaType:"all",mediaCondition:qv(e,!0)}}catch(f){throw ti("Expected media condition after '('",f)}else if(r.type===""){var n=null,i=void 0,s=r.value;(s==="only"||s==="not")&&(n=s);var o=n===null?0:1;if(e.length<=o)throw ti("Expected extra token in media query");var a=e[o];if(a.type===""){var u=a.value;if(u==="all")i="all";else if(u==="print"||u==="screen")i=u;else if(u==="tty"||u==="tv"||u==="projection"||u==="handheld"||u==="braille"||u==="embossed"||u==="aural"||u==="speech")n=n==="not"?null:"not",i="all";else throw ti("Unknown ident '".concat(u,"' in media query"))}else if(n==="not"&&a.type==="<(-token>"){var c=[{type:"<(-token>",wsBefore:!1,wsAfter:!1}];c.push.apply(c,e),c.push({type:"<)-token>",wsBefore:!1,wsAfter:!1});try{return{mediaPrefix:null,mediaType:"all",mediaCondition:qv(c,!0)}}catch(f){throw ti("Expected media condition after '('",f)}}else throw ti("Invalid media query");if(o+1===e.length)return{mediaPrefix:n,mediaType:i,mediaCondition:null};if(o+4"&&l.value==="and")try{return{mediaPrefix:n,mediaType:i,mediaCondition:qv(e.slice(o+2),!1)}}catch(f){throw ti("Expected media condition after 'and'",f)}else throw ti("Expected 'and' after media prefix")}else throw ti("Expected media condition after media prefix")}else throw ti("Expected media condition or media prefix")},qv=function t(e,r,n){if(n===void 0&&(n=null),e.length<3||e[0].type!=="<(-token>"||e[e.length-1].type!=="<)-token>")throw new Error("Invalid media condition");for(var i=e.length-1,s=0,o=0,a=0;a"?(o+=1,s=Math.max(s,o)):u.type==="<)-token>"&&(o-=1),o===0){i=a;break}}if(o!==0)throw new Error(`Mismatched parens +Invalid media condition`);var c,l=e.slice(0,i+1);if(s===1?c=EX(l):l[1].type===""&&l[1].value==="not"?c=t(l.slice(2,-1),!0,"not"):c=t(l.slice(1,-1),!0),i===e.length-1)return{operator:n,children:[c]};var f=e[i+1];if(f.type!=="")throw new Error(`Invalid operator +Invalid media condition`);if(n!==null&&n!==f.value)throw new Error("'".concat(f.value,"' and '").concat(n,`' must not be at same level +Invalid media condition`));if(f.value==="or"&&!r)throw new Error(`Cannot use 'or' at top level of a media query +Invalid media condition`);if(f.value!=="and"&&f.value!=="or")throw new Error("Invalid operator: '".concat(f.value,`' +Invalid media condition`));var d=t(e.slice(i+2),r,f.value);return{operator:f.value,children:[c].concat(d.children)}},EX=function(e){if(e.length<3||e[0].type!=="<(-token>"||e[e.length-1].type!=="<)-token>")throw new Error("Invalid media feature");for(var r=[e[0]],n=1;n"&&i.value>0&&s.type===""&&s.value===47&&o.type===""&&o.value>0){r.push({type:"",numerator:i.value,denominator:o.value,wsBefore:i.wsBefore,wsAfter:o.wsAfter}),n+=2;continue}}r.push(e[n])}var a=r[1];if(a.type===""&&r.length===3)return{context:"boolean",feature:a.value};if(r.length===5&&r[1].type===""&&r[2].type===""){var u=r[3];if(u.type===""||u.type===""||u.type===""||u.type===""){var c=r[1].value,l=null,f=c.slice(0,4);f==="min-"?(l="min",c=c.slice(4)):f==="max-"&&(l="max",c=c.slice(4)),u.wsBefore,u.wsAfter;var d=x1(u,["wsBefore","wsAfter"]);return{context:"value",prefix:l,feature:c,value:d}}}else if(r.length>=5)try{var h=OX(r);return{context:"range",feature:h.featureName,range:h}}catch(m){throw ti("Invalid media feature",m)}throw new Error("Invalid media feature")},OX=function(e){var r,n,i,s;if(e.length<5||e[0].type!=="<(-token>"||e[e.length-1].type!=="<)-token>")throw new Error("Invalid range");var o={leftToken:null,leftOp:null,featureName:"",rightOp:null,rightToken:null},a=e[1].type===""||e[1].type===""||e[1].type===""||e[1].type===""&&e[1].value==="infinite";if(e[2].type===""){if(e[2].value===60)e[3].type===""&&e[3].value===61&&!e[3].wsBefore?o[a?"leftOp":"rightOp"]="<=":o[a?"leftOp":"rightOp"]="<";else if(e[2].value===62)e[3].type===""&&e[3].value===61&&!e[3].wsBefore?o[a?"leftOp":"rightOp"]=">=":o[a?"leftOp":"rightOp"]=">";else if(e[2].value===61)o[a?"leftOp":"rightOp"]="=";else throw new Error("Invalid range");if(a)o.leftToken=e[1];else if(e[1].type==="")o.featureName=e[1].value;else throw new Error("Invalid range");var u=2+((n=(r=o[a?"leftOp":"rightOp"])===null||r===void 0?void 0:r.length)!==null&&n!==void 0?n:0),c=e[u];if(a)if(c.type===""){if(o.featureName=c.value,e.length>=7){var l=e[u+1],f=e[u+2];if(l.type===""){var d=l.value;if(d===60)f.type===""&&f.value===61&&!f.wsBefore?o.rightOp="<=":o.rightOp="<";else if(d===62)f.type===""&&f.value===61&&!f.wsBefore?o.rightOp=">=":o.rightOp=">";else throw new Error("Invalid range");var h=e[u+1+((s=(i=o.rightOp)===null||i===void 0?void 0:i.length)!==null&&s!==void 0?s:0)];o.rightToken=h}else throw new Error("Invalid range")}else if(u+2!==e.length)throw new Error("Invalid range")}else throw new Error("Invalid range");else o.rightToken=c;var m=null,g=o.leftToken,x=o.leftOp,_=o.featureName,S=o.rightOp,O=o.rightToken,D=null;if(g!==null){if(g.type===""){var z=g.type,G=g.value;G==="infinite"&&(D={type:z,value:G})}else if(g.type===""||g.type===""||g.type===""){g.wsBefore,g.wsAfter;var K=x1(g,["wsBefore","wsAfter"]);D=K}}var J=null;if(O!==null){if(O.type===""){var z=O.type,G=O.value;G==="infinite"&&(J={type:z,value:G})}else if(O.type===""||O.type===""||O.type===""){O.wsBefore,O.wsAfter;var fe=x1(O,["wsBefore","wsAfter"]);J=fe}}if(D!==null&&J!==null)if((x==="<"||x==="<=")&&(S==="<"||S==="<="))m={leftToken:D,leftOp:x,featureName:_,rightOp:S,rightToken:J};else if((x===">"||x===">=")&&(S===">"||S===">="))m={leftToken:D,leftOp:x,featureName:_,rightOp:S,rightToken:J};else throw new Error("Invalid range");else D===null&&x===null&&S!==null&&J!==null?m={leftToken:D,leftOp:x,featureName:_,rightOp:S,rightToken:J}:D!==null&&x!==null&&S===null&&J===null&&(m={leftToken:D,leftOp:x,featureName:_,rightOp:S,rightToken:J});return m}else throw new Error("Invalid range")};function CX(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function TX(t){var e=CX(t,"string");return typeof e=="symbol"?e:String(e)}function PX(t,e,r){return e=TX(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function KC(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function Qd(t){for(var e=1;e=0)&&(r[i]=t[i]);return r}function XC(t,e){if(t==null)return{};var r=IX(t,e),n,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function sd(t,e){for(var r in t)e(t[r],r)}function Dc(t,e){var r={};for(var n in t)e.indexOf(n)===-1&&(r[n]=t[n]);return r}function kX(t,e){var r={};for(var n in t)r[e(t[n],n)]=t[n];return r}var JC;function AX(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var jX=(t,e)=>{var r=()=>{var i=new RegExp(".".concat(AX(Qx(e,{isIdentifier:!0}))),"g");return t.replace(i,"&")},n;try{n=iX(t)}catch{throw new Error("Invalid selector: ".concat(r()))}n.forEach(i=>{try{for(var s=i.length-1;s>=-1;s--){if(!i[s])throw new Error;var o=i[s];if(o.type==="child"||o.type==="parent"||o.type==="sibling"||o.type==="adjacent"||o.type==="descendant")throw new Error;if(o.type==="attribute"&&o.name==="class"&&o.value===e)return}}catch{throw new Error(b5(JC||(JC=g5([` + Invalid selector: `,` + + Style selectors must target the '&' character (along with any modifiers), e.g. `," or ",`. + + This is to ensure that each style block only affects the styling of a single class. + + If your selector is targeting another class, you should move it to the style definition for that class, e.g. given we have styles for 'parent' and 'child' elements, instead of adding a selector of `,") to 'parent', you should add ",` to 'child'). + + If your selector is targeting something global, use the 'globalStyle' function instead, e.g. if you wanted to write `,", you should instead write 'globalStyle(",`, { ... })' + `])),r(),"`${parent} &`","`${parent} &:hover`","`& ${child}`","`${parent} &`","`& h1`","`${parent} h1`"))}})};class yy{constructor(){this.ruleset=new Map,this.precedenceLookup=new Map}findOrCreateCondition(e){var r=this.ruleset.get(e);return r||(r={query:e,rules:[],children:new yy},this.ruleset.set(e,r)),r}getConditionalRulesetByPath(e){var r=this;for(var n of e){var i=r.findOrCreateCondition(n);r=i.children}return r}addRule(e,r,n){var i=this.getConditionalRulesetByPath(n),s=i.findOrCreateCondition(r);if(!s)throw new Error("Failed to add conditional rule");s.rules.push(e)}addConditionPrecedence(e,r){for(var n=this.getConditionalRulesetByPath(e),i=0;ia.has(l.query));c>-1?r.splice(c,0,u):r.push(u)};for(var[i,s]of this.precedenceLookup.entries())n(s);return r}renderToArray(){var e=[];for(var{query:r,rules:n,children:i}of this.getSortedRuleset()){var s={};for(var o of n)s[o.selector]=Qd(Qd({},s[o.selector]),o.rule);Object.assign(s,...i.renderToArray()),e.push({[r]:s})}return e}}var x5={":-moz-any-link":!0,":-moz-full-screen":!0,":-moz-placeholder":!0,":-moz-read-only":!0,":-moz-read-write":!0,":-ms-fullscreen":!0,":-ms-input-placeholder":!0,":-webkit-any-link":!0,":-webkit-full-screen":!0,"::-moz-color-swatch":!0,"::-moz-list-bullet":!0,"::-moz-list-number":!0,"::-moz-page-sequence":!0,"::-moz-page":!0,"::-moz-placeholder":!0,"::-moz-progress-bar":!0,"::-moz-range-progress":!0,"::-moz-range-thumb":!0,"::-moz-range-track":!0,"::-moz-scrolled-page-sequence":!0,"::-moz-selection":!0,"::-ms-backdrop":!0,"::-ms-browse":!0,"::-ms-check":!0,"::-ms-clear":!0,"::-ms-fill-lower":!0,"::-ms-fill-upper":!0,"::-ms-fill":!0,"::-ms-reveal":!0,"::-ms-thumb":!0,"::-ms-ticks-after":!0,"::-ms-ticks-before":!0,"::-ms-tooltip":!0,"::-ms-track":!0,"::-ms-value":!0,"::-webkit-backdrop":!0,"::-webkit-calendar-picker-indicator":!0,"::-webkit-inner-spin-button":!0,"::-webkit-input-placeholder":!0,"::-webkit-meter-bar":!0,"::-webkit-meter-even-less-good-value":!0,"::-webkit-meter-inner-element":!0,"::-webkit-meter-optimum-value":!0,"::-webkit-meter-suboptimum-value":!0,"::-webkit-outer-spin-button":!0,"::-webkit-progress-bar":!0,"::-webkit-progress-inner-element":!0,"::-webkit-progress-inner-value":!0,"::-webkit-progress-value":!0,"::-webkit-resizer":!0,"::-webkit-scrollbar-button":!0,"::-webkit-scrollbar-corner":!0,"::-webkit-scrollbar-thumb":!0,"::-webkit-scrollbar-track-piece":!0,"::-webkit-scrollbar-track":!0,"::-webkit-scrollbar":!0,"::-webkit-search-cancel-button":!0,"::-webkit-search-results-button":!0,"::-webkit-slider-runnable-track":!0,"::-webkit-slider-thumb":!0,"::after":!0,"::backdrop":!0,"::before":!0,"::cue":!0,"::file-selector-button":!0,"::first-letter":!0,"::first-line":!0,"::grammar-error":!0,"::marker":!0,"::placeholder":!0,"::selection":!0,"::spelling-error":!0,"::target-text":!0,"::view-transition-group":!0,"::view-transition-image-pair":!0,"::view-transition-new":!0,"::view-transition-old":!0,"::view-transition":!0,":active":!0,":after":!0,":any-link":!0,":before":!0,":blank":!0,":checked":!0,":default":!0,":defined":!0,":disabled":!0,":empty":!0,":enabled":!0,":first-child":!0,":first-letter":!0,":first-line":!0,":first-of-type":!0,":first":!0,":focus-visible":!0,":focus-within":!0,":focus":!0,":fullscreen":!0,":hover":!0,":in-range":!0,":indeterminate":!0,":invalid":!0,":last-child":!0,":last-of-type":!0,":left":!0,":link":!0,":only-child":!0,":only-of-type":!0,":optional":!0,":out-of-range":!0,":placeholder-shown":!0,":read-only":!0,":read-write":!0,":required":!0,":right":!0,":root":!0,":scope":!0,":target":!0,":valid":!0,":visited":!0},MX=Object.keys(x5),$X=x5,YC,QC=(t,e)=>new Error(b5(YC||(YC=g5([` + Invalid media query: "`,`" + + `,` + + Read more on MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries + `])),t,e)),NX=t=>{if(t==="@media ")throw QC(t,"Query is empty");try{bX(t)}catch(e){throw QC(t,e.message)}},RX=["vars"],DX=["content"],S5="__DECLARATION",BX={animationIterationCount:!0,borderImage:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,initialLetter:!0,lineClamp:!0,lineHeight:!0,maxLines:!0,opacity:!0,order:!0,orphans:!0,scale:!0,tabSize:!0,WebkitLineClamp:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,maskBorder:!0,maskBorderOutset:!0,maskBorderSlice:!0,maskBorderWidth:!0,shapeImageThreshold:!0,stopOpacity:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0};function UX(t){return t.replace(/([A-Z])/g,"-$1").replace(/^ms-/,"-ms-").toLowerCase()}function FX(t,e,r,n){var i=t.slice(0,e),s=t.slice(r);return"".concat(i).concat(n).concat(s)}var LX=" ",Bc=[...MX,"@layer","@media","@supports","@container","selectors"];class zX{constructor(e,r){this.rules=[],this.conditionalRulesets=[new yy],this.fontFaceRules=[],this.keyframesRules=[],this.localClassNamesMap=new Map(e.map(n=>[n,n])),this.localClassNamesSearch=new GK(e),this.layers=new Map,this.composedClassLists=r.map(n=>{var{identifier:i,classList:s}=n;return{identifier:i,regex:RegExp("(".concat(s,")"),"g")}}).reverse()}processCssObj(e){if(e.type==="fontFace"){this.fontFaceRules.push(e.rule);return}if(e.type==="keyframes"){e.rule=Object.fromEntries(Object.entries(e.rule).map(s=>{var[o,a]=s;return[o,this.transformProperties(a)]})),this.keyframesRules.push(e);return}if(this.currConditionalRuleset=new yy,e.type==="layer"){var r="@layer ".concat(e.name);this.addLayer([r])}else{var n=Dc(e.rule,Bc);this.addRule({selector:e.selector,rule:n}),this.transformLayer(e,e.rule["@layer"]),this.transformMedia(e,e.rule["@media"]),this.transformSupports(e,e.rule["@supports"]),this.transformContainer(e,e.rule["@container"]),this.transformSimplePseudos(e,e.rule),this.transformSelectors(e,e.rule)}var i=this.conditionalRulesets[this.conditionalRulesets.length-1];i.mergeIfCompatible(this.currConditionalRuleset)||this.conditionalRulesets.push(this.currConditionalRuleset)}addConditionalRule(e,r){var n=this.transformVars(this.transformProperties(e.rule)),i=this.transformSelector(e.selector);if(!this.currConditionalRuleset)throw new Error("Couldn't add conditional rule");var s=r[r.length-1],o=r.slice(0,r.length-1);this.currConditionalRuleset.addRule({selector:i,rule:n},s,o)}addRule(e){var r=this.transformVars(this.transformProperties(e.rule)),n=this.transformSelector(e.selector);this.rules.push({selector:n,rule:r})}addLayer(e){var r=e.join(" - ");this.layers.set(r,e)}transformProperties(e){return this.transformContent(this.pixelifyProperties(e))}pixelifyProperties(e){return sd(e,(r,n)=>{typeof r=="number"&&r!==0&&!BX[n]&&(e[n]="".concat(r,"px"))}),e}transformVars(e){var{vars:r}=e,n=XC(e,RX);return r?Qd(Qd({},kX(r,(i,s)=>_1(s))),n):n}transformContent(e){var{content:r}=e,n=XC(e,DX);if(typeof r>"u")return n;var i=Array.isArray(r)?r:[r];return Qd({content:i.map(s=>s&&(s.includes('"')||s.includes("'")||/^([A-Za-z\-]+\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)(\s|$)/.test(s))?s:'"'.concat(s,'"'))},n)}transformClassname(e){return".".concat(Qx(e,{isIdentifier:!0}))}transformSelector(e){var r=e,n=function(h){r=r.replace(s,()=>(YK(h),h))};for(var{identifier:i,regex:s}of this.composedClassLists)n(i);if(this.localClassNamesMap.has(r))return this.transformClassname(r);for(var o=this.localClassNamesSearch.search(r),a=r.length,u=o.length-1;u>=0;u--){var[c,[l]]=o[u],f=c-l.length+1;f>=a||(a=f,r[f-1]!=="."&&(r=FX(r,f,c+1,this.transformClassname(l))))}return r}transformSelectors(e,r,n){sd(r.selectors,(i,s)=>{if(e.type!=="local")throw new Error("Selectors are not allowed within ".concat(e.type==="global"?'"globalStyle"':'"selectors"'));var o=this.transformSelector(s.replace(RegExp("&","g"),e.selector));jX(o,e.selector);var a={selector:o,rule:Dc(i,Bc)};n?this.addConditionalRule(a,n):this.addRule(a);var u={type:"selector",selector:o,rule:i};this.transformLayer(u,i["@layer"],n),this.transformSupports(u,i["@supports"],n),this.transformMedia(u,i["@media"],n)})}transformMedia(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];if(r){var i;(i=this.currConditionalRuleset)===null||i===void 0||i.addConditionPrecedence(n,Object.keys(r).map(c=>"@media ".concat(c)));for(var[s,o]of Object.entries(r)){var a="@media ".concat(s);NX(a);var u=[...n,a];this.addConditionalRule({selector:e.selector,rule:Dc(o,Bc)},u),e.type==="local"&&(this.transformSimplePseudos(e,o,u),this.transformSelectors(e,o,u)),this.transformLayer(e,o["@layer"],u),this.transformSupports(e,o["@supports"],u),this.transformContainer(e,o["@container"],u)}}}transformContainer(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];if(r){var i;(i=this.currConditionalRuleset)===null||i===void 0||i.addConditionPrecedence(n,Object.keys(r).map(s=>"@container ".concat(s))),sd(r,(s,o)=>{var a="@container ".concat(o),u=[...n,a];this.addConditionalRule({selector:e.selector,rule:Dc(s,Bc)},u),e.type==="local"&&(this.transformSimplePseudos(e,s,u),this.transformSelectors(e,s,u)),this.transformLayer(e,s["@layer"],u),this.transformSupports(e,s["@supports"],u),this.transformMedia(e,s["@media"],u)})}}transformLayer(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];if(r){var i;(i=this.currConditionalRuleset)===null||i===void 0||i.addConditionPrecedence(n,Object.keys(r).map(s=>"@layer ".concat(s))),sd(r,(s,o)=>{var a=[...n,"@layer ".concat(o)];this.addLayer(a),this.addConditionalRule({selector:e.selector,rule:Dc(s,Bc)},a),e.type==="local"&&(this.transformSimplePseudos(e,s,a),this.transformSelectors(e,s,a)),this.transformMedia(e,s["@media"],a),this.transformSupports(e,s["@supports"],a),this.transformContainer(e,s["@container"],a)})}}transformSupports(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];if(r){var i;(i=this.currConditionalRuleset)===null||i===void 0||i.addConditionPrecedence(n,Object.keys(r).map(s=>"@supports ".concat(s))),sd(r,(s,o)=>{var a=[...n,"@supports ".concat(o)];this.addConditionalRule({selector:e.selector,rule:Dc(s,Bc)},a),e.type==="local"&&(this.transformSimplePseudos(e,s,a),this.transformSelectors(e,s,a)),this.transformLayer(e,s["@layer"],a),this.transformMedia(e,s["@media"],a),this.transformContainer(e,s["@container"],a)})}}transformSimplePseudos(e,r,n){for(var i of Object.keys(r))if($X[i]){if(e.type!=="local")throw new Error("Simple pseudos are not valid in ".concat(e.type==="global"?'"globalStyle"':'"selectors"'));n?this.addConditionalRule({selector:"".concat(e.selector).concat(i),rule:r[i]},n):this.addRule({conditions:n,selector:"".concat(e.selector).concat(i),rule:r[i]})}}toCss(){var e=[];for(var r of this.fontFaceRules)e.push(Mu({"@font-face":r}));for(var n of this.keyframesRules)e.push(Mu({["@keyframes ".concat(n.name)]:n.rule}));for(var i of this.layers.values()){var[s,...o]=i.reverse(),a={[s]:S5};for(var u of o)a={[u]:a};e.push(Mu(a))}for(var c of this.rules)e.push(Mu({[c.selector]:c.rule}));for(var l of this.conditionalRulesets)for(var f of l.renderToArray())e.push(Mu(f));return e.filter(Boolean)}}function Mu(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",r=[],n=function(o){var a=t[o];if(a&&Array.isArray(a))r.push(...a.map(c=>Mu({[o]:c},e)));else if(a&&typeof a=="object"){var u=Object.keys(a).length===0;u||r.push("".concat(e).concat(o,` { +`).concat(Mu(a,e+LX),` +`).concat(e,"}"))}else a===S5?r.push("".concat(e).concat(o,";")):r.push("".concat(e).concat(o.startsWith("--")?o:UX(o),": ").concat(a,";"))};for(var i of Object.keys(t))n(i);return r.join(` +`)}function VX(t){var{localClassNames:e,cssObjs:r,composedClassLists:n}=t,i=new zX(e,n);for(var s of r)i.processCssObj(s);return i.toCss()}const Uc=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,E5=new Set,S1=typeof process=="object"&&process?process:{},O5=(t,e,r,n)=>{typeof S1.emitWarning=="function"?S1.emitWarning(t,e,r,n):console.error(`[${r}] ${e}: ${t}`)};let gy=globalThis.AbortController,ZC=globalThis.AbortSignal;var jT;if(typeof gy>"u"){ZC=class{constructor(){Fe(this,"onabort");Fe(this,"_onabort",[]);Fe(this,"reason");Fe(this,"aborted",!1)}addEventListener(n,i){this._onabort.push(i)}},gy=class{constructor(){Fe(this,"signal",new ZC);e()}abort(n){var i,s;if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(const o of this.signal._onabort)o(n);(s=(i=this.signal).onabort)==null||s.call(i,n)}}};let t=((jT=S1.env)==null?void 0:jT.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{t&&(t=!1,O5("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const WX=t=>!E5.has(t),fa=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),C5=t=>fa(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?im:null:null;class im extends Array{constructor(e){super(e),this.fill(0)}}var rf;const Du=class Du{constructor(e,r){Fe(this,"heap");Fe(this,"length");if(!C(Du,rf))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new r(e),this.length=0}static create(e){const r=C5(e);if(!r)return[];le(Du,rf,!0);const n=new Du(e,r);return le(Du,rf,!1),n}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};rf=new WeakMap,Te(Du,rf,!1);let E1=Du;var MT,$T,ss,hi,os,as,nf,sf,rn,us,Kr,dr,mt,Vn,pi,Nn,fn,cs,dn,ls,fs,mi,ds,Aa,Wn,Ie,C1,Qu,Ao,np,yi,T5,Zu,of,ip,da,ha,T1,sm,om,fr,P1,Ad,pa,I1;const OE=class OE{constructor(e){Te(this,Ie);Te(this,ss);Te(this,hi);Te(this,os);Te(this,as);Te(this,nf);Te(this,sf);Fe(this,"ttl");Fe(this,"ttlResolution");Fe(this,"ttlAutopurge");Fe(this,"updateAgeOnGet");Fe(this,"updateAgeOnHas");Fe(this,"allowStale");Fe(this,"noDisposeOnSet");Fe(this,"noUpdateTTL");Fe(this,"maxEntrySize");Fe(this,"sizeCalculation");Fe(this,"noDeleteOnFetchRejection");Fe(this,"noDeleteOnStaleGet");Fe(this,"allowStaleOnFetchAbort");Fe(this,"allowStaleOnFetchRejection");Fe(this,"ignoreFetchAbort");Te(this,rn);Te(this,us);Te(this,Kr);Te(this,dr);Te(this,mt);Te(this,Vn);Te(this,pi);Te(this,Nn);Te(this,fn);Te(this,cs);Te(this,dn);Te(this,ls);Te(this,fs);Te(this,mi);Te(this,ds);Te(this,Aa);Te(this,Wn);Te(this,Qu,()=>{});Te(this,Ao,()=>{});Te(this,np,()=>{});Te(this,yi,()=>!1);Te(this,Zu,e=>{});Te(this,of,(e,r,n)=>{});Te(this,ip,(e,r,n,i)=>{if(n||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});Fe(this,MT,"LRUCache");const{max:r=0,ttl:n,ttlResolution:i=1,ttlAutopurge:s,updateAgeOnGet:o,updateAgeOnHas:a,allowStale:u,dispose:c,disposeAfter:l,noDisposeOnSet:f,noUpdateTTL:d,maxSize:h=0,maxEntrySize:m=0,sizeCalculation:g,fetchMethod:x,memoMethod:_,noDeleteOnFetchRejection:S,noDeleteOnStaleGet:O,allowStaleOnFetchRejection:D,allowStaleOnFetchAbort:z,ignoreFetchAbort:G}=e;if(r!==0&&!fa(r))throw new TypeError("max option must be a nonnegative integer");const K=r?C5(r):Array;if(!K)throw new Error("invalid max value: "+r);if(le(this,ss,r),le(this,hi,h),this.maxEntrySize=m||C(this,hi),this.sizeCalculation=g,this.sizeCalculation){if(!C(this,hi)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(_!==void 0&&typeof _!="function")throw new TypeError("memoMethod must be a function if defined");if(le(this,sf,_),x!==void 0&&typeof x!="function")throw new TypeError("fetchMethod must be a function if specified");if(le(this,nf,x),le(this,Aa,!!x),le(this,Kr,new Map),le(this,dr,new Array(r).fill(void 0)),le(this,mt,new Array(r).fill(void 0)),le(this,Vn,new K(r)),le(this,pi,new K(r)),le(this,Nn,0),le(this,fn,0),le(this,cs,E1.create(r)),le(this,rn,0),le(this,us,0),typeof c=="function"&&le(this,os,c),typeof l=="function"?(le(this,as,l),le(this,dn,[])):(le(this,as,void 0),le(this,dn,void 0)),le(this,ds,!!C(this,os)),le(this,Wn,!!C(this,as)),this.noDisposeOnSet=!!f,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!S,this.allowStaleOnFetchRejection=!!D,this.allowStaleOnFetchAbort=!!z,this.ignoreFetchAbort=!!G,this.maxEntrySize!==0){if(C(this,hi)!==0&&!fa(C(this,hi)))throw new TypeError("maxSize must be a positive integer if specified");if(!fa(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");be(this,Ie,T5).call(this)}if(this.allowStale=!!u,this.noDeleteOnStaleGet=!!O,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!a,this.ttlResolution=fa(i)||i===0?i:1,this.ttlAutopurge=!!s,this.ttl=n||0,this.ttl){if(!fa(this.ttl))throw new TypeError("ttl must be a positive integer if specified");be(this,Ie,C1).call(this)}if(C(this,ss)===0&&this.ttl===0&&C(this,hi)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!C(this,ss)&&!C(this,hi)){const J="LRU_CACHE_UNBOUNDED";WX(J)&&(E5.add(J),O5("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",J,OE))}}static unsafeExposeInternals(e){return{starts:C(e,fs),ttls:C(e,mi),sizes:C(e,ls),keyMap:C(e,Kr),keyList:C(e,dr),valList:C(e,mt),next:C(e,Vn),prev:C(e,pi),get head(){return C(e,Nn)},get tail(){return C(e,fn)},free:C(e,cs),isBackgroundFetch:r=>{var n;return be(n=e,Ie,fr).call(n,r)},backgroundFetch:(r,n,i,s)=>{var o;return be(o=e,Ie,om).call(o,r,n,i,s)},moveToTail:r=>{var n;return be(n=e,Ie,Ad).call(n,r)},indexes:r=>{var n;return be(n=e,Ie,da).call(n,r)},rindexes:r=>{var n;return be(n=e,Ie,ha).call(n,r)},isStale:r=>{var n;return C(n=e,yi).call(n,r)}}}get max(){return C(this,ss)}get maxSize(){return C(this,hi)}get calculatedSize(){return C(this,us)}get size(){return C(this,rn)}get fetchMethod(){return C(this,nf)}get memoMethod(){return C(this,sf)}get dispose(){return C(this,os)}get disposeAfter(){return C(this,as)}getRemainingTTL(e){return C(this,Kr).has(e)?1/0:0}*entries(){for(const e of be(this,Ie,da).call(this))C(this,mt)[e]!==void 0&&C(this,dr)[e]!==void 0&&!be(this,Ie,fr).call(this,C(this,mt)[e])&&(yield[C(this,dr)[e],C(this,mt)[e]])}*rentries(){for(const e of be(this,Ie,ha).call(this))C(this,mt)[e]!==void 0&&C(this,dr)[e]!==void 0&&!be(this,Ie,fr).call(this,C(this,mt)[e])&&(yield[C(this,dr)[e],C(this,mt)[e]])}*keys(){for(const e of be(this,Ie,da).call(this)){const r=C(this,dr)[e];r!==void 0&&!be(this,Ie,fr).call(this,C(this,mt)[e])&&(yield r)}}*rkeys(){for(const e of be(this,Ie,ha).call(this)){const r=C(this,dr)[e];r!==void 0&&!be(this,Ie,fr).call(this,C(this,mt)[e])&&(yield r)}}*values(){for(const e of be(this,Ie,da).call(this))C(this,mt)[e]!==void 0&&!be(this,Ie,fr).call(this,C(this,mt)[e])&&(yield C(this,mt)[e])}*rvalues(){for(const e of be(this,Ie,ha).call(this))C(this,mt)[e]!==void 0&&!be(this,Ie,fr).call(this,C(this,mt)[e])&&(yield C(this,mt)[e])}[($T=Symbol.iterator,MT=Symbol.toStringTag,$T)](){return this.entries()}find(e,r={}){for(const n of be(this,Ie,da).call(this)){const i=C(this,mt)[n],s=be(this,Ie,fr).call(this,i)?i.__staleWhileFetching:i;if(s!==void 0&&e(s,C(this,dr)[n],this))return this.get(C(this,dr)[n],r)}}forEach(e,r=this){for(const n of be(this,Ie,da).call(this)){const i=C(this,mt)[n],s=be(this,Ie,fr).call(this,i)?i.__staleWhileFetching:i;s!==void 0&&e.call(r,s,C(this,dr)[n],this)}}rforEach(e,r=this){for(const n of be(this,Ie,ha).call(this)){const i=C(this,mt)[n],s=be(this,Ie,fr).call(this,i)?i.__staleWhileFetching:i;s!==void 0&&e.call(r,s,C(this,dr)[n],this)}}purgeStale(){let e=!1;for(const r of be(this,Ie,ha).call(this,{allowStale:!0}))C(this,yi).call(this,r)&&(be(this,Ie,pa).call(this,C(this,dr)[r],"expire"),e=!0);return e}info(e){const r=C(this,Kr).get(e);if(r===void 0)return;const n=C(this,mt)[r],i=be(this,Ie,fr).call(this,n)?n.__staleWhileFetching:n;if(i===void 0)return;const s={value:i};if(C(this,mi)&&C(this,fs)){const o=C(this,mi)[r],a=C(this,fs)[r];if(o&&a){const u=o-(Uc.now()-a);s.ttl=u,s.start=Date.now()}}return C(this,ls)&&(s.size=C(this,ls)[r]),s}dump(){const e=[];for(const r of be(this,Ie,da).call(this,{allowStale:!0})){const n=C(this,dr)[r],i=C(this,mt)[r],s=be(this,Ie,fr).call(this,i)?i.__staleWhileFetching:i;if(s===void 0||n===void 0)continue;const o={value:s};if(C(this,mi)&&C(this,fs)){o.ttl=C(this,mi)[r];const a=Uc.now()-C(this,fs)[r];o.start=Math.floor(Date.now()-a)}C(this,ls)&&(o.size=C(this,ls)[r]),e.unshift([n,o])}return e}load(e){this.clear();for(const[r,n]of e){if(n.start){const i=Date.now()-n.start;n.start=Uc.now()-i}this.set(r,n.value,n)}}set(e,r,n={}){var d,h,m,g,x;if(r===void 0)return this.delete(e),this;const{ttl:i=this.ttl,start:s,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:u}=n;let{noUpdateTTL:c=this.noUpdateTTL}=n;const l=C(this,ip).call(this,e,r,n.size||0,a);if(this.maxEntrySize&&l>this.maxEntrySize)return u&&(u.set="miss",u.maxEntrySizeExceeded=!0),be(this,Ie,pa).call(this,e,"set"),this;let f=C(this,rn)===0?void 0:C(this,Kr).get(e);if(f===void 0)f=C(this,rn)===0?C(this,fn):C(this,cs).length!==0?C(this,cs).pop():C(this,rn)===C(this,ss)?be(this,Ie,sm).call(this,!1):C(this,rn),C(this,dr)[f]=e,C(this,mt)[f]=r,C(this,Kr).set(e,f),C(this,Vn)[C(this,fn)]=f,C(this,pi)[f]=C(this,fn),le(this,fn,f),ou(this,rn)._++,C(this,of).call(this,f,l,u),u&&(u.set="add"),c=!1;else{be(this,Ie,Ad).call(this,f);const _=C(this,mt)[f];if(r!==_){if(C(this,Aa)&&be(this,Ie,fr).call(this,_)){_.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:S}=_;S!==void 0&&!o&&(C(this,ds)&&((d=C(this,os))==null||d.call(this,S,e,"set")),C(this,Wn)&&((h=C(this,dn))==null||h.push([S,e,"set"])))}else o||(C(this,ds)&&((m=C(this,os))==null||m.call(this,_,e,"set")),C(this,Wn)&&((g=C(this,dn))==null||g.push([_,e,"set"])));if(C(this,Zu).call(this,f),C(this,of).call(this,f,l,u),C(this,mt)[f]=r,u){u.set="replace";const S=_&&be(this,Ie,fr).call(this,_)?_.__staleWhileFetching:_;S!==void 0&&(u.oldValue=S)}}else u&&(u.set="update")}if(i!==0&&!C(this,mi)&&be(this,Ie,C1).call(this),C(this,mi)&&(c||C(this,np).call(this,f,i,s),u&&C(this,Ao).call(this,u,f)),!o&&C(this,Wn)&&C(this,dn)){const _=C(this,dn);let S;for(;S=_==null?void 0:_.shift();)(x=C(this,as))==null||x.call(this,...S)}return this}pop(){var e;try{for(;C(this,rn);){const r=C(this,mt)[C(this,Nn)];if(be(this,Ie,sm).call(this,!0),be(this,Ie,fr).call(this,r)){if(r.__staleWhileFetching)return r.__staleWhileFetching}else if(r!==void 0)return r}}finally{if(C(this,Wn)&&C(this,dn)){const r=C(this,dn);let n;for(;n=r==null?void 0:r.shift();)(e=C(this,as))==null||e.call(this,...n)}}}has(e,r={}){const{updateAgeOnHas:n=this.updateAgeOnHas,status:i}=r,s=C(this,Kr).get(e);if(s!==void 0){const o=C(this,mt)[s];if(be(this,Ie,fr).call(this,o)&&o.__staleWhileFetching===void 0)return!1;if(C(this,yi).call(this,s))i&&(i.has="stale",C(this,Ao).call(this,i,s));else return n&&C(this,Qu).call(this,s),i&&(i.has="hit",C(this,Ao).call(this,i,s)),!0}else i&&(i.has="miss");return!1}peek(e,r={}){const{allowStale:n=this.allowStale}=r,i=C(this,Kr).get(e);if(i===void 0||!n&&C(this,yi).call(this,i))return;const s=C(this,mt)[i];return be(this,Ie,fr).call(this,s)?s.__staleWhileFetching:s}async fetch(e,r={}){const{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:u=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:l=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:h=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:g,forceRefresh:x=!1,status:_,signal:S}=r;if(!C(this,Aa))return _&&(_.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:s,status:_});const O={allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:s,ttl:o,noDisposeOnSet:a,size:u,sizeCalculation:c,noUpdateTTL:l,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:h,status:_,signal:S};let D=C(this,Kr).get(e);if(D===void 0){_&&(_.fetch="miss");const z=be(this,Ie,om).call(this,e,D,O,g);return z.__returned=z}else{const z=C(this,mt)[D];if(be(this,Ie,fr).call(this,z)){const pe=n&&z.__staleWhileFetching!==void 0;return _&&(_.fetch="inflight",pe&&(_.returnedStale=!0)),pe?z.__staleWhileFetching:z.__returned=z}const G=C(this,yi).call(this,D);if(!x&&!G)return _&&(_.fetch="hit"),be(this,Ie,Ad).call(this,D),i&&C(this,Qu).call(this,D),_&&C(this,Ao).call(this,_,D),z;const K=be(this,Ie,om).call(this,e,D,O,g),fe=K.__staleWhileFetching!==void 0&&n;return _&&(_.fetch=G?"stale":"refresh",fe&&G&&(_.returnedStale=!0)),fe?K.__staleWhileFetching:K.__returned=K}}async forceFetch(e,r={}){const n=await this.fetch(e,r);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,r={}){const n=C(this,sf);if(!n)throw new Error("no memoMethod provided to constructor");const{context:i,forceRefresh:s,...o}=r,a=this.get(e,o);if(!s&&a!==void 0)return a;const u=n(e,a,{options:o,context:i});return this.set(e,u,o),u}get(e,r={}){const{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,status:o}=r,a=C(this,Kr).get(e);if(a!==void 0){const u=C(this,mt)[a],c=be(this,Ie,fr).call(this,u);return o&&C(this,Ao).call(this,o,a),C(this,yi).call(this,a)?(o&&(o.get="stale"),c?(o&&n&&u.__staleWhileFetching!==void 0&&(o.returnedStale=!0),n?u.__staleWhileFetching:void 0):(s||be(this,Ie,pa).call(this,e,"expire"),o&&n&&(o.returnedStale=!0),n?u:void 0)):(o&&(o.get="hit"),c?u.__staleWhileFetching:(be(this,Ie,Ad).call(this,a),i&&C(this,Qu).call(this,a),u))}else o&&(o.get="miss")}delete(e){return be(this,Ie,pa).call(this,e,"delete")}clear(){return be(this,Ie,I1).call(this,"delete")}};ss=new WeakMap,hi=new WeakMap,os=new WeakMap,as=new WeakMap,nf=new WeakMap,sf=new WeakMap,rn=new WeakMap,us=new WeakMap,Kr=new WeakMap,dr=new WeakMap,mt=new WeakMap,Vn=new WeakMap,pi=new WeakMap,Nn=new WeakMap,fn=new WeakMap,cs=new WeakMap,dn=new WeakMap,ls=new WeakMap,fs=new WeakMap,mi=new WeakMap,ds=new WeakMap,Aa=new WeakMap,Wn=new WeakMap,Ie=new WeakSet,C1=function(){const e=new im(C(this,ss)),r=new im(C(this,ss));le(this,mi,e),le(this,fs,r),le(this,np,(s,o,a=Uc.now())=>{if(r[s]=o!==0?a:0,e[s]=o,o!==0&&this.ttlAutopurge){const u=setTimeout(()=>{C(this,yi).call(this,s)&&be(this,Ie,pa).call(this,C(this,dr)[s],"expire")},o+1);u.unref&&u.unref()}}),le(this,Qu,s=>{r[s]=e[s]!==0?Uc.now():0}),le(this,Ao,(s,o)=>{if(e[o]){const a=e[o],u=r[o];if(!a||!u)return;s.ttl=a,s.start=u,s.now=n||i();const c=s.now-u;s.remainingTTL=a-c}});let n=0;const i=()=>{const s=Uc.now();if(this.ttlResolution>0){n=s;const o=setTimeout(()=>n=0,this.ttlResolution);o.unref&&o.unref()}return s};this.getRemainingTTL=s=>{const o=C(this,Kr).get(s);if(o===void 0)return 0;const a=e[o],u=r[o];if(!a||!u)return 1/0;const c=(n||i())-u;return a-c},le(this,yi,s=>{const o=r[s],a=e[s];return!!a&&!!o&&(n||i())-o>a})},Qu=new WeakMap,Ao=new WeakMap,np=new WeakMap,yi=new WeakMap,T5=function(){const e=new im(C(this,ss));le(this,us,0),le(this,ls,e),le(this,Zu,r=>{le(this,us,C(this,us)-e[r]),e[r]=0}),le(this,ip,(r,n,i,s)=>{if(be(this,Ie,fr).call(this,n))return 0;if(!fa(i))if(s){if(typeof s!="function")throw new TypeError("sizeCalculation must be a function");if(i=s(n,r),!fa(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i}),le(this,of,(r,n,i)=>{if(e[r]=n,C(this,hi)){const s=C(this,hi)-e[r];for(;C(this,us)>s;)be(this,Ie,sm).call(this,!0)}le(this,us,C(this,us)+e[r]),i&&(i.entrySize=n,i.totalCalculatedSize=C(this,us))})},Zu=new WeakMap,of=new WeakMap,ip=new WeakMap,da=function*({allowStale:e=this.allowStale}={}){if(C(this,rn))for(let r=C(this,fn);!(!be(this,Ie,T1).call(this,r)||((e||!C(this,yi).call(this,r))&&(yield r),r===C(this,Nn)));)r=C(this,pi)[r]},ha=function*({allowStale:e=this.allowStale}={}){if(C(this,rn))for(let r=C(this,Nn);!(!be(this,Ie,T1).call(this,r)||((e||!C(this,yi).call(this,r))&&(yield r),r===C(this,fn)));)r=C(this,Vn)[r]},T1=function(e){return e!==void 0&&C(this,Kr).get(C(this,dr)[e])===e},sm=function(e){var s,o;const r=C(this,Nn),n=C(this,dr)[r],i=C(this,mt)[r];return C(this,Aa)&&be(this,Ie,fr).call(this,i)?i.__abortController.abort(new Error("evicted")):(C(this,ds)||C(this,Wn))&&(C(this,ds)&&((s=C(this,os))==null||s.call(this,i,n,"evict")),C(this,Wn)&&((o=C(this,dn))==null||o.push([i,n,"evict"]))),C(this,Zu).call(this,r),e&&(C(this,dr)[r]=void 0,C(this,mt)[r]=void 0,C(this,cs).push(r)),C(this,rn)===1?(le(this,Nn,le(this,fn,0)),C(this,cs).length=0):le(this,Nn,C(this,Vn)[r]),C(this,Kr).delete(n),ou(this,rn)._--,r},om=function(e,r,n,i){const s=r===void 0?void 0:C(this,mt)[r];if(be(this,Ie,fr).call(this,s))return s;const o=new gy,{signal:a}=n;a==null||a.addEventListener("abort",()=>o.abort(a.reason),{signal:o.signal});const u={signal:o.signal,options:n,context:i},c=(g,x=!1)=>{const{aborted:_}=o.signal,S=n.ignoreFetchAbort&&g!==void 0;if(n.status&&(_&&!x?(n.status.fetchAborted=!0,n.status.fetchError=o.signal.reason,S&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),_&&!S&&!x)return f(o.signal.reason);const O=h;return C(this,mt)[r]===h&&(g===void 0?O.__staleWhileFetching?C(this,mt)[r]=O.__staleWhileFetching:be(this,Ie,pa).call(this,e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(e,g,u.options))),g},l=g=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=g),f(g)),f=g=>{const{aborted:x}=o.signal,_=x&&n.allowStaleOnFetchAbort,S=_||n.allowStaleOnFetchRejection,O=S||n.noDeleteOnFetchRejection,D=h;if(C(this,mt)[r]===h&&(!O||D.__staleWhileFetching===void 0?be(this,Ie,pa).call(this,e,"fetch"):_||(C(this,mt)[r]=D.__staleWhileFetching)),S)return n.status&&D.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),D.__staleWhileFetching;if(D.__returned===D)throw g},d=(g,x)=>{var S;const _=(S=C(this,nf))==null?void 0:S.call(this,e,s,u);_&&_ instanceof Promise&&_.then(O=>g(O===void 0?void 0:O),x),o.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(g(void 0),n.allowStaleOnFetchAbort&&(g=O=>c(O,!0)))})};n.status&&(n.status.fetchDispatched=!0);const h=new Promise(d).then(c,l),m=Object.assign(h,{__abortController:o,__staleWhileFetching:s,__returned:void 0});return r===void 0?(this.set(e,m,{...u.options,status:void 0}),r=C(this,Kr).get(e)):C(this,mt)[r]=m,m},fr=function(e){if(!C(this,Aa))return!1;const r=e;return!!r&&r instanceof Promise&&r.hasOwnProperty("__staleWhileFetching")&&r.__abortController instanceof gy},P1=function(e,r){C(this,pi)[r]=e,C(this,Vn)[e]=r},Ad=function(e){e!==C(this,fn)&&(e===C(this,Nn)?le(this,Nn,C(this,Vn)[e]):be(this,Ie,P1).call(this,C(this,pi)[e],C(this,Vn)[e]),be(this,Ie,P1).call(this,C(this,fn),e),le(this,fn,e))},pa=function(e,r){var i,s,o,a;let n=!1;if(C(this,rn)!==0){const u=C(this,Kr).get(e);if(u!==void 0)if(n=!0,C(this,rn)===1)be(this,Ie,I1).call(this,r);else{C(this,Zu).call(this,u);const c=C(this,mt)[u];if(be(this,Ie,fr).call(this,c)?c.__abortController.abort(new Error("deleted")):(C(this,ds)||C(this,Wn))&&(C(this,ds)&&((i=C(this,os))==null||i.call(this,c,e,r)),C(this,Wn)&&((s=C(this,dn))==null||s.push([c,e,r]))),C(this,Kr).delete(e),C(this,dr)[u]=void 0,C(this,mt)[u]=void 0,u===C(this,fn))le(this,fn,C(this,pi)[u]);else if(u===C(this,Nn))le(this,Nn,C(this,Vn)[u]);else{const l=C(this,pi)[u];C(this,Vn)[l]=C(this,Vn)[u];const f=C(this,Vn)[u];C(this,pi)[f]=C(this,pi)[u]}ou(this,rn)._--,C(this,cs).push(u)}}if(C(this,Wn)&&((o=C(this,dn))!=null&&o.length)){const u=C(this,dn);let c;for(;c=u==null?void 0:u.shift();)(a=C(this,as))==null||a.call(this,...c)}return n},I1=function(e){var r,n,i;for(const s of be(this,Ie,ha).call(this,{allowStale:!0})){const o=C(this,mt)[s];if(be(this,Ie,fr).call(this,o))o.__abortController.abort(new Error("deleted"));else{const a=C(this,dr)[s];C(this,ds)&&((r=C(this,os))==null||r.call(this,o,a,e)),C(this,Wn)&&((n=C(this,dn))==null||n.push([o,a,e]))}}if(C(this,Kr).clear(),C(this,mt).fill(void 0),C(this,dr).fill(void 0),C(this,mi)&&C(this,fs)&&(C(this,mi).fill(0),C(this,fs).fill(0)),C(this,ls)&&C(this,ls).fill(0),le(this,Nn,0),le(this,fn,0),C(this,cs).length=0,le(this,us,0),le(this,rn,0),C(this,Wn)&&C(this,dn)){const s=C(this,dn);let o;for(;o=s==null?void 0:s.shift();)(i=C(this,as))==null||i.call(this,...o)}};let O1=OE;var HX=function(e){return GX(e)&&!qX(e)};function GX(t){return!!t&&typeof t=="object"}function qX(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||JX(t)}var KX=typeof Symbol=="function"&&Symbol.for,XX=KX?Symbol.for("react.element"):60103;function JX(t){return t.$$typeof===XX}function YX(t){return Array.isArray(t)?[]:{}}function Uh(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Fh(YX(t),t,e):t}function QX(t,e,r){return t.concat(e).map(function(n){return Uh(n,r)})}function ZX(t,e){if(!e.customMerge)return Fh;var r=e.customMerge(t);return typeof r=="function"?r:Fh}function eJ(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function e6(t){return Object.keys(t).concat(eJ(t))}function P5(t,e){try{return e in t}catch{return!1}}function tJ(t,e){return P5(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function rJ(t,e,r){var n={};return r.isMergeableObject(t)&&e6(t).forEach(function(i){n[i]=Uh(t[i],r)}),e6(e).forEach(function(i){tJ(t,i)||(P5(t,i)&&r.isMergeableObject(e[i])?n[i]=ZX(i,r)(t[i],e[i],r):n[i]=Uh(e[i],r))}),n}function Fh(t,e,r){r=r||{},r.arrayMerge=r.arrayMerge||QX,r.isMergeableObject=r.isMergeableObject||HX,r.cloneUnlessOtherwiseSpecified=Uh;var n=Array.isArray(e),i=Array.isArray(t),s=n===i;return s?n?r.arrayMerge(t,e,r):rJ(t,e,r):Uh(e,r)}Fh.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(n,i){return Fh(n,i,r)},{})};var t6=new Set,r6=[],Kv=[],nJ={appendCss:t=>{Kv.push(t)},registerClassName:t=>{t6.add(t)},registerComposition:t=>{r6.push(t)},markCompositionUsed:()=>{},onEndFileScope:t=>{var e=VX({localClassNames:Array.from(t6),composedClassLists:r6,cssObjs:Kv}).join(` +`);BK({fileScope:t,css:e}),Kv=[]},getIdentOption:()=>"short"};XK(nJ);var n6=(t,e)=>{for(var r=e-1;r>=0;){if(t[r]==="/")return r;r--}return-1},iJ=t=>{var e,r=t.lastIndexOf(".css");if(r===-1)return"";var n=n6(t,r);if(e=t.slice(n+1,r),n===-1)return e;var i=n6(t,n-1),s=t.slice(i+1,n),o=e!=="index"?e:s;return o},sJ=()=>{var t=new O1({max:500});return e=>{var r=t.get(e);if(r)return r;var n=iJ(e);return t.set(e,n),n}};sJ();function oJ(t,e){return Jx(t,(r,n)=>{var i=typeof e=="function"?e(r,n):r,s=typeof i=="string"?i.replace(/^\-\-/,""):null;if(typeof s!="string"||s!==Qx(s,{isIdentifier:!0}))throw new Error('Invalid variable name for "'.concat(n.join("."),'": ').concat(s));return"var(--".concat(s,")")})}var aJ=Object.create,I5=Object.defineProperty,uJ=Object.getOwnPropertyDescriptor,eS=Object.getOwnPropertyNames,cJ=Object.getPrototypeOf,lJ=Object.prototype.hasOwnProperty,k5=t=>{throw TypeError(t)},fJ=(t,e)=>function(){return t&&(e=(0,t[eS(t)[0]])(t=0)),e},dJ=(t,e)=>function(){return e||(0,t[eS(t)[0]])((e={exports:{}}).exports,e),e.exports},hJ=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of eS(e))!lJ.call(t,i)&&i!==r&&I5(t,i,{get:()=>e[i],enumerable:!(n=uJ(e,i))||n.enumerable});return t},pJ=(t,e,r)=>(r=t!=null?aJ(cJ(t)):{},hJ(!t||!t.__esModule?I5(r,"default",{value:t,enumerable:!0}):r,t)),mJ=(t,e,r)=>e.has(t)||k5("Cannot "+r),lu=(t,e,r)=>(mJ(t,e,"read from private field"),r?r.call(t):e.get(t)),fu=(t,e,r)=>e.has(t)?k5("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),yJ=fJ({"vanilla-extract-css-ns:src/components/styling/StyleMarker.css.ts.vanilla.css?source=OndoZXJlKCopIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udEZhbWlseSk7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwogIGZvbnQtc3R5bGU6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udFN0eWxlKTsKICBmb250LXdlaWdodDogdmFyKC0tZGFwcC1raXQtZm9udFdlaWdodHMtbm9ybWFsKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1saW5lSGVpZ2h0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1sZXR0ZXJTcGFjaW5nKTsKfQo6d2hlcmUoYnV0dG9uKSB7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cjp3aGVyZShhKSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiBpbmhlcml0OwogIG91dGxpbmU6IG5vbmU7Cn0KOndoZXJlKG9sLCB1bCkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KOndoZXJlKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwp9"(){}}),gJ=dJ({"src/components/styling/StyleMarker.css.ts"(){yJ()}}),$f={all:{baseScope:"wallet"},connectWallet:na("connect-wallet"),autoconnectWallet:na("autoconnect-wallet"),disconnectWallet:na("disconnect-wallet"),signPersonalMessage:na("sign-personal-message"),signTransaction:na("sign-transaction"),signAndExecuteTransaction:na("sign-and-execute-transaction"),switchAccount:na("switch-account"),reportTransactionEffects:na("report-transaction-effects")};function na(t){return function(r=[]){return[{...$f.all,baseEntity:t},...r]}}var A5=I.createContext(null);function Dn(t){const e=I.useContext(A5);if(!e)throw new Error("Could not find WalletContext. Ensure that you have set up the WalletProvider.");return kF(e,t)}function tS({mutationKey:t,...e}={}){const r=Dn(i=>i.setWalletConnected),n=Dn(i=>i.setConnectionStatus);return lp({mutationKey:$f.connectWallet(t),mutationFn:async({wallet:i,accountAddress:s,...o})=>{try{n("connecting");const a=await i.features["standard:connect"].connect(o),u=a.accounts.filter(l=>l.chains.some(f=>f.split(":")[0]==="sui")),c=vJ(u,s);return r(i,u,c,a.supportedIntents),{accounts:u}}catch(a){throw n("disconnected"),a}},...e})}function vJ(t,e){return t.length===0?null:e?t.find(n=>n.address===e)??t[0]:t[0]}function am(t,e){const i=sg().get().filter(s=>YV(s)&&(!e||e(s)));return[...t.map(s=>i.find(o=>o.name===s)).filter(Boolean),...i.filter(s=>!t.includes(s.name))]}function rc(t){return(t==null?void 0:t.id)??(t==null?void 0:t.name)}function bJ(t){return V.jsx("svg",{width:24,height:24,fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:V.jsx("path",{d:"M7.57 12.262c0 .341.13.629.403.895l5.175 5.059c.204.205.45.307.751.307.609 0 1.101-.485 1.101-1.087 0-.293-.123-.574-.349-.8L10.14 12.27l4.511-4.375A1.13 1.13 0 0 0 15 7.087C15 6.485 14.508 6 13.9 6c-.295 0-.54.103-.752.308l-5.175 5.058c-.28.28-.404.56-.404.896Z",fill:"currentColor"})})}function wJ(t){return V.jsx("svg",{width:10,height:10,fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:V.jsx("path",{d:"M9.708.292a.999.999 0 0 0-1.413 0l-3.289 3.29L1.717.291A.999.999 0 0 0 .305 1.705l3.289 3.289-3.29 3.289a.999.999 0 1 0 1.413 1.412l3.29-3.289 3.288 3.29a.999.999 0 0 0 1.413-1.413l-3.29-3.29 3.29-3.288a.999.999 0 0 0 0-1.413Z",fill:"currentColor"})})}var j5="data-dapp-kit",_J=`[${j5}]`,xJ={[j5]:""};pJ(gJ());var Lh=I.forwardRef(({children:t,...e},r)=>V.jsx(gn,{ref:r,...e,...xJ,children:t}));Lh.displayName="StyleMarker";var SJ=Ox({defaultClassName:"Heading__1aa835k0",variantClassNames:{size:{sm:"Heading_headingVariants_size_sm__1aa835k1",md:"Heading_headingVariants_size_md__1aa835k2",lg:"Heading_headingVariants_size_lg__1aa835k3",xl:"Heading_headingVariants_size_xl__1aa835k4"},weight:{normal:"Heading_headingVariants_weight_normal__1aa835k5",bold:"Heading_headingVariants_weight_bold__1aa835k6"},truncate:{true:"Heading_headingVariants_truncate_true__1aa835k7"}},defaultVariants:{size:"lg",weight:"bold"},compoundVariants:[]}),Oc=I.forwardRef(({children:t,className:e,asChild:r=!1,as:n="h1",size:i,weight:s,truncate:o,...a},u)=>V.jsx(gn,{...a,ref:u,className:Wo(SJ({size:i,weight:s,truncate:o}),e),children:r?t:V.jsx(n,{children:t})}));Oc.displayName="Heading";var EJ="IconButton_container__s6n7bq0",k1=I.forwardRef(({className:t,asChild:e=!1,...r},n)=>{const i=e?gn:"button";return V.jsx(i,{...r,className:Wo(EJ,t),ref:n})});k1.displayName="Button";var OJ="ConnectModal_backButtonContainer__gz8z96",CJ="ConnectModal_closeButtonContainer__gz8z97",TJ="ConnectModal_content__gz8z92",PJ="ConnectModal_overlay__gz8z90",IJ="ConnectModal_selectedViewContainer__gz8z95",kJ="ConnectModal_title__gz8z91",AJ="ConnectModal_viewContainer__gz8z94",jJ="ConnectModal_walletListContainer__gz8z99",MJ="ConnectModal_walletListContainerWithViewSelected__gz8z9a",$J="ConnectModal_walletListContent__gz8z98",NJ="ConnectModal_whatIsAWalletButton__gz8z93",RJ=Ox({defaultClassName:"Button_buttonVariants__x1s81q0",variantClassNames:{variant:{primary:"Button_buttonVariants_variant_primary__x1s81q1",outline:"Button_buttonVariants_variant_outline__x1s81q2"},size:{md:"Button_buttonVariants_size_md__x1s81q3",lg:"Button_buttonVariants_size_lg__x1s81q4"}},defaultVariants:{variant:"primary",size:"md"},compoundVariants:[]}),Sp=I.forwardRef(({className:t,variant:e,size:r,asChild:n=!1,...i},s)=>{const o=n?gn:"button";return V.jsx(o,{...i,className:Wo(RJ({variant:e,size:r}),t),ref:s})});Sp.displayName="Button";var DJ=Ox({defaultClassName:"Text__2bv1ur0",variantClassNames:{size:{sm:"Text_textVariants_size_sm__2bv1ur1"},weight:{normal:"Text_textVariants_weight_normal__2bv1ur2",medium:"Text_textVariants_weight_medium__2bv1ur3",bold:"Text_textVariants_weight_bold__2bv1ur4"},color:{muted:"Text_textVariants_color_muted__2bv1ur5",danger:"Text_textVariants_color_danger__2bv1ur6"},mono:{true:"Text_textVariants_mono_true__2bv1ur7"}},defaultVariants:{size:"sm",weight:"normal"},compoundVariants:[]}),bf=I.forwardRef(({children:t,className:e,asChild:r=!1,as:n="div",size:i,weight:s,color:o,mono:a,...u},c)=>V.jsx(gn,{...u,ref:c,className:Wo(DJ({size:i,weight:s,color:o,mono:a}),e),children:r?t:V.jsx(n,{children:t})}));bf.displayName="Text";var BJ="ConnectionStatus_connectionStatus__nckm2d3",UJ="ConnectionStatus_container__nckm2d0",FJ="ConnectionStatus_retryButtonContainer__nckm2d4",LJ="ConnectionStatus_title__nckm2d2",zJ="ConnectionStatus_walletIcon__nckm2d1";function VJ({selectedWallet:t,hadConnectionError:e,onRetryConnection:r}){return V.jsxs("div",{className:UJ,children:[t.icon&&V.jsx("img",{className:zJ,src:t.icon,alt:`${t.name} logo`}),V.jsx("div",{className:LJ,children:V.jsxs(Oc,{as:"h2",size:"xl",children:["Opening ",t.name]})}),V.jsx("div",{className:BJ,children:e?V.jsx(bf,{color:"danger",children:"Connection failed"}):V.jsx(bf,{color:"muted",children:"Confirm connection in the wallet..."})}),e?V.jsx("div",{className:FJ,children:V.jsx(Sp,{type:"button",variant:"outline",onClick:()=>r(t),children:"Retry Connection"})}):null]})}var WJ="InfoSection_container__1wtioi70";function Zd({title:t,children:e}){return V.jsxs("section",{className:WJ,children:[V.jsx(Oc,{as:"h3",size:"sm",weight:"normal",children:t}),V.jsx(bf,{weight:"medium",color:"muted",children:e})]})}var HJ="GettingStarted_container__1fp07e10",GJ="GettingStarted_content__1fp07e11",qJ="GettingStarted_installButtonContainer__1fp07e12";function KJ(){return V.jsxs("div",{className:HJ,children:[V.jsx(Oc,{as:"h2",children:"Get Started with Sui"}),V.jsxs("div",{className:GJ,children:[V.jsx(Zd,{title:"Install the Sui Wallet Extension",children:"We recommend pinning Sui Wallet to your taskbar for quicker access."}),V.jsx(Zd,{title:"Create or Import a Wallet",children:"Be sure to back up your wallet using a secure method. Never share your secret phrase with anyone."}),V.jsx(Zd,{title:"Refresh Your Browser",children:"Once you set up your wallet, refresh this window browser to load up the extension."}),V.jsx("div",{className:qJ,children:V.jsx(Sp,{variant:"outline",asChild:!0,children:V.jsx("a",{href:"https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil",target:"_blank",rel:"noreferrer",children:"Install Wallet Extension"})})})]})]})}var XJ="WhatIsAWallet_container__1ktpkq90",JJ="WhatIsAWallet_content__1ktpkq91";function i6(){return V.jsxs("div",{className:XJ,children:[V.jsx(Oc,{as:"h2",children:"What is a Wallet"}),V.jsxs("div",{className:JJ,children:[V.jsx(Zd,{title:"Easy Login",children:"No need to create new accounts and passwords for every website. Just connect your wallet and get going."}),V.jsx(Zd,{title:"Store your Digital Assets",children:"Send, receive, store, and display your digital assets like NFTs & coins."})]})]})}function M5(){return Dn(t=>t.wallets)}function YJ(t){return V.jsxs("svg",{width:28,height:28,fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[V.jsx("rect",{width:28,height:28,rx:6,fill:"#6FBCF0"}),V.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.942 20.527A6.875 6.875 0 0 0 13.957 24c2.51 0 4.759-1.298 6.015-3.473a6.875 6.875 0 0 0 0-6.945l-5.29-9.164a.837.837 0 0 0-1.45 0l-5.29 9.164a6.875 6.875 0 0 0 0 6.945Zm4.524-11.75 1.128-1.953a.418.418 0 0 1 .725 0l4.34 7.516a5.365 5.365 0 0 1 .449 4.442 4.675 4.675 0 0 0-.223-.73c-.599-1.512-1.954-2.68-4.029-3.47-1.426-.54-2.336-1.336-2.706-2.364-.476-1.326.021-2.77.316-3.44Zm-1.923 3.332L9.255 14.34a5.373 5.373 0 0 0 0 5.43 5.373 5.373 0 0 0 4.702 2.714 5.38 5.38 0 0 0 3.472-1.247c.125-.314.51-1.462.034-2.646-.44-1.093-1.5-1.965-3.15-2.594-1.864-.707-3.076-1.811-3.6-3.28a4.601 4.601 0 0 1-.17-.608Z",fill:"#fff"})]})}var QJ="WalletList_container__1v2s6cz0",ZJ="WalletListItem_container__1dqqtqs0",eY="WalletListItem_selectedWalletItem__1dqqtqs2",tY="WalletListItem_walletIcon__1dqqtqs3",rY="WalletListItem_walletItem__1dqqtqs1";function s6({name:t,icon:e,onClick:r,isSelected:n=!1}){return V.jsx("li",{className:ZJ,children:V.jsxs("button",{className:Wo(rY,{[eY]:n}),type:"button",onClick:r,children:[e&&typeof e=="string"?V.jsx("img",{className:tY,src:e,alt:`${t} logo`}):e,V.jsx(Oc,{size:"md",truncate:!0,asChild:!0,children:V.jsx("div",{children:t})})]})})}function nY({selectedWalletName:t,onPlaceholderClick:e,onSelect:r}){const n=M5();return V.jsx("ul",{className:QJ,children:n.length>0?n.map(i=>V.jsx(s6,{name:i.name,icon:i.icon,isSelected:rc(i)===t,onClick:()=>r(i)},rc(i))):V.jsx(s6,{name:"Sui Wallet",icon:V.jsx(YJ,{}),onClick:e,isSelected:!0})})}function iY({trigger:t,open:e,defaultOpen:r,onOpenChange:n}){const[i,s]=I.useState(e??r),[o,a]=I.useState(),[u,c]=I.useState(),{mutate:l,isError:f}=tS(),d=()=>{c(void 0),a(void 0)},h=x=>{x||d(),s(x),n==null||n(x)},m=x=>{a("connection-status"),l({wallet:x},{onSuccess:()=>h(!1)})};let g;switch(o){case"what-is-a-wallet":g=V.jsx(i6,{});break;case"getting-started":g=V.jsx(KJ,{});break;case"connection-status":g=V.jsx(VJ,{selectedWallet:u,hadConnectionError:f,onRetryConnection:m});break;default:g=V.jsx(i6,{})}return V.jsxs(wU,{open:e??i,onOpenChange:h,children:[V.jsx(_U,{asChild:!0,children:t}),V.jsx(xU,{children:V.jsx(Lh,{children:V.jsx(SU,{className:PJ,children:V.jsxs(EU,{className:TJ,"aria-describedby":void 0,children:[V.jsxs("div",{className:Wo(jJ,{[MJ]:!!o}),children:[V.jsxs("div",{className:$J,children:[V.jsx(OU,{className:kJ,asChild:!0,children:V.jsx(Oc,{as:"h2",children:"Connect a Wallet"})}),V.jsx(nY,{selectedWalletName:rc(u),onPlaceholderClick:()=>a("getting-started"),onSelect:x=>{rc(u)!==rc(x)&&(c(x),m(x))}})]}),V.jsx("button",{className:NJ,onClick:()=>a("what-is-a-wallet"),type:"button",children:"What is a Wallet?"})]}),V.jsxs("div",{className:Wo(AJ,{[IJ]:!!o}),children:[V.jsx("div",{className:OJ,children:V.jsx(k1,{type:"button","aria-label":"Back",onClick:()=>d(),children:V.jsx(bJ,{})})}),g]}),V.jsx(CU,{className:CJ,asChild:!0,children:V.jsx(k1,{type:"button","aria-label":"Close",children:V.jsx(wJ,{})})})]})})})})]})}function Nf(){return Dn(t=>t.currentAccount)}var $5=I.createContext(null),sY={localnet:{url:W0("localnet")}},oY=function(e,r){return eq(r)?r:new VM(r)};function aY(t){const{onNetworkChange:e,network:r,children:n}=t,i=t.networks??sY,s=t.createClient??oY,[o,a]=I.useState(t.network??t.defaultNetwork??Object.keys(i)[0]),u=t.network??o,c=I.useMemo(()=>s(u,i[u]),[s,u,i]),l=I.useMemo(()=>({client:c,networks:i,network:u,config:i[u]instanceof VM?null:i[u],selectNetwork:f=>{u!==f&&(!r&&f!==o&&a(f),e==null||e(f))}}),[c,i,o,u,r,e]);return V.jsx($5.Provider,{value:l,children:n})}function rS(){const t=I.useContext($5);if(!t)throw new Error("Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider");return t}function N5(){return rS().client}function R5(...t){const[e,r,{queryKey:n=[],...i}={}]=t,s=rS();return BI({...i,queryKey:[s.network,e,r,...n],queryFn:async()=>await s.client[e](r)})}function D5(t,e){return R5("resolveNameServiceNames",{address:t,limit:1},{...e,refetchOnWindowFocus:!1,retry:!1,select:r=>r.data.length>0?r.data[0]:null,enabled:!!t&&(e==null?void 0:e.enabled)!==!1})}function uY(){return Dn(t=>t.accounts)}var Sg=class extends Error{},B5=class extends Error{},cY=class extends Error{},lY=class extends Error{};function Rf(){const t=Dn(n=>n.currentWallet),e=Dn(n=>n.connectionStatus),r=Dn(n=>n.supportedIntents);switch(e){case"connecting":return{connectionStatus:e,currentWallet:null,isDisconnected:!1,isConnecting:!0,isConnected:!1,supportedIntents:[]};case"disconnected":return{connectionStatus:e,currentWallet:null,isDisconnected:!0,isConnecting:!1,isConnected:!1,supportedIntents:[]};case"connected":return{connectionStatus:e,currentWallet:t,isDisconnected:!1,isConnecting:!1,isConnected:!0,supportedIntents:r}}}function fY({mutationKey:t,...e}={}){const{currentWallet:r}=Rf(),n=Dn(i=>i.setWalletDisconnected);return lp({mutationKey:$f.disconnectWallet(t),mutationFn:async()=>{var i;if(!r)throw new Sg("No wallet is connected.");try{await((i=r.features["standard:disconnect"])==null?void 0:i.disconnect())}catch(s){console.error("Failed to disconnect the application from the current wallet.",s)}n()},...e})}function dY({mutationKey:t,...e}={}){const{currentWallet:r}=Rf(),n=Dn(i=>i.setAccountSwitched);return lp({mutationKey:$f.switchAccount(t),mutationFn:async({account:i})=>{if(!r)throw new Sg("No wallet is connected.");const s=r.accounts.find(o=>o.address===i.address);if(!s)throw new lY(`No account with address ${i.address} is connected to ${r.name}.`);n(s)},...e})}var hY="AccountDropdownMenu_connectedAccount__div2ql0",pY="AccountDropdownMenu_menuContainer__div2ql1",mY="AccountDropdownMenu_menuContent__div2ql2",U5="AccountDropdownMenu_menuItem__div2ql3",yY="AccountDropdownMenu_separator__div2ql5",gY="AccountDropdownMenu_switchAccountMenuItem__div2ql4";function vY(t){return V.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",...t,children:V.jsx("path",{fill:"currentColor",d:"m11.726 5.048-4.73 5.156-1.722-1.879a.72.72 0 0 0-.529-.23.722.722 0 0 0-.525.24.858.858 0 0 0-.22.573.86.86 0 0 0 .211.576l2.255 2.458c.14.153.332.24.53.24.2 0 .391-.087.532-.24l5.261-5.735A.86.86 0 0 0 13 5.63a.858.858 0 0 0-.22-.572.722.722 0 0 0-.525-.24.72.72 0 0 0-.529.23Z"})})}function bY(t){return V.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",...t,children:V.jsx("path",{stroke:"#A0B6C3",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m4 6 4 4 4-4"})})}function wY({currentAccount:t}){const{mutate:e}=fY(),{data:r}=D5(t.label?null:t.address),n=uY();return V.jsxs(BG,{modal:!1,children:[V.jsx(Lh,{children:V.jsx(UG,{asChild:!0,children:V.jsxs(Sp,{size:"lg",className:hY,children:[V.jsx(bf,{mono:!0,weight:"bold",children:t.label??r??S4(t.address)}),V.jsx(bY,{})]})})}),V.jsx(FG,{children:V.jsx(Lh,{className:pY,children:V.jsxs(LG,{className:mY,children:[n.map(i=>V.jsx(_Y,{account:i,active:t.address===i.address},i.address)),V.jsx(zG,{className:yY}),V.jsx(MM,{className:Wo(U5),onSelect:()=>e(),children:"Disconnect"})]})})})]})}function _Y({account:t,active:e}){const{mutate:r}=dY(),{data:n}=D5(t.label?null:t.address);return V.jsxs(MM,{className:Wo(U5,gY),onSelect:()=>r({account:t}),children:[V.jsx(bf,{mono:!0,children:t.label??n??S4(t.address)}),e?V.jsx(vY,{}):null]})}function xY({connectText:t="Connect Wallet",...e}){const r=Nf();return r?V.jsx(wY,{currentAccount:r}):V.jsx(iY,{trigger:V.jsx(Lh,{children:V.jsx(Sp,{...e,children:t})})})}function F5(){const t=new Map;return{getItem(e){return t.get(e)},setItem(e,r){t.set(e,r)},removeItem(e){t.delete(e)}}}var SY="Sui Wallet",EY=typeof window<"u"&&window.localStorage?localStorage:F5(),OY="sui-dapp-kit:wallet-connection-info",CY=["sui:signTransaction","sui:signTransactionBlock"],L5=t=>CY.some(e=>t.features[e]),z5=[SY,p5];function V5(){const{mutateAsync:t}=tS(),e=Dn(l=>l.autoConnectEnabled),r=Dn(l=>l.lastConnectedWalletName),n=Dn(l=>l.lastConnectedAccountAddress),i=M5(),{isConnected:s}=Rf(),[o,a]=I.useState(!1);I.useLayoutEffect(()=>{a(!0)},[]);const{data:u,isError:c}=BI({queryKey:["@mysten/dapp-kit","autoconnect",{isConnected:s,autoConnectEnabled:e,lastConnectedWalletName:r,lastConnectedAccountAddress:n,walletCount:i.length}],queryFn:async()=>{if(!e)return"disabled";if(!r||!n||s)return"attempted";const l=i.find(f=>rc(f)===r);return l&&await t({wallet:l,accountAddress:n,silent:!0}),"attempted"},enabled:e,persister:void 0,gcTime:0,staleTime:0,networkMode:"always",retry:!1,retryOnMount:!1,refetchInterval:!1,refetchIntervalInBackground:!1,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1});return e?o?s||!r||c?"attempted":u??"idle":"idle":"disabled"}function TY(t){const e=V5(),[r,n]=I.useState(null),[i,s]=I.useState(null),{mutate:o}=tS();I.useEffect(()=>{!r||!i||e!=="attempted"||(o({wallet:i,silent:!0}),n(null))},[r,e,o,i]),I.useLayoutEffect(()=>{if(!(t!=null&&t.name))return;const{wallet:a,unregister:u,addressFromRedirect:c}=kK(t.name,{origin:t.origin,network:t.network});return c&&(s(a),n(c)),u},[t==null?void 0:t.name,t==null?void 0:t.origin,t==null?void 0:t.network])}var o6="Unsafe Burner Wallet";function PY(t){const e=N5();I.useEffect(()=>t?IY(e):void 0,[t,e])}function IY(t){var e,r,n,i,s,o,a;const u=sg();if(u.get().find(h=>h.name===o6)){console.warn("registerUnsafeBurnerWallet: Unsafe Burner Wallet already registered, skipping duplicate registration.");return}console.warn("Your application is currently using the unsafe burner wallet. Make sure that this wallet is disabled in production.");const l=new vl,f=new og({address:l.getPublicKey().toSuiAddress(),publicKey:l.getPublicKey().toSuiBytes(),chains:["sui:unknown"],features:["sui:signAndExecuteTransactionBlock","sui:signTransactionBlock","sui:signTransaction","sui:signAndExecuteTransaction"]});class d{constructor(){fu(this,e,()=>()=>{}),fu(this,r,async()=>({accounts:this.accounts})),fu(this,n,async m=>{const{bytes:g,signature:x}=await l.signPersonalMessage(m.message);return{bytes:g,signature:x}}),fu(this,i,async m=>{const{bytes:g,signature:x}=await m.transactionBlock.sign({client:t,signer:l});return{transactionBlockBytes:g,signature:x}}),fu(this,s,async m=>{var _;const{bytes:g,signature:x}=await kh.from(await m.transaction.toJSON()).sign({client:t,signer:l});return(_=m.signal)==null||_.throwIfAborted(),{bytes:g,signature:x}}),fu(this,o,async m=>{const{bytes:g,signature:x}=await m.transactionBlock.sign({client:t,signer:l});return t.executeTransactionBlock({signature:x,transactionBlock:g,options:m.options})}),fu(this,a,async m=>{var O;const{bytes:g,signature:x}=await kh.from(await m.transaction.toJSON()).sign({client:t,signer:l});(O=m.signal)==null||O.throwIfAborted();const{rawEffects:_,digest:S}=await t.executeTransactionBlock({signature:x,transactionBlock:g,options:{showRawEffects:!0}});return{bytes:g,signature:x,digest:S,effects:zt(new Uint8Array(_))}})}get version(){return"1.0.0"}get name(){return o6}get icon(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAJrElEQVR42tWbe2xT1x3H7UxAyD3XrdrSbGXlUbKWsq5rWdVuVOMRSEqSOmnVRZMmJqZNYv1nf3R/jWmVmVrtRRM/YwPd1nVTNcrE3pQCoikrIRAC4VVNY0hlD9ZOo1uCfe3ra9979v0dcy3s5Pper76Oh/STE+495/4+5/c85zqe2f7HAx5vKsS+monJj/CdHi/f4/HWW4f6AwdblmXjTM0NyS+movKtw9v+j6C5gKhyTMTTpA2x15Qwy+Pz75motOGdgKep8WF5ATgVZIt5NeO2wMqD0hfVGNPh3oYaYflsjG0l63PeyLCDnqbsLpZIhaRNFI+Ox+Le5KB0RybK8gDmJOkI07U4i/FhT1NDQl8Me5rUIfaDfELOJ0NsFa/SJQHm1WLsHcDqRWiy9BCL8s0N5t6UWWFVvxplejYm60hC91cNjPtzCTZsAptCVoeLP8PDDQJNCSodap6H+LtE8ZcdkvVkkD38vwDn4/Jvy4EhBhZSvRaUHiTXn31gJJxkUPoClBKKFizM+inhVA2cYIdM4HJouPvoe9s9H+KzDhyGK6KkmIqitBhww2C11rjQL2L4kgUwFxk8yPyzauUA3Pk/353XnA6zKbKCaQ2UlMvJF6W5uF5F8yHfZWZpC9HRmBziaEpm1bpY9XvhxuWJRldC7Mt03WlZwpjnkZUNa2DMG2EaPj9MGd2l2mofd0hQ7ZSopsXckHxVCUp32fXGdD0ZktrgFUmMqwhcWFjp87RArsD+9bn585IRaSHAKgBL3SZwOTRc8BKg7yYoskp5OJDiiPmF2Sj7ox0siYJ7lJA04EqvzZ9B1xSVt6PlW0IxZgUMJdZYAJuWngLQt9IRuZXmoTEkmci8ZtTXTViUKyasA9FRun5d8z6bfw0gYWm9mmCXxZatQgxfC7I2NVpRYQOxKWppLs4mcgn5NcibgL1K40xYp8CYY5TXEpjcb3LAJ0OZyyg3+2nySm6fjEtzkEz+7VBx3RTb+60z9dma7pkvwO2QQL5HzTtAdpKF7euw/HuzfrosBHy+ZsBimzbQshjWTVMDgez53B5MbjcGbr1ZjdUJOM5O0SLXzJ2R+uOA1dMAVoLsm5zb73JSId8t8Aa1LsAJdoTCrCaw6e3NC2DdFMUXWRg173mysJNOSUNskUJ1cOlXa2LhcbgmSszXYSn9hl3KSxTDjrZ2cbbfbWDyumsh9m3e7zCG7a3ETt+gtI7fx6lEOanZKDVvuA2cjYmt5xNOd2Louz3IQ12UZ2Zo3lkb9cDlvSs6m4Vk5Yqlabs0B97wT7PUuCXQz0Bnt9QxMPTW4iwBtmUlY8hFsHJPlzcQ1xuG75CVK1kXofCUGnU9fg1aVD7kfE9MoabtYkcAvIUYS2op3Hc3TTrDQzIAeojugTVLFolWDR6wFPtY0R66n6HltwjCIawnE2ymresk9NtN+pfUUi0mX6RJLfrh9zMRaRPOqubSA8W2MNzC0mHpK7j2ruuw5mYkxl5+2+HGQeg4yNYg7vNg+xMxFsuRMuiTsRJZG3cysAl4D9n4aC4un8L9qUyVvbCyYwFXX1nGUxFf1cCiEQqy75O+TpMwYKNKSPQUqhLyyWLsRbESLctx0YnixgfphRWA8pOPc+N4F9d+eV9V4OlCX/As5w5g+wtGhJGukp5go2R3D7EW9rSDcnGL56YgJHj+8GcFND/Vy41jj/H0jxc6HU/AA2QlR01UlH3D7CmITQnJq4lVWBi1yl8XYEh278c5H++F+Iui7r7bYR8tH/gbqoJN7fVODUhLYVVxzmYCEyOxFg7RUVa0egCHZZ55eRHnp/tKgMna6s/bbMdTxZgMzl9CCcmq7k690OzDfaeSN4QcsREjsQpgXHwyWyfg9K5WE7hc6JqTWjyihObfygOFOkv6i5K5TZx8LsL1sVS4NL8ItiB7sgAcEKcWHfUCVhK3kUVnBNbfXIs4l5xAv5sJs234eTUy93L0Au2otQOw5ORMyfQ6WwexFupVSHowG6uThXfebmlhWojMS3fazmMeGxEI6S2SUti6RAo2vKohVuH3qUG5FWm/PjH8kzutgSH5g58xrVwzIbZkxHf7OFjFC+wrMDXcpOqOKX/g01U/XPvVJyxdWsiJblqYmnZoWbDxAcR56X5WPuh4ewcL5PY9JBRUYjc7fzjG6Uc3mHBWbg23X1BLaFHOSnrw4bWiNAXSEWcWRntIignXTP/oDsfKZX66mMbZAPfhviU1AyYmJLYAMZa/QXjUSeIiixpj3UUFtd884KytjN7EjdGNNMbWwtlf3FvbQ4OQtIoYSzbxqVDLXMTxP8jnnbiyKcaJLvueGLD6kXW2sKZov1tpn7hwXf3ZUvq0K2FXOM7Op/Xgb6PhxsWIErYGVuK3WGXWkkwMMZVCVl5kWtax5A6usgemvnx4DelUcYcFC0eIbcbXKzggeyBjeXIhkftaKknJKLtnuSg7KmKQsrH+1nqbmLWY6w/tBGy/8xrruR5SM99LLIjfT/4ZbNZnQEPssIVb21rKTGRIPDagNoLdFMKgcuLc/TF6Bulk6c7ovg4TU+XvS6FNw1tDfVqH9MOPmBDui0hcK6wz744FlDjNe0m3aVldJYagtI6YbF+3ZGPsQHlN1vbeh8lJofqJ+uo9Zi4wXZxKFiXKGxbHT7pNq71oNg4Qi6MviE0FpRVqjGXILYoJ4tCjdYU1rWeMdPLc/ochj3B9pGNGL4NupGPRlUl35KMVxFLNO6ZnxYlBsUPqoMkbUqAb6VhMVKQ7MVT1dYdrL8hzEAcjpmvjHKphgaFb0ZVJZw7dwVD9q5fkgPTRbBxnzmGfgRLQsMCkG+moQdcp6GzzZsL2MGyllvBNGWM9RqMCk26kI7aBK526csVShZTfzid6FEzeiNAGP92jpCPQEbrW7EW5MbZxAz/fN9lg0IbQaaxrQ83/VoKPb/HqJx67Hw+43CDQBPsX0gm6ufXNvH4vP9rZapzx7+Nn+oxZAjfo2caZ3n350c5W6FSEdQ86sNarj3c/jRV+H42AXsdGRBfPPIlnb/mUtxzWXfALn/PmRze2Gud6E/xsXwYtnlsWN8Tc5/oyxjn/jvyJrlY82xLUfWuPr/TqxzuXQZkIP9M7CXiyuP4B4WmsTnNhzinjrD+WO9bRhmdZWLXe4EKRtV5tpN3Hx3s2G+d79/MJf4qff0LnE72kfFEs4ITQvWLMab8C131dP9n9Je1Yx000Nz2jAf+UJwCBchc3NvGR1Qx71XXY2Ww1Jvx7YalzAPkX9rp5E5Z+pv+ja8bE43uN491b9dHO9Xx4lUxziLn21Nai/wXWM6t9vkvtrwAAAABJRU5ErkJggg=="}get chains(){return tW}get accounts(){return[f]}get features(){return{"standard:connect":{version:"1.0.0",connect:lu(this,r)},"standard:events":{version:"1.0.0",on:lu(this,e)},"sui:signPersonalMessage":{version:"1.0.0",signPersonalMessage:lu(this,n)},"sui:signTransactionBlock":{version:"1.0.0",signTransactionBlock:lu(this,i)},"sui:signAndExecuteTransactionBlock":{version:"1.0.0",signAndExecuteTransactionBlock:lu(this,o)},"sui:signTransaction":{version:"2.0.0",signTransaction:lu(this,s)},"sui:signAndExecuteTransaction":{version:"2.0.0",signAndExecuteTransaction:lu(this,a)}}}}return e=new WeakMap,r=new WeakMap,n=new WeakMap,i=new WeakMap,s=new WeakMap,o=new WeakMap,a=new WeakMap,u.register(new d)}function kY(){const{currentWallet:t}=Rf(),e=Dn(r=>r.updateWalletAccounts);I.useEffect(()=>t==null?void 0:t.features["standard:events"].on("change",({accounts:n})=>{n&&e(n)}),[t==null?void 0:t.features,e])}function AY(t,e){const r=Dn(i=>i.setWalletRegistered),n=Dn(i=>i.setWalletUnregistered);I.useEffect(()=>{const i=sg();r(am(t,e));const s=i.on("register",()=>{r(am(t,e))}),o=i.on("unregister",a=>{n(am(t,e),a)});return()=>{s(),o()}},[t,e,r,n])}var jY={blurs:{modalOverlay:"blur(0)"},backgroundColors:{primaryButton:"#F6F7F9",primaryButtonHover:"#F0F2F5",outlineButtonHover:"#F4F4F5",modalOverlay:"rgba(24 36 53 / 20%)",modalPrimary:"white",modalSecondary:"#F7F8F8",iconButton:"transparent",iconButtonHover:"#F0F1F2",dropdownMenu:"#FFFFFF",dropdownMenuSeparator:"#F3F6F8",walletItemSelected:"white",walletItemHover:"#3C424226"},borderColors:{outlineButton:"#E4E4E7"},colors:{primaryButton:"#373737",outlineButton:"#373737",iconButton:"#000000",body:"#182435",bodyMuted:"#767A81",bodyDanger:"#FF794B"},radii:{small:"6px",medium:"8px",large:"12px",xlarge:"16px"},shadows:{primaryButton:"0px 4px 12px rgba(0, 0, 0, 0.1)",walletItemSelected:"0px 2px 6px rgba(0, 0, 0, 0.05)"},fontWeights:{normal:"400",medium:"500",bold:"600"},fontSizes:{small:"14px",medium:"16px",large:"18px",xlarge:"20px"},typography:{fontFamily:'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"',fontStyle:"normal",lineHeight:"1.3",letterSpacing:"1"}};function MY({wallets:t,storage:e,storageKey:r,autoConnectEnabled:n}){return sF()(NK((i,s)=>({autoConnectEnabled:n,wallets:t,accounts:[],currentWallet:null,currentAccount:null,lastConnectedAccountAddress:null,lastConnectedWalletName:null,connectionStatus:"disconnected",supportedIntents:[],setConnectionStatus(o){i(()=>({connectionStatus:o}))},setWalletConnected(o,a,u,c=[]){i(()=>({accounts:a,currentWallet:o,currentAccount:u,lastConnectedWalletName:rc(o),lastConnectedAccountAddress:u==null?void 0:u.address,connectionStatus:"connected",supportedIntents:c}))},setWalletDisconnected(){i(()=>({accounts:[],currentWallet:null,currentAccount:null,lastConnectedWalletName:null,lastConnectedAccountAddress:null,connectionStatus:"disconnected",supportedIntents:[]}))},setAccountSwitched(o){i(()=>({currentAccount:o,lastConnectedAccountAddress:o.address}))},setWalletRegistered(o){i(()=>({wallets:o}))},setWalletUnregistered(o,a){a===s().currentWallet?i(()=>({wallets:o,accounts:[],currentWallet:null,currentAccount:null,lastConnectedWalletName:null,lastConnectedAccountAddress:null,connectionStatus:"disconnected",supportedIntents:[]})):i(()=>({wallets:o}))},updateWalletAccounts(o){const a=s().currentAccount;i(()=>({accounts:o,currentAccount:a&&o.find(({address:u})=>u===a.address)||o[0]}))}}),{name:r,storage:m5(()=>e),partialize:({lastConnectedWalletName:i,lastConnectedAccountAddress:s})=>({lastConnectedWalletName:i,lastConnectedAccountAddress:s})}))}var $Y={blurs:{modalOverlay:""},backgroundColors:{primaryButton:"",primaryButtonHover:"",outlineButtonHover:"",walletItemHover:"",walletItemSelected:"",modalOverlay:"",modalPrimary:"",modalSecondary:"",iconButton:"",iconButtonHover:"",dropdownMenu:"",dropdownMenuSeparator:""},borderColors:{outlineButton:""},colors:{primaryButton:"",outlineButton:"",body:"",bodyMuted:"",bodyDanger:"",iconButton:""},radii:{small:"",medium:"",large:"",xlarge:""},shadows:{primaryButton:"",walletItemSelected:""},fontWeights:{normal:"",medium:"",bold:""},fontSizes:{small:"",medium:"",large:"",xlarge:""},typography:{fontFamily:"",fontStyle:"",lineHeight:"",letterSpacing:""}},NY=oJ($Y,(t,e)=>`dapp-kit-${e.join("-")}`);function RY({theme:t}){const e=Array.isArray(t)?DY(t):W5(t);return V.jsx("style",{precedence:"default",href:"mysten-dapp-kit-theme",dangerouslySetInnerHTML:{__html:e}})}function DY(t){return t.map(({mediaQuery:e,selector:r,variables:n})=>{const i=W5(n),s=r?`${r} ${i}`:i;return e?`@media ${e}{${s}}`:s}).join(" ")}function W5(t){return`${_J} {${BY(t)}}`}function BY(t){return Object.entries(DK(NY,t)).map(([e,r])=>`${e}:${r};`).join("")}function UY({preferredWallets:t=z5,walletFilter:e=L5,storage:r=EY,storageKey:n=OY,enableUnsafeBurner:i=!1,autoConnect:s=!1,stashedWallet:o,theme:a=jY,children:u}){const c=I.useRef(MY({autoConnectEnabled:s,wallets:am(t,e),storage:r||F5(),storageKey:n}));return V.jsx(A5.Provider,{value:c.current,children:V.jsxs(FY,{preferredWallets:t,walletFilter:e,enableUnsafeBurner:i,stashedWallet:o,children:[a?V.jsx(RY,{theme:a}):null,u]})})}function FY({preferredWallets:t=z5,walletFilter:e=L5,enableUnsafeBurner:r=!1,stashedWallet:n,children:i}){return AY(t,e),kY(),TY(n),PY(r),V5(),i}function LY(t){function e(){const{config:i}=rS();if(!i)throw new Error("No network config found");return i}function r(){const{variables:i}=e();return i??{}}function n(i){return r()[i]}return{networkConfig:t,useNetworkConfig:e,useNetworkVariables:r,useNetworkVariable:n}}function zY({mutationKey:t,...e}={}){const{currentWallet:r}=Rf(),n=Nf();return lp({mutationKey:$f.reportTransactionEffects(t),mutationFn:async({effects:i,chain:s=r==null?void 0:r.chains[0],account:o=n})=>{if(!r)throw new Sg("No wallet is connected.");if(!o)throw new B5("No wallet account is selected to report transaction effects for");const a=r.features["sui:reportTransactionEffects"];if(a)return await a.reportTransactionEffects({effects:Array.isArray(i)?zt(new Uint8Array(i)):i,account:o,chain:s??(r==null?void 0:r.chains[0])})},...e})}function VY({mutationKey:t,execute:e,...r}={}){const{currentWallet:n,supportedIntents:i}=Rf(),s=Nf(),o=N5(),{mutate:a}=zY(),u=e??(async({bytes:c,signature:l})=>{const{digest:f,rawEffects:d}=await o.executeTransactionBlock({transactionBlock:c,signature:l,options:{showRawEffects:!0}});return{digest:f,rawEffects:d,effects:zt(new Uint8Array(d)),bytes:c,signature:l}});return lp({mutationKey:$f.signAndExecuteTransaction(t),mutationFn:async({transaction:c,...l})=>{var _;if(!n)throw new Sg("No wallet is connected.");const f=l.account??s;if(!f)throw new B5("No wallet account is selected to sign the transaction with.");const d=l.chain??(f==null?void 0:f.chains[0]);if(!n.features["sui:signTransaction"]&&!n.features["sui:signTransactionBlock"])throw new cY("This wallet doesn't support the `signTransaction` feature.");const{signature:h,bytes:m}=await XV(n,{...l,transaction:{async toJSON(){return typeof c=="string"?c:await c.toJSON({supportedIntents:i,client:o})}},account:f,chain:l.chain??f.chains[0]}),g=await u({bytes:m,signature:h});let x;if("effects"in g&&((_=g.effects)!=null&&_.bcs))x=g.effects.bcs;else if("rawEffects"in g)x=zt(new Uint8Array(g.rawEffects));else throw new Error("Could not parse effects from transaction result.");return a({effects:x,account:f,chain:d}),g},...r})}var WY="VisuallyHidden",nS=I.forwardRef((t,e)=>V.jsx(Wr.span,{...t,ref:e,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...t.style}}));nS.displayName=WY;var HY=nS,H5={exports:{}};/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/(function(t){(function(){var e={}.hasOwnProperty;function r(){for(var s="",o=0;ooS.includes(e))}function rQ({className:t,customProperties:e,...r}){const n=t8({allowArbitraryValues:!0,className:t,...r}),i=nQ({customProperties:e,...r});return[n,i]}function t8({allowArbitraryValues:t,value:e,className:r,propValues:n,parseValue:i=s=>s}){const s=[];if(e){if(typeof e=="string"&&n.includes(e))return a6(r,e,i);if(eh(e)){const o=e;for(const a in o){if(!e8(o,a)||!oS.includes(a))continue;const u=o[a];if(u!==void 0){if(n.includes(u)){const c=a6(r,u,i),l=a==="initial"?c:`${a}:${c}`;s.push(l)}else if(t){const c=a==="initial"?r:`${a}:${r}`;s.push(c)}}}return s.join(" ")}if(t)return r}}function a6(t,e,r){const n=t?"-":"",i=r(e),s=i==null?void 0:i.startsWith("-"),o=s?"-":"",a=s?i==null?void 0:i.substring(1):i;return`${o}${t}${n}${a}`}function nQ({customProperties:t,value:e,propValues:r,parseValue:n=i=>i}){let i={};if(!(!e||typeof e=="string"&&r.includes(e))){if(typeof e=="string"&&(i=Object.fromEntries(t.map(s=>[s,e]))),eh(e)){const s=e;for(const o in s){if(!e8(s,o)||!oS.includes(o))continue;const a=s[o];if(!r.includes(a))for(const u of t)i={[o==="initial"?u:`${u}-${o}`]:a,...i}}}for(const s in i){const o=i[s];o!==void 0&&(i[s]=n(o))}return i}}function u6(...t){let e={};for(const r of t)r&&(e={...e,...r});return Object.keys(e).length?e:void 0}function iQ(...t){return Object.assign({},...t)}function eu(t,...e){let r,n;const i={...t},s=iQ(...e);for(const o in s){let a=i[o];const u=s[o];if(u.default!==void 0&&a===void 0&&(a=u.default),u.type==="enum"&&![u.default,...u.values].includes(a)&&!eh(a)&&(a=u.default),i[o]=a,"className"in u&&u.className){delete i[o];const c="responsive"in u;if(!a||eh(a)&&!c)continue;if(eh(a)&&(u.default!==void 0&&a.initial===void 0&&(a.initial=u.default),u.type==="enum"&&([u.default,...u.values].includes(a.initial)||(a.initial=u.default))),u.type==="enum"){const l=t8({allowArbitraryValues:!1,value:a,className:u.className,propValues:u.values,parseValue:u.parseValue});r=si(r,l);continue}if(u.type==="string"||u.type==="enum | string"){const l=u.type==="string"?[]:u.values,[f,d]=rQ({className:u.className,customProperties:u.customProperties,propValues:l,parseValue:u.parseValue,value:a});n=u6(n,d),r=si(r,f);continue}if(u.type==="boolean"&&a){r=si(r,u.className);continue}}}return i.className=si(r,t.className),i.style=u6(n,t.style),i}const du=["0","1","2","3","4","5","6","7","8","9","-1","-2","-3","-4","-5","-6","-7","-8","-9"],Tc={m:{type:"enum | string",values:du,responsive:!0,className:"rt-r-m",customProperties:["--m"]},mx:{type:"enum | string",values:du,responsive:!0,className:"rt-r-mx",customProperties:["--ml","--mr"]},my:{type:"enum | string",values:du,responsive:!0,className:"rt-r-my",customProperties:["--mt","--mb"]},mt:{type:"enum | string",values:du,responsive:!0,className:"rt-r-mt",customProperties:["--mt"]},mr:{type:"enum | string",values:du,responsive:!0,className:"rt-r-mr",customProperties:["--mr"]},mb:{type:"enum | string",values:du,responsive:!0,className:"rt-r-mb",customProperties:["--mb"]},ml:{type:"enum | string",values:du,responsive:!0,className:"rt-r-ml",customProperties:["--ml"]}},Eg=I.forwardRef((t,e)=>{const{children:r,className:n,asChild:i,as:s="h1",color:o,...a}=eu(t,tQ,Tc);return I.createElement(gn,{"data-accent-color":o,...a,ref:e,className:si("rt-Heading",n)},i?r:I.createElement(s,null,r))});Eg.displayName="Heading";const sQ=["span","div","label","p"],oQ=["1","2","3","4","5","6","7","8","9"],aQ={as:{type:"enum",values:sQ,default:"span"},...Cc,size:{type:"enum",className:"rt-r-size",values:oQ,responsive:!0},...Z5,...J5,...X5,...Q5,...Y5,...K5,...sS},nc=I.forwardRef((t,e)=>{const{children:r,className:n,asChild:i,as:s="span",color:o,...a}=eu(t,aQ,Tc);return I.createElement(gn,{"data-accent-color":o,...a,ref:e,className:si("rt-Text",n)},i?r:I.createElement(s,null,r))});nc.displayName="Text";var[Og,Hpe]=eg("Tooltip",[gg]),aS=gg(),r8="TooltipProvider",uQ=700,c6="tooltip.open",[cQ,n8]=Og(r8),i8=t=>{const{__scopeTooltip:e,delayDuration:r=uQ,skipDelayDuration:n=300,disableHoverableContent:i=!1,children:s}=t,[o,a]=I.useState(!0),u=I.useRef(!1),c=I.useRef(0);return I.useEffect(()=>{const l=c.current;return()=>window.clearTimeout(l)},[]),V.jsx(cQ,{scope:e,isOpenDelayed:o,delayDuration:r,onOpen:I.useCallback(()=>{window.clearTimeout(c.current),a(!1)},[]),onClose:I.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a(!0),n)},[n]),isPointerInTransitRef:u,onPointerInTransitChange:I.useCallback(l=>{u.current=l},[]),disableHoverableContent:i,children:s})};i8.displayName=r8;var s8="Tooltip",[Gpe,Cg]=Og(s8),A1="TooltipTrigger",lQ=I.forwardRef((t,e)=>{const{__scopeTooltip:r,...n}=t,i=Cg(A1,r),s=n8(A1,r),o=aS(r),a=I.useRef(null),u=cn(e,a,i.onTriggerChange),c=I.useRef(!1),l=I.useRef(!1),f=I.useCallback(()=>c.current=!1,[]);return I.useEffect(()=>()=>document.removeEventListener("pointerup",f),[f]),V.jsx(Gj,{asChild:!0,...o,children:V.jsx(Wr.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...n,ref:u,onPointerMove:pt(t.onPointerMove,d=>{d.pointerType!=="touch"&&!l.current&&!s.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:pt(t.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:pt(t.onPointerDown,()=>{c.current=!0,document.addEventListener("pointerup",f,{once:!0})}),onFocus:pt(t.onFocus,()=>{c.current||i.onOpen()}),onBlur:pt(t.onBlur,i.onClose),onClick:pt(t.onClick,i.onClose)})})});lQ.displayName=A1;var fQ="TooltipPortal",[qpe,dQ]=Og(fQ,{forceMount:void 0}),wf="TooltipContent",hQ=I.forwardRef((t,e)=>{const r=dQ(wf,t.__scopeTooltip),{forceMount:n=r.forceMount,side:i="top",...s}=t,o=Cg(wf,t.__scopeTooltip);return V.jsx(Xo,{present:n||o.open,children:o.disableHoverableContent?V.jsx(o8,{side:i,...s,ref:e}):V.jsx(pQ,{side:i,...s,ref:e})})}),pQ=I.forwardRef((t,e)=>{const r=Cg(wf,t.__scopeTooltip),n=n8(wf,t.__scopeTooltip),i=I.useRef(null),s=cn(e,i),[o,a]=I.useState(null),{trigger:u,onClose:c}=r,l=i.current,{onPointerInTransitChange:f}=n,d=I.useCallback(()=>{a(null),f(!1)},[f]),h=I.useCallback((m,g)=>{const x=m.currentTarget,_={x:m.clientX,y:m.clientY},S=vQ(_,x.getBoundingClientRect()),O=bQ(_,S),D=wQ(g.getBoundingClientRect()),z=xQ([...O,...D]);a(z),f(!0)},[f]);return I.useEffect(()=>()=>d(),[d]),I.useEffect(()=>{if(u&&l){const m=x=>h(x,l),g=x=>h(x,u);return u.addEventListener("pointerleave",m),l.addEventListener("pointerleave",g),()=>{u.removeEventListener("pointerleave",m),l.removeEventListener("pointerleave",g)}}},[u,l,h,d]),I.useEffect(()=>{if(o){const m=g=>{const x=g.target,_={x:g.clientX,y:g.clientY},S=(u==null?void 0:u.contains(x))||(l==null?void 0:l.contains(x)),O=!_Q(_,o);S?d():O&&(d(),c())};return document.addEventListener("pointermove",m),()=>document.removeEventListener("pointermove",m)}},[u,l,o,c,d]),V.jsx(o8,{...t,ref:s})}),[mQ,yQ]=Og(s8,{isInside:!1}),o8=I.forwardRef((t,e)=>{const{__scopeTooltip:r,children:n,"aria-label":i,onEscapeKeyDown:s,onPointerDownOutside:o,...a}=t,u=Cg(wf,r),c=aS(r),{onClose:l}=u;return I.useEffect(()=>(document.addEventListener(c6,l),()=>document.removeEventListener(c6,l)),[l]),I.useEffect(()=>{if(u.trigger){const f=d=>{const h=d.target;h!=null&&h.contains(u.trigger)&&l()};return window.addEventListener("scroll",f,{capture:!0}),()=>window.removeEventListener("scroll",f,{capture:!0})}},[u.trigger,l]),V.jsx(tg,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:f=>f.preventDefault(),onDismiss:l,children:V.jsxs(qj,{"data-state":u.stateAttribute,...c,...a,ref:e,style:{...a.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[V.jsx(q3,{children:n}),V.jsx(mQ,{scope:r,isInside:!0,children:V.jsx(HY,{id:u.contentId,role:"tooltip",children:i||n})})]})})});hQ.displayName=wf;var a8="TooltipArrow",gQ=I.forwardRef((t,e)=>{const{__scopeTooltip:r,...n}=t,i=aS(r);return yQ(a8,r).isInside?null:V.jsx(Kj,{...i,...n,ref:e})});gQ.displayName=a8;function vQ(t,e){const r=Math.abs(e.top-t.y),n=Math.abs(e.bottom-t.y),i=Math.abs(e.right-t.x),s=Math.abs(e.left-t.x);switch(Math.min(r,n,i,s)){case s:return"left";case i:return"right";case r:return"top";case n:return"bottom";default:throw new Error("unreachable")}}function bQ(t,e,r=5){const n=[];switch(e){case"top":n.push({x:t.x-r,y:t.y+r},{x:t.x+r,y:t.y+r});break;case"bottom":n.push({x:t.x-r,y:t.y-r},{x:t.x+r,y:t.y-r});break;case"left":n.push({x:t.x+r,y:t.y-r},{x:t.x+r,y:t.y+r});break;case"right":n.push({x:t.x-r,y:t.y-r},{x:t.x-r,y:t.y+r});break}return n}function wQ(t){const{top:e,right:r,bottom:n,left:i}=t;return[{x:i,y:e},{x:r,y:e},{x:r,y:n},{x:i,y:n}]}function _Q(t,e){const{x:r,y:n}=t;let i=!1;for(let s=0,o=e.length-1;sn!=l>n&&r<(c-a)*(n-u)/(l-u)+a&&(i=!i)}return i}function xQ(t){const e=t.slice();return e.sort((r,n)=>r.xn.x?1:r.yn.y?1:0),SQ(e)}function SQ(t){if(t.length<=1)return t.slice();const e=[];for(let n=0;n=2;){const s=e[e.length-1],o=e[e.length-2];if((s.x-o.x)*(i.y-o.y)>=(s.y-o.y)*(i.x-o.x))e.pop();else break}e.push(i)}e.pop();const r=[];for(let n=t.length-1;n>=0;n--){const i=t[n];for(;r.length>=2;){const s=r[r.length-1],o=r[r.length-2];if((s.x-o.x)*(i.y-o.y)>=(s.y-o.y)*(i.x-o.x))r.pop();else break}r.push(i)}return r.pop(),e.length===1&&r.length===1&&e[0].x===r[0].x&&e[0].y===r[0].y?e:e.concat(r)}var EQ=i8;function OQ(t){switch(t){case"tomato":case"red":case"ruby":case"crimson":case"pink":case"plum":case"purple":case"violet":return"mauve";case"iris":case"indigo":case"blue":case"sky":case"cyan":return"slate";case"teal":case"jade":case"mint":case"green":return"sage";case"grass":case"lime":return"olive";case"yellow":case"amber":case"orange":case"brown":case"gold":case"bronze":return"sand";case"gray":return"gray"}}const u8=["none","small","medium","large","full"],CQ={radius:{type:"enum",values:u8,default:void 0}},TQ=["inherit","light","dark"],PQ=["solid","translucent"],IQ=["90%","95%","100%","105%","110%"],vi={...Cc,hasBackground:{type:"boolean",default:!0},appearance:{type:"enum",values:TQ,default:"inherit"},accentColor:{type:"enum",values:iS,default:"indigo"},grayColor:{type:"enum",values:qY,default:"auto"},panelBackground:{type:"enum",values:PQ,default:"translucent"},radius:{type:"enum",values:u8,default:"medium"},scaling:{type:"enum",values:IQ,default:"100%"}},Fc=()=>{},j1=I.createContext(void 0),c8=I.forwardRef((t,e)=>I.useContext(j1)===void 0?I.createElement(EQ,{delayDuration:200},I.createElement(aW,{dir:"ltr"},I.createElement(l8,{...t,ref:e}))):I.createElement(uS,{...t,ref:e}));c8.displayName="Theme";const l8=I.forwardRef((t,e)=>{const{appearance:r=vi.appearance.default,accentColor:n=vi.accentColor.default,grayColor:i=vi.grayColor.default,panelBackground:s=vi.panelBackground.default,radius:o=vi.radius.default,scaling:a=vi.scaling.default,hasBackground:u=vi.hasBackground.default,...c}=t,[l,f]=I.useState(r);I.useEffect(()=>f(r),[r]);const[d,h]=I.useState(n);I.useEffect(()=>h(n),[n]);const[m,g]=I.useState(i);I.useEffect(()=>g(i),[i]);const[x,_]=I.useState(s);I.useEffect(()=>_(s),[s]);const[S,O]=I.useState(o);I.useEffect(()=>O(o),[o]);const[D,z]=I.useState(a);return I.useEffect(()=>z(a),[a]),I.createElement(uS,{...c,ref:e,isRoot:!0,hasBackground:u,appearance:l,accentColor:d,grayColor:m,panelBackground:x,radius:S,scaling:D,onAppearanceChange:f,onAccentColorChange:h,onGrayColorChange:g,onPanelBackgroundChange:_,onRadiusChange:O,onScalingChange:z})});l8.displayName="ThemeRoot";const uS=I.forwardRef((t,e)=>{const r=I.useContext(j1),{asChild:n,isRoot:i,hasBackground:s,appearance:o=(r==null?void 0:r.appearance)??vi.appearance.default,accentColor:a=(r==null?void 0:r.accentColor)??vi.accentColor.default,grayColor:u=(r==null?void 0:r.resolvedGrayColor)??vi.grayColor.default,panelBackground:c=(r==null?void 0:r.panelBackground)??vi.panelBackground.default,radius:l=(r==null?void 0:r.radius)??vi.radius.default,scaling:f=(r==null?void 0:r.scaling)??vi.scaling.default,onAppearanceChange:d=Fc,onAccentColorChange:h=Fc,onGrayColorChange:m=Fc,onPanelBackgroundChange:g=Fc,onRadiusChange:x=Fc,onScalingChange:_=Fc,...S}=t,O=n?gn:"div",D=u==="auto"?OQ(a):u,z=t.appearance==="light"||t.appearance==="dark",G=s===void 0?i||z:s;return I.createElement(j1.Provider,{value:I.useMemo(()=>({appearance:o,accentColor:a,grayColor:u,resolvedGrayColor:D,panelBackground:c,radius:l,scaling:f,onAppearanceChange:d,onAccentColorChange:h,onGrayColorChange:m,onPanelBackgroundChange:g,onRadiusChange:x,onScalingChange:_}),[o,a,u,D,c,l,f,d,h,m,g,x,_])},I.createElement(O,{"data-is-root-theme":i?"true":"false","data-accent-color":a,"data-gray-color":D,"data-has-background":G?"true":"false","data-panel-background":c,"data-radius":l,"data-scaling":f,ref:e,...S,className:si("radix-themes",{light:o==="light",dark:o==="dark"},S.className)}))});uS.displayName="ThemeImpl";function kQ(t,e){const{asChild:r,children:n}=t;if(!r)return typeof e=="function"?e(n):e;const i=I.Children.only(n);return I.cloneElement(i,{children:typeof e=="function"?e(i.props.children):e})}const AQ=["div","span"],jQ=["none","inline","inline-block","block"],MQ={as:{type:"enum",values:AQ,default:"div"},...Cc,display:{type:"enum",className:"rt-r-display",values:jQ,responsive:!0}},hu=["0","1","2","3","4","5","6","7","8","9"],$Q={p:{type:"enum | string",className:"rt-r-p",customProperties:["--p"],values:hu,responsive:!0},px:{type:"enum | string",className:"rt-r-px",customProperties:["--pl","--pr"],values:hu,responsive:!0},py:{type:"enum | string",className:"rt-r-py",customProperties:["--pt","--pb"],values:hu,responsive:!0},pt:{type:"enum | string",className:"rt-r-pt",customProperties:["--pt"],values:hu,responsive:!0},pr:{type:"enum | string",className:"rt-r-pr",customProperties:["--pr"],values:hu,responsive:!0},pb:{type:"enum | string",className:"rt-r-pb",customProperties:["--pb"],values:hu,responsive:!0},pl:{type:"enum | string",className:"rt-r-pl",customProperties:["--pl"],values:hu,responsive:!0}},Xv=["visible","hidden","clip","scroll","auto"],NQ=["static","relative","absolute","fixed","sticky"],od=["0","1","2","3","4","5","6","7","8","9","-1","-2","-3","-4","-5","-6","-7","-8","-9"],RQ=["0","1"],DQ=["0","1"],cS={...$Q,...G5,...q5,position:{type:"enum",className:"rt-r-position",values:NQ,responsive:!0},inset:{type:"enum | string",className:"rt-r-inset",customProperties:["--inset"],values:od,responsive:!0},top:{type:"enum | string",className:"rt-r-top",customProperties:["--top"],values:od,responsive:!0},right:{type:"enum | string",className:"rt-r-right",customProperties:["--right"],values:od,responsive:!0},bottom:{type:"enum | string",className:"rt-r-bottom",customProperties:["--bottom"],values:od,responsive:!0},left:{type:"enum | string",className:"rt-r-left",customProperties:["--left"],values:od,responsive:!0},overflow:{type:"enum",className:"rt-r-overflow",values:Xv,responsive:!0},overflowX:{type:"enum",className:"rt-r-ox",values:Xv,responsive:!0},overflowY:{type:"enum",className:"rt-r-oy",values:Xv,responsive:!0},flexBasis:{type:"string",className:"rt-r-fb",customProperties:["--flex-basis"],responsive:!0},flexShrink:{type:"enum | string",className:"rt-r-fs",customProperties:["--flex-shrink"],values:RQ,responsive:!0},flexGrow:{type:"enum | string",className:"rt-r-fg",customProperties:["--flex-grow"],values:DQ,responsive:!0},gridArea:{type:"string",className:"rt-r-ga",customProperties:["--grid-area"],responsive:!0},gridColumn:{type:"string",className:"rt-r-gc",customProperties:["--grid-column"],responsive:!0},gridColumnStart:{type:"string",className:"rt-r-gcs",customProperties:["--grid-column-start"],responsive:!0},gridColumnEnd:{type:"string",className:"rt-r-gce",customProperties:["--grid-column-end"],responsive:!0},gridRow:{type:"string",className:"rt-r-gr",customProperties:["--grid-row"],responsive:!0},gridRowStart:{type:"string",className:"rt-r-grs",customProperties:["--grid-row-start"],responsive:!0},gridRowEnd:{type:"string",className:"rt-r-gre",customProperties:["--grid-row-end"],responsive:!0}},M1=I.forwardRef((t,e)=>{const{className:r,asChild:n,as:i="div",...s}=eu(t,MQ,cS,Tc);return I.createElement(n?gn:i,{...s,ref:e,className:si("rt-Box",r)})});M1.displayName="Box";const BQ=["1","2","3","4"],UQ=["classic","solid","soft","surface","outline","ghost"],l6={...Cc,size:{type:"enum",className:"rt-r-size",values:BQ,default:"2",responsive:!0},variant:{type:"enum",className:"rt-variant",values:UQ,default:"solid"},...KY,...sS,...CQ,loading:{type:"boolean",className:"rt-loading",default:!1}},Jv=["0","1","2","3","4","5","6","7","8","9"],FQ={gap:{type:"enum | string",className:"rt-r-gap",customProperties:["--gap"],values:Jv,responsive:!0},gapX:{type:"enum | string",className:"rt-r-cg",customProperties:["--column-gap"],values:Jv,responsive:!0},gapY:{type:"enum | string",className:"rt-r-rg",customProperties:["--row-gap"],values:Jv,responsive:!0}},LQ=["div","span"],zQ=["none","inline-flex","flex"],VQ=["row","column","row-reverse","column-reverse"],WQ=["start","center","end","baseline","stretch"],HQ=["start","center","end","between"],GQ=["nowrap","wrap","wrap-reverse"],qQ={as:{type:"enum",values:LQ,default:"div"},...Cc,display:{type:"enum",className:"rt-r-display",values:zQ,responsive:!0},direction:{type:"enum",className:"rt-r-fd",values:VQ,responsive:!0},align:{type:"enum",className:"rt-r-ai",values:WQ,responsive:!0},justify:{type:"enum",className:"rt-r-jc",values:HQ,parseValue:KQ,responsive:!0},wrap:{type:"enum",className:"rt-r-fw",values:GQ,responsive:!0},...FQ};function KQ(t){return t==="between"?"space-between":t}const Ss=I.forwardRef((t,e)=>{const{className:r,asChild:n,as:i="div",...s}=eu(t,qQ,cS,Tc);return I.createElement(n?gn:i,{...s,ref:e,className:si("rt-Flex",r)})});Ss.displayName="Flex";const XQ=["1","2","3"],JQ={size:{type:"enum",className:"rt-r-size",values:XQ,default:"2",responsive:!0},loading:{type:"boolean",default:!0}},f8=I.forwardRef((t,e)=>{const{className:r,children:n,loading:i,...s}=eu(t,JQ,Tc);if(!i)return n;const o=I.createElement("span",{...s,ref:e,className:si("rt-Spinner",r)},I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}),I.createElement("span",{className:"rt-SpinnerLeaf"}));return n===void 0?o:I.createElement(Ss,{asChild:!0,position:"relative",align:"center",justify:"center"},I.createElement("span",null,I.createElement("span",{"aria-hidden":!0,style:{display:"contents",visibility:"hidden"},inert:void 0},n),I.createElement(Ss,{asChild:!0,align:"center",justify:"center",position:"absolute",inset:"0"},I.createElement("span",null,o))))});f8.displayName="Spinner";function YQ(t,e){if(t!==void 0)return typeof t=="string"?e(t):Object.fromEntries(Object.entries(t).map(([r,n])=>[r,e(n)]))}function QQ(t){switch(t){case"1":return"1";case"2":case"3":return"2";case"4":return"3"}}const d8=I.forwardRef((t,e)=>{const{size:r=l6.size.default}=t,{className:n,children:i,asChild:s,color:o,radius:a,disabled:u=t.loading,...c}=eu(t,l6,Tc);return I.createElement(s?gn:"button",{"data-disabled":u||void 0,"data-accent-color":o,"data-radius":a,...c,ref:e,className:si("rt-reset","rt-BaseButton",n),disabled:u},t.loading?I.createElement(I.Fragment,null,I.createElement("span",{style:{display:"contents",visibility:"hidden"},"aria-hidden":!0},i),I.createElement(nS,null,i),I.createElement(Ss,{asChild:!0,align:"center",justify:"center",position:"absolute",inset:"0"},I.createElement("span",null,I.createElement(f8,{size:YQ(r,QQ)})))):i)});d8.displayName="BaseButton";const h8=I.forwardRef(({className:t,...e},r)=>I.createElement(d8,{...e,ref:r,className:si("rt-Button",t)}));h8.displayName="Button";const ZQ=["1","2","3","4"],eZ=["none","initial"],tZ=["left","center","right"],rZ={...Cc,size:{type:"enum",className:"rt-r-size",values:ZQ,default:"4",responsive:!0},display:{type:"enum",className:"rt-r-display",values:eZ,parseValue:nZ,responsive:!0},align:{type:"enum",className:"rt-r-ai",values:tZ,parseValue:iZ,responsive:!0}};function nZ(t){return t==="initial"?"flex":t}function iZ(t){return t==="left"?"start":t==="right"?"end":t}const zh=I.forwardRef(({width:t,minWidth:e,maxWidth:r,height:n,minHeight:i,maxHeight:s,...o},a)=>{const{asChild:u,children:c,className:l,...f}=eu(o,rZ,cS,Tc),{className:d,style:h}=eu({width:t,minWidth:e,maxWidth:r,height:n,minHeight:i,maxHeight:s},G5,q5);return I.createElement(u?gn:"div",{...f,ref:a,className:si("rt-Container",l)},kQ({asChild:u,children:c},m=>I.createElement("div",{className:si("rt-ContainerInner",d),style:h},m)))});zh.displayName="Container";function sZ(){const t=Nf(),{data:e,isPending:r,error:n}=R5("getOwnedObjects",{owner:t==null?void 0:t.address},{enabled:!!t});if(t)return n?V.jsxs(Ss,{children:["Error: ",n.message]}):r||!e?V.jsx(Ss,{children:"Loading..."}):V.jsxs(Ss,{direction:"column",my:"2",children:[e.data.length===0?V.jsx(nc,{children:"No objects owned by the connected wallet"}):V.jsx(Eg,{size:"4",children:"Objects owned by the connected wallet"}),e.data.map(i=>{var s,o;return V.jsx(Ss,{children:V.jsxs(nc,{children:["Object ID: ",(s=i.data)==null?void 0:s.objectId]})},(o=i.data)==null?void 0:o.objectId)})]})}function oZ(){const t=Nf();return V.jsxs(zh,{my:"2",children:[V.jsx(Eg,{mb:"2",children:"Wallet Status"}),t?V.jsxs(Ss,{direction:"column",children:[V.jsx(nc,{children:"Wallet connected"}),V.jsxs(nc,{children:["Address: ",t.address]})]}):V.jsx(nc,{children:"Wallet not connected"}),V.jsx(sZ,{})]})}var ct={},Yv={};function p8(t,e){return function(){return t.apply(e,arguments)}}const{toString:aZ}=Object.prototype,{getPrototypeOf:lS}=Object,Tg=(t=>e=>{const r=aZ.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Ms=t=>(t=t.toLowerCase(),e=>Tg(e)===t),Pg=t=>e=>typeof e===t,{isArray:Df}=Array,Vh=Pg("undefined");function uZ(t){return t!==null&&!Vh(t)&&t.constructor!==null&&!Vh(t.constructor)&&Oi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const m8=Ms("ArrayBuffer");function cZ(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&m8(t.buffer),e}const lZ=Pg("string"),Oi=Pg("function"),y8=Pg("number"),Ig=t=>t!==null&&typeof t=="object",fZ=t=>t===!0||t===!1,um=t=>{if(Tg(t)!=="object")return!1;const e=lS(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},dZ=Ms("Date"),hZ=Ms("File"),pZ=Ms("Blob"),mZ=Ms("FileList"),yZ=t=>Ig(t)&&Oi(t.pipe),gZ=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Oi(t.append)&&((e=Tg(t))==="formdata"||e==="object"&&Oi(t.toString)&&t.toString()==="[object FormData]"))},vZ=Ms("URLSearchParams"),[bZ,wZ,_Z,xZ]=["ReadableStream","Request","Response","Headers"].map(Ms),SZ=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Ep(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,i;if(typeof t!="object"&&(t=[t]),Df(t))for(n=0,i=t.length;n0;)if(i=r[n],e===i.toLowerCase())return i;return null}const zu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:ft,v8=t=>!Vh(t)&&t!==zu;function $1(){const{caseless:t}=v8(this)&&this||{},e={},r=(n,i)=>{const s=t&&g8(e,i)||i;um(e[s])&&um(n)?e[s]=$1(e[s],n):um(n)?e[s]=$1({},n):Df(n)?e[s]=n.slice():e[s]=n};for(let n=0,i=arguments.length;n(Ep(e,(i,s)=>{r&&Oi(i)?t[s]=p8(i,r):t[s]=i},{allOwnKeys:n}),t),OZ=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),CZ=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},TZ=(t,e,r,n)=>{let i,s,o;const a={};if(e=e||{},t==null)return e;do{for(i=Object.getOwnPropertyNames(t),s=i.length;s-- >0;)o=i[s],(!n||n(o,t,e))&&!a[o]&&(e[o]=t[o],a[o]=!0);t=r!==!1&&lS(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},PZ=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;const n=t.indexOf(e,r);return n!==-1&&n===r},IZ=t=>{if(!t)return null;if(Df(t))return t;let e=t.length;if(!y8(e))return null;const r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},kZ=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&lS(Uint8Array)),AZ=(t,e)=>{const n=(t&&t[Symbol.iterator]).call(t);let i;for(;(i=n.next())&&!i.done;){const s=i.value;e.call(t,s[0],s[1])}},jZ=(t,e)=>{let r;const n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},MZ=Ms("HTMLFormElement"),$Z=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,i){return n.toUpperCase()+i}),f6=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),NZ=Ms("RegExp"),b8=(t,e)=>{const r=Object.getOwnPropertyDescriptors(t),n={};Ep(r,(i,s)=>{let o;(o=e(i,s,t))!==!1&&(n[s]=o||i)}),Object.defineProperties(t,n)},RZ=t=>{b8(t,(e,r)=>{if(Oi(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=t[r];if(Oi(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},DZ=(t,e)=>{const r={},n=i=>{i.forEach(s=>{r[s]=!0})};return Df(t)?n(t):n(String(t).split(e)),r},BZ=()=>{},UZ=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e,Qv="abcdefghijklmnopqrstuvwxyz",d6="0123456789",w8={DIGIT:d6,ALPHA:Qv,ALPHA_DIGIT:Qv+Qv.toUpperCase()+d6},FZ=(t=16,e=w8.ALPHA_DIGIT)=>{let r="";const{length:n}=e;for(;t--;)r+=e[Math.random()*n|0];return r};function LZ(t){return!!(t&&Oi(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const zZ=t=>{const e=new Array(10),r=(n,i)=>{if(Ig(n)){if(e.indexOf(n)>=0)return;if(!("toJSON"in n)){e[i]=n;const s=Df(n)?[]:{};return Ep(n,(o,a)=>{const u=r(o,i+1);!Vh(u)&&(s[a]=u)}),e[i]=void 0,s}}return n};return r(t,0)},VZ=Ms("AsyncFunction"),WZ=t=>t&&(Ig(t)||Oi(t))&&Oi(t.then)&&Oi(t.catch),_8=((t,e)=>t?setImmediate:e?((r,n)=>(zu.addEventListener("message",({source:i,data:s})=>{i===zu&&s===r&&n.length&&n.shift()()},!1),i=>{n.push(i),zu.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",Oi(zu.postMessage)),HZ=typeof queueMicrotask<"u"?queueMicrotask.bind(zu):typeof process<"u"&&process.nextTick||_8;var ae={isArray:Df,isArrayBuffer:m8,isBuffer:uZ,isFormData:gZ,isArrayBufferView:cZ,isString:lZ,isNumber:y8,isBoolean:fZ,isObject:Ig,isPlainObject:um,isReadableStream:bZ,isRequest:wZ,isResponse:_Z,isHeaders:xZ,isUndefined:Vh,isDate:dZ,isFile:hZ,isBlob:pZ,isRegExp:NZ,isFunction:Oi,isStream:yZ,isURLSearchParams:vZ,isTypedArray:kZ,isFileList:mZ,forEach:Ep,merge:$1,extend:EZ,trim:SZ,stripBOM:OZ,inherits:CZ,toFlatObject:TZ,kindOf:Tg,kindOfTest:Ms,endsWith:PZ,toArray:IZ,forEachEntry:AZ,matchAll:jZ,isHTMLForm:MZ,hasOwnProperty:f6,hasOwnProp:f6,reduceDescriptors:b8,freezeMethods:RZ,toObjectSet:DZ,toCamelCase:$Z,noop:BZ,toFiniteNumber:UZ,findKey:g8,global:zu,isContextDefined:v8,ALPHABET:w8,generateString:FZ,isSpecCompliantForm:LZ,toJSONObject:zZ,isAsyncFn:VZ,isThenable:WZ,setImmediate:_8,asap:HZ};function bt(t,e,r,n,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),n&&(this.request=n),i&&(this.response=i,this.status=i.status?i.status:null)}ae.inherits(bt,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:ae.toJSONObject(this.config),code:this.code,status:this.status}}});const x8=bt.prototype,S8={};["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(t=>{S8[t]={value:t}});Object.defineProperties(bt,S8);Object.defineProperty(x8,"isAxiosError",{value:!0});bt.from=(t,e,r,n,i,s)=>{const o=Object.create(x8);return ae.toFlatObject(t,o,function(u){return u!==Error.prototype},a=>a!=="isAxiosError"),bt.call(o,t.message,e,r,n,i),o.cause=t,o.name=t.name,s&&Object.assign(o,s),o};var GZ=null;function N1(t){return ae.isPlainObject(t)||ae.isArray(t)}function E8(t){return ae.endsWith(t,"[]")?t.slice(0,-2):t}function h6(t,e,r){return t?t.concat(e).map(function(i,s){return i=E8(i),!r&&s?"["+i+"]":i}).join(r?".":""):e}function qZ(t){return ae.isArray(t)&&!t.some(N1)}const KZ=ae.toFlatObject(ae,{},null,function(e){return/^is[A-Z]/.test(e)});function kg(t,e,r){if(!ae.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,r=ae.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(g,x){return!ae.isUndefined(x[g])});const n=r.metaTokens,i=r.visitor||l,s=r.dots,o=r.indexes,u=(r.Blob||typeof Blob<"u"&&Blob)&&ae.isSpecCompliantForm(e);if(!ae.isFunction(i))throw new TypeError("visitor must be a function");function c(m){if(m===null)return"";if(ae.isDate(m))return m.toISOString();if(!u&&ae.isBlob(m))throw new bt("Blob is not supported. Use a Buffer instead.");return ae.isArrayBuffer(m)||ae.isTypedArray(m)?u&&typeof Blob=="function"?new Blob([m]):Buffer.from(m):m}function l(m,g,x){let _=m;if(m&&!x&&typeof m=="object"){if(ae.endsWith(g,"{}"))g=n?g:g.slice(0,-2),m=JSON.stringify(m);else if(ae.isArray(m)&&qZ(m)||(ae.isFileList(m)||ae.endsWith(g,"[]"))&&(_=ae.toArray(m)))return g=E8(g),_.forEach(function(O,D){!(ae.isUndefined(O)||O===null)&&e.append(o===!0?h6([g],D,s):o===null?g:g+"[]",c(O))}),!1}return N1(m)?!0:(e.append(h6(x,g,s),c(m)),!1)}const f=[],d=Object.assign(KZ,{defaultVisitor:l,convertValue:c,isVisitable:N1});function h(m,g){if(!ae.isUndefined(m)){if(f.indexOf(m)!==-1)throw Error("Circular reference detected in "+g.join("."));f.push(m),ae.forEach(m,function(_,S){(!(ae.isUndefined(_)||_===null)&&i.call(e,_,ae.isString(S)?S.trim():S,g,d))===!0&&h(_,g?g.concat(S):[S])}),f.pop()}}if(!ae.isObject(t))throw new TypeError("data must be an object");return h(t),e}function p6(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function fS(t,e){this._pairs=[],t&&kg(t,this,e)}const O8=fS.prototype;O8.append=function(e,r){this._pairs.push([e,r])};O8.toString=function(e){const r=e?function(n){return e.call(this,n,p6)}:p6;return this._pairs.map(function(i){return r(i[0])+"="+r(i[1])},"").join("&")};function XZ(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function C8(t,e,r){if(!e)return t;const n=r&&r.encode||XZ,i=r&&r.serialize;let s;if(i?s=i(e,r):s=ae.isURLSearchParams(e)?e.toString():new fS(e,r).toString(n),s){const o=t.indexOf("#");o!==-1&&(t=t.slice(0,o)),t+=(t.indexOf("?")===-1?"?":"&")+s}return t}class JZ{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){ae.forEach(this.handlers,function(n){n!==null&&e(n)})}}var m6=JZ,T8={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},YZ=typeof URLSearchParams<"u"?URLSearchParams:fS,QZ=typeof FormData<"u"?FormData:null,ZZ=typeof Blob<"u"?Blob:null,eee={isBrowser:!0,classes:{URLSearchParams:YZ,FormData:QZ,Blob:ZZ},protocols:["http","https","file","blob","url","data"]};const dS=typeof window<"u"&&typeof document<"u",R1=typeof navigator=="object"&&navigator||void 0,tee=dS&&(!R1||["ReactNative","NativeScript","NS"].indexOf(R1.product)<0),ree=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",nee=dS&&window.location.href||"http://localhost";var iee=Object.freeze({__proto__:null,hasBrowserEnv:dS,hasStandardBrowserWebWorkerEnv:ree,hasStandardBrowserEnv:tee,navigator:R1,origin:nee}),ci={...iee,...eee};function see(t,e){return kg(t,new ci.classes.URLSearchParams,Object.assign({visitor:function(r,n,i,s){return ci.isNode&&ae.isBuffer(r)?(this.append(n,r.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},e))}function oee(t){return ae.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function aee(t){const e={},r=Object.keys(t);let n;const i=r.length;let s;for(n=0;n=r.length;return o=!o&&ae.isArray(i)?i.length:o,u?(ae.hasOwnProp(i,o)?i[o]=[i[o],n]:i[o]=n,!a):((!i[o]||!ae.isObject(i[o]))&&(i[o]=[]),e(r,n,i[o],s)&&ae.isArray(i[o])&&(i[o]=aee(i[o])),!a)}if(ae.isFormData(t)&&ae.isFunction(t.entries)){const r={};return ae.forEachEntry(t,(n,i)=>{e(oee(n),i,r,0)}),r}return null}function uee(t,e,r){if(ae.isString(t))try{return(e||JSON.parse)(t),ae.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(0,JSON.stringify)(t)}const hS={transitional:T8,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){const n=r.getContentType()||"",i=n.indexOf("application/json")>-1,s=ae.isObject(e);if(s&&ae.isHTMLForm(e)&&(e=new FormData(e)),ae.isFormData(e))return i?JSON.stringify(P8(e)):e;if(ae.isArrayBuffer(e)||ae.isBuffer(e)||ae.isStream(e)||ae.isFile(e)||ae.isBlob(e)||ae.isReadableStream(e))return e;if(ae.isArrayBufferView(e))return e.buffer;if(ae.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(s){if(n.indexOf("application/x-www-form-urlencoded")>-1)return see(e,this.formSerializer).toString();if((a=ae.isFileList(e))||n.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return kg(a?{"files[]":e}:e,u&&new u,this.formSerializer)}}return s||i?(r.setContentType("application/json",!1),uee(e)):e}],transformResponse:[function(e){const r=this.transitional||hS.transitional,n=r&&r.forcedJSONParsing,i=this.responseType==="json";if(ae.isResponse(e)||ae.isReadableStream(e))return e;if(e&&ae.isString(e)&&(n&&!this.responseType||i)){const o=!(r&&r.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(a){if(o)throw a.name==="SyntaxError"?bt.from(a,bt.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ci.classes.FormData,Blob:ci.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ae.forEach(["delete","get","head","post","put","patch"],t=>{hS.headers[t]={}});var pS=hS;const cee=ae.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"]);var lee=t=>{const e={};let r,n,i;return t&&t.split(` +`).forEach(function(o){i=o.indexOf(":"),r=o.substring(0,i).trim().toLowerCase(),n=o.substring(i+1).trim(),!(!r||e[r]&&cee[r])&&(r==="set-cookie"?e[r]?e[r].push(n):e[r]=[n]:e[r]=e[r]?e[r]+", "+n:n)}),e};const y6=Symbol("internals");function ad(t){return t&&String(t).trim().toLowerCase()}function cm(t){return t===!1||t==null?t:ae.isArray(t)?t.map(cm):String(t)}function fee(t){const e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}const dee=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function Zv(t,e,r,n,i){if(ae.isFunction(n))return n.call(this,e,r);if(i&&(e=r),!!ae.isString(e)){if(ae.isString(n))return e.indexOf(n)!==-1;if(ae.isRegExp(n))return n.test(e)}}function hee(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,n)=>r.toUpperCase()+n)}function pee(t,e){const r=ae.toCamelCase(" "+e);["get","set","has"].forEach(n=>{Object.defineProperty(t,n+r,{value:function(i,s,o){return this[n].call(this,e,i,s,o)},configurable:!0})})}class Ag{constructor(e){e&&this.set(e)}set(e,r,n){const i=this;function s(a,u,c){const l=ad(u);if(!l)throw new Error("header name must be a non-empty string");const f=ae.findKey(i,l);(!f||i[f]===void 0||c===!0||c===void 0&&i[f]!==!1)&&(i[f||u]=cm(a))}const o=(a,u)=>ae.forEach(a,(c,l)=>s(c,l,u));if(ae.isPlainObject(e)||e instanceof this.constructor)o(e,r);else if(ae.isString(e)&&(e=e.trim())&&!dee(e))o(lee(e),r);else if(ae.isHeaders(e))for(const[a,u]of e.entries())s(u,a,n);else e!=null&&s(r,e,n);return this}get(e,r){if(e=ad(e),e){const n=ae.findKey(this,e);if(n){const i=this[n];if(!r)return i;if(r===!0)return fee(i);if(ae.isFunction(r))return r.call(this,i,n);if(ae.isRegExp(r))return r.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=ad(e),e){const n=ae.findKey(this,e);return!!(n&&this[n]!==void 0&&(!r||Zv(this,this[n],n,r)))}return!1}delete(e,r){const n=this;let i=!1;function s(o){if(o=ad(o),o){const a=ae.findKey(n,o);a&&(!r||Zv(n,n[a],a,r))&&(delete n[a],i=!0)}}return ae.isArray(e)?e.forEach(s):s(e),i}clear(e){const r=Object.keys(this);let n=r.length,i=!1;for(;n--;){const s=r[n];(!e||Zv(this,this[s],s,e,!0))&&(delete this[s],i=!0)}return i}normalize(e){const r=this,n={};return ae.forEach(this,(i,s)=>{const o=ae.findKey(n,s);if(o){r[o]=cm(i),delete r[s];return}const a=e?hee(s):String(s).trim();a!==s&&delete r[s],r[a]=cm(i),n[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const r=Object.create(null);return ae.forEach(this,(n,i)=>{n!=null&&n!==!1&&(r[i]=e&&ae.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){const n=new this(e);return r.forEach(i=>n.set(i)),n}static accessor(e){const n=(this[y6]=this[y6]={accessors:{}}).accessors,i=this.prototype;function s(o){const a=ad(o);n[a]||(pee(i,o),n[a]=!0)}return ae.isArray(e)?e.forEach(s):s(e),this}}Ag.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);ae.reduceDescriptors(Ag.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}});ae.freezeMethods(Ag);var Cs=Ag;function eb(t,e){const r=this||pS,n=e||r,i=Cs.from(n.headers);let s=n.data;return ae.forEach(t,function(a){s=a.call(r,s,i.normalize(),e?e.status:void 0)}),i.normalize(),s}function I8(t){return!!(t&&t.__CANCEL__)}function Bf(t,e,r){bt.call(this,t??"canceled",bt.ERR_CANCELED,e,r),this.name="CanceledError"}ae.inherits(Bf,bt,{__CANCEL__:!0});function k8(t,e,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new bt("Request failed with status code "+r.status,[bt.ERR_BAD_REQUEST,bt.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function mee(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function yee(t,e){t=t||10;const r=new Array(t),n=new Array(t);let i=0,s=0,o;return e=e!==void 0?e:1e3,function(u){const c=Date.now(),l=n[s];o||(o=c),r[i]=u,n[i]=c;let f=s,d=0;for(;f!==i;)d+=r[f++],f=f%t;if(i=(i+1)%t,i===s&&(s=(s+1)%t),c-o{r=l,i=null,s&&(clearTimeout(s),s=null),t.apply(null,c)};return[(...c)=>{const l=Date.now(),f=l-r;f>=n?o(c,l):(i=c,s||(s=setTimeout(()=>{s=null,o(i)},n-f)))},()=>i&&o(i)]}const vy=(t,e,r=3)=>{let n=0;const i=yee(50,250);return gee(s=>{const o=s.loaded,a=s.lengthComputable?s.total:void 0,u=o-n,c=i(u),l=o<=a;n=o;const f={loaded:o,total:a,progress:a?o/a:void 0,bytes:u,rate:c||void 0,estimated:c&&a&&l?(a-o)/c:void 0,event:s,lengthComputable:a!=null,[e?"download":"upload"]:!0};t(f)},r)},g6=(t,e)=>{const r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},v6=t=>(...e)=>ae.asap(()=>t(...e));var vee=ci.hasStandardBrowserEnv?function(){const e=ci.navigator&&/(msie|trident)/i.test(ci.navigator.userAgent),r=document.createElement("a");let n;function i(s){let o=s;return e&&(r.setAttribute("href",o),o=r.href),r.setAttribute("href",o),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:r.pathname.charAt(0)==="/"?r.pathname:"/"+r.pathname}}return n=i(window.location.href),function(o){const a=ae.isString(o)?i(o):o;return a.protocol===n.protocol&&a.host===n.host}}():function(){return function(){return!0}}(),bee=ci.hasStandardBrowserEnv?{write(t,e,r,n,i,s){const o=[t+"="+encodeURIComponent(e)];ae.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),ae.isString(n)&&o.push("path="+n),ae.isString(i)&&o.push("domain="+i),s===!0&&o.push("secure"),document.cookie=o.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function wee(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function _ee(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function A8(t,e){return t&&!wee(e)?_ee(t,e):e}const b6=t=>t instanceof Cs?{...t}:t;function vc(t,e){e=e||{};const r={};function n(c,l,f){return ae.isPlainObject(c)&&ae.isPlainObject(l)?ae.merge.call({caseless:f},c,l):ae.isPlainObject(l)?ae.merge({},l):ae.isArray(l)?l.slice():l}function i(c,l,f){if(ae.isUndefined(l)){if(!ae.isUndefined(c))return n(void 0,c,f)}else return n(c,l,f)}function s(c,l){if(!ae.isUndefined(l))return n(void 0,l)}function o(c,l){if(ae.isUndefined(l)){if(!ae.isUndefined(c))return n(void 0,c)}else return n(void 0,l)}function a(c,l,f){if(f in e)return n(c,l);if(f in t)return n(void 0,c)}const u={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(c,l)=>i(b6(c),b6(l),!0)};return ae.forEach(Object.keys(Object.assign({},t,e)),function(l){const f=u[l]||i,d=f(t[l],e[l],l);ae.isUndefined(d)&&f!==a||(r[l]=d)}),r}var j8=t=>{const e=vc({},t);let{data:r,withXSRFToken:n,xsrfHeaderName:i,xsrfCookieName:s,headers:o,auth:a}=e;e.headers=o=Cs.from(o),e.url=C8(A8(e.baseURL,e.url),t.params,t.paramsSerializer),a&&o.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let u;if(ae.isFormData(r)){if(ci.hasStandardBrowserEnv||ci.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if((u=o.getContentType())!==!1){const[c,...l]=u?u.split(";").map(f=>f.trim()).filter(Boolean):[];o.setContentType([c||"multipart/form-data",...l].join("; "))}}if(ci.hasStandardBrowserEnv&&(n&&ae.isFunction(n)&&(n=n(e)),n||n!==!1&&vee(e.url))){const c=i&&s&&bee.read(s);c&&o.set(i,c)}return e};const xee=typeof XMLHttpRequest<"u";var See=xee&&function(t){return new Promise(function(r,n){const i=j8(t);let s=i.data;const o=Cs.from(i.headers).normalize();let{responseType:a,onUploadProgress:u,onDownloadProgress:c}=i,l,f,d,h,m;function g(){h&&h(),m&&m(),i.cancelToken&&i.cancelToken.unsubscribe(l),i.signal&&i.signal.removeEventListener("abort",l)}let x=new XMLHttpRequest;x.open(i.method.toUpperCase(),i.url,!0),x.timeout=i.timeout;function _(){if(!x)return;const O=Cs.from("getAllResponseHeaders"in x&&x.getAllResponseHeaders()),z={data:!a||a==="text"||a==="json"?x.responseText:x.response,status:x.status,statusText:x.statusText,headers:O,config:t,request:x};k8(function(K){r(K),g()},function(K){n(K),g()},z),x=null}"onloadend"in x?x.onloadend=_:x.onreadystatechange=function(){!x||x.readyState!==4||x.status===0&&!(x.responseURL&&x.responseURL.indexOf("file:")===0)||setTimeout(_)},x.onabort=function(){x&&(n(new bt("Request aborted",bt.ECONNABORTED,t,x)),x=null)},x.onerror=function(){n(new bt("Network Error",bt.ERR_NETWORK,t,x)),x=null},x.ontimeout=function(){let D=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const z=i.transitional||T8;i.timeoutErrorMessage&&(D=i.timeoutErrorMessage),n(new bt(D,z.clarifyTimeoutError?bt.ETIMEDOUT:bt.ECONNABORTED,t,x)),x=null},s===void 0&&o.setContentType(null),"setRequestHeader"in x&&ae.forEach(o.toJSON(),function(D,z){x.setRequestHeader(z,D)}),ae.isUndefined(i.withCredentials)||(x.withCredentials=!!i.withCredentials),a&&a!=="json"&&(x.responseType=i.responseType),c&&([d,m]=vy(c,!0),x.addEventListener("progress",d)),u&&x.upload&&([f,h]=vy(u),x.upload.addEventListener("progress",f),x.upload.addEventListener("loadend",h)),(i.cancelToken||i.signal)&&(l=O=>{x&&(n(!O||O.type?new Bf(null,t,x):O),x.abort(),x=null)},i.cancelToken&&i.cancelToken.subscribe(l),i.signal&&(i.signal.aborted?l():i.signal.addEventListener("abort",l)));const S=mee(i.url);if(S&&ci.protocols.indexOf(S)===-1){n(new bt("Unsupported protocol "+S+":",bt.ERR_BAD_REQUEST,t));return}x.send(s||null)})};const Eee=(t,e)=>{const{length:r}=t=t?t.filter(Boolean):[];if(e||r){let n=new AbortController,i;const s=function(c){if(!i){i=!0,a();const l=c instanceof Error?c:this.reason;n.abort(l instanceof bt?l:new Bf(l instanceof Error?l.message:l))}};let o=e&&setTimeout(()=>{o=null,s(new bt(`timeout ${e} of ms exceeded`,bt.ETIMEDOUT))},e);const a=()=>{t&&(o&&clearTimeout(o),o=null,t.forEach(c=>{c.unsubscribe?c.unsubscribe(s):c.removeEventListener("abort",s)}),t=null)};t.forEach(c=>c.addEventListener("abort",s));const{signal:u}=n;return u.unsubscribe=()=>ae.asap(a),u}};var Oee=Eee;const Cee=function*(t,e){let r=t.byteLength;if(r{const i=Tee(t,e);let s=0,o,a=u=>{o||(o=!0,n&&n(u))};return new ReadableStream({async pull(u){try{const{done:c,value:l}=await i.next();if(c){a(),u.close();return}let f=l.byteLength;if(r){let d=s+=f;r(d)}u.enqueue(new Uint8Array(l))}catch(c){throw a(c),c}},cancel(u){return a(u),i.return()}},{highWaterMark:2})},jg=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",M8=jg&&typeof ReadableStream=="function",Iee=jg&&(typeof TextEncoder=="function"?(t=>e=>t.encode(e))(new TextEncoder):async t=>new Uint8Array(await new Response(t).arrayBuffer())),$8=(t,...e)=>{try{return!!t(...e)}catch{return!1}},kee=M8&&$8(()=>{let t=!1;const e=new Request(ci.origin,{body:new ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type");return t&&!e}),_6=64*1024,D1=M8&&$8(()=>ae.isReadableStream(new Response("").body)),by={stream:D1&&(t=>t.body)};jg&&(t=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!by[e]&&(by[e]=ae.isFunction(t[e])?r=>r[e]():(r,n)=>{throw new bt(`Response type '${e}' is not supported`,bt.ERR_NOT_SUPPORT,n)})})})(new Response);const Aee=async t=>{if(t==null)return 0;if(ae.isBlob(t))return t.size;if(ae.isSpecCompliantForm(t))return(await new Request(ci.origin,{method:"POST",body:t}).arrayBuffer()).byteLength;if(ae.isArrayBufferView(t)||ae.isArrayBuffer(t))return t.byteLength;if(ae.isURLSearchParams(t)&&(t=t+""),ae.isString(t))return(await Iee(t)).byteLength},jee=async(t,e)=>{const r=ae.toFiniteNumber(t.getContentLength());return r??Aee(e)};var Mee=jg&&(async t=>{let{url:e,method:r,data:n,signal:i,cancelToken:s,timeout:o,onDownloadProgress:a,onUploadProgress:u,responseType:c,headers:l,withCredentials:f="same-origin",fetchOptions:d}=j8(t);c=c?(c+"").toLowerCase():"text";let h=Oee([i,s&&s.toAbortSignal()],o),m;const g=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let x;try{if(u&&kee&&r!=="get"&&r!=="head"&&(x=await jee(l,n))!==0){let z=new Request(e,{method:"POST",body:n,duplex:"half"}),G;if(ae.isFormData(n)&&(G=z.headers.get("content-type"))&&l.setContentType(G),z.body){const[K,J]=g6(x,vy(v6(u)));n=w6(z.body,_6,K,J)}}ae.isString(f)||(f=f?"include":"omit");const _="credentials"in Request.prototype;m=new Request(e,{...d,signal:h,method:r.toUpperCase(),headers:l.normalize().toJSON(),body:n,duplex:"half",credentials:_?f:void 0});let S=await fetch(m);const O=D1&&(c==="stream"||c==="response");if(D1&&(a||O&&g)){const z={};["status","statusText","headers"].forEach(fe=>{z[fe]=S[fe]});const G=ae.toFiniteNumber(S.headers.get("content-length")),[K,J]=a&&g6(G,vy(v6(a),!0))||[];S=new Response(w6(S.body,_6,K,()=>{J&&J(),g&&g()}),z)}c=c||"text";let D=await by[ae.findKey(by,c)||"text"](S,t);return!O&&g&&g(),await new Promise((z,G)=>{k8(z,G,{data:D,headers:Cs.from(S.headers),status:S.status,statusText:S.statusText,config:t,request:m})})}catch(_){throw g&&g(),_&&_.name==="TypeError"&&/fetch/i.test(_.message)?Object.assign(new bt("Network Error",bt.ERR_NETWORK,t,m),{cause:_.cause||_}):bt.from(_,_&&_.code,t,m)}});const B1={http:GZ,xhr:See,fetch:Mee};ae.forEach(B1,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const x6=t=>`- ${t}`,$ee=t=>ae.isFunction(t)||t===null||t===!1;var N8={getAdapter:t=>{t=ae.isArray(t)?t:[t];const{length:e}=t;let r,n;const i={};for(let s=0;s`adapter ${a} `+(u===!1?"is not supported by the environment":"is not available in the build"));let o=e?s.length>1?`since : +`+s.map(x6).join(` +`):" "+x6(s[0]):"as no adapter specified";throw new bt("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return n},adapters:B1};function tb(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new Bf(null,t)}function S6(t){return tb(t),t.headers=Cs.from(t.headers),t.data=eb.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),N8.getAdapter(t.adapter||pS.adapter)(t).then(function(n){return tb(t),n.data=eb.call(t,t.transformResponse,n),n.headers=Cs.from(n.headers),n},function(n){return I8(n)||(tb(t),n&&n.response&&(n.response.data=eb.call(t,t.transformResponse,n.response),n.response.headers=Cs.from(n.response.headers))),Promise.reject(n)})}const R8="1.7.7",mS={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{mS[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const E6={};mS.transitional=function(e,r,n){function i(s,o){return"[Axios v"+R8+"] Transitional option '"+s+"'"+o+(n?". "+n:"")}return(s,o,a)=>{if(e===!1)throw new bt(i(o," has been removed"+(r?" in "+r:"")),bt.ERR_DEPRECATED);return r&&!E6[o]&&(E6[o]=!0,console.warn(i(o," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(s,o,a):!0}};function Nee(t,e,r){if(typeof t!="object")throw new bt("options must be an object",bt.ERR_BAD_OPTION_VALUE);const n=Object.keys(t);let i=n.length;for(;i-- >0;){const s=n[i],o=e[s];if(o){const a=t[s],u=a===void 0||o(a,s,t);if(u!==!0)throw new bt("option "+s+" must be "+u,bt.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new bt("Unknown option "+s,bt.ERR_BAD_OPTION)}}var U1={assertOptions:Nee,validators:mS};const ia=U1.validators;class wy{constructor(e){this.defaults=e,this.interceptors={request:new m6,response:new m6}}async request(e,r){try{return await this._request(e,r)}catch(n){if(n instanceof Error){let i;Error.captureStackTrace?Error.captureStackTrace(i={}):i=new Error;const s=i.stack?i.stack.replace(/^.+\n/,""):"";try{n.stack?s&&!String(n.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(n.stack+=` +`+s):n.stack=s}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=vc(this.defaults,r);const{transitional:n,paramsSerializer:i,headers:s}=r;n!==void 0&&U1.assertOptions(n,{silentJSONParsing:ia.transitional(ia.boolean),forcedJSONParsing:ia.transitional(ia.boolean),clarifyTimeoutError:ia.transitional(ia.boolean)},!1),i!=null&&(ae.isFunction(i)?r.paramsSerializer={serialize:i}:U1.assertOptions(i,{encode:ia.function,serialize:ia.function},!0)),r.method=(r.method||this.defaults.method||"get").toLowerCase();let o=s&&ae.merge(s.common,s[r.method]);s&&ae.forEach(["delete","get","head","post","put","patch","common"],m=>{delete s[m]}),r.headers=Cs.concat(o,s);const a=[];let u=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(r)===!1||(u=u&&g.synchronous,a.unshift(g.fulfilled,g.rejected))});const c=[];this.interceptors.response.forEach(function(g){c.push(g.fulfilled,g.rejected)});let l,f=0,d;if(!u){const m=[S6.bind(this),void 0];for(m.unshift.apply(m,a),m.push.apply(m,c),d=m.length,l=Promise.resolve(r);f{if(!n._listeners)return;let s=n._listeners.length;for(;s-- >0;)n._listeners[s](i);n._listeners=null}),this.promise.then=i=>{let s;const o=new Promise(a=>{n.subscribe(a),s=a}).then(i);return o.cancel=function(){n.unsubscribe(s)},o},e(function(s,o,a){n.reason||(n.reason=new Bf(s,o,a),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new yS(function(i){e=i}),cancel:e}}}var Ree=yS;function Dee(t){return function(r){return t.apply(null,r)}}function Bee(t){return ae.isObject(t)&&t.isAxiosError===!0}const F1={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(F1).forEach(([t,e])=>{F1[e]=t});var Uee=F1;function D8(t){const e=new lm(t),r=p8(lm.prototype.request,e);return ae.extend(r,lm.prototype,e,{allOwnKeys:!0}),ae.extend(r,e,null,{allOwnKeys:!0}),r.create=function(i){return D8(vc(t,i))},r}const Yr=D8(pS);Yr.Axios=lm;Yr.CanceledError=Bf;Yr.CancelToken=Ree;Yr.isCancel=I8;Yr.VERSION=R8;Yr.toFormData=kg;Yr.AxiosError=bt;Yr.Cancel=Yr.CanceledError;Yr.all=function(e){return Promise.all(e)};Yr.spread=Dee;Yr.isAxiosError=Bee;Yr.mergeConfig=vc;Yr.AxiosHeaders=Cs;Yr.formToJSON=t=>P8(ae.isHTMLForm(t)?new FormData(t):t);Yr.getAdapter=N8.getAdapter;Yr.HttpStatusCode=Uee;Yr.default=Yr;var gS=Yr,B8={exports:{}},vS=Object.defineProperty,Fee=Object.getOwnPropertyDescriptor,Lee=Object.getOwnPropertyNames,zee=Object.prototype.hasOwnProperty,Vee=(t,e)=>{for(var r in e)vS(t,r,{get:e[r],enumerable:!0})},Wee=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Lee(e))!zee.call(t,i)&&i!==r&&vS(t,i,{get:()=>e[i],enumerable:!(n=Fee(e,i))||n.enumerable});return t},Hee=t=>Wee(vS({},"__esModule",{value:!0}),t),U8={};Vee(U8,{PACKAGE_VERSION:()=>qee,TARGETED_RPC_VERSION:()=>Kee});var Gee=Hee(U8);const qee="1.15.0",Kee="1.39.0";var bS=Object.defineProperty,Xee=Object.getOwnPropertyDescriptor,Jee=Object.getOwnPropertyNames,Yee=Object.prototype.hasOwnProperty,Qee=(t,e)=>{for(var r in e)bS(t,r,{get:e[r],enumerable:!0})},Zee=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Jee(e))!Yee.call(t,i)&&i!==r&&bS(t,i,{get:()=>e[i],enumerable:!(n=Xee(e,i))||n.enumerable});return t},ete=t=>Zee(bS({},"__esModule",{value:!0}),t),F8={};Qee(F8,{JsonRpcError:()=>rte,SuiHTTPStatusError:()=>nte,SuiHTTPTransportError:()=>_S});var wS=ete(F8);const tte={"-32700":"ParseError","-32701":"OversizedRequest","-32702":"OversizedResponse","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError","-32604":"ServerBusy","-32000":"CallExecutionFailed","-32001":"UnknownError","-32003":"SubscriptionClosed","-32004":"SubscriptionClosedWithError","-32005":"BatchesNotSupported","-32006":"TooManySubscriptions","-32050":"TransientError","-32002":"TransactionExecutionClientError"};class _S extends Error{}class rte extends _S{constructor(e,r){super(e),this.code=r,this.type=tte[r]??"ServerError"}}class nte extends _S{constructor(e,r,n){super(e),this.status=r,this.statusText=n}}var xS=Object.defineProperty,ite=Object.getOwnPropertyDescriptor,ste=Object.getOwnPropertyNames,ote=Object.prototype.hasOwnProperty,L8=t=>{throw TypeError(t)},ate=(t,e)=>{for(var r in e)xS(t,r,{get:e[r],enumerable:!0})},ute=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ste(e))!ote.call(t,i)&&i!==r&&xS(t,i,{get:()=>e[i],enumerable:!(n=ite(e,i))||n.enumerable});return t},cte=t=>ute(xS({},"__esModule",{value:!0}),t),SS=(t,e,r)=>e.has(t)||L8("Cannot "+r),Fr=(t,e,r)=>(SS(t,e,"read from private field"),r?r.call(t):e.get(t)),pu=(t,e,r)=>e.has(t)?L8("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Ul=(t,e,r,n)=>(SS(t,e,"write to private field"),e.set(t,r),r),z8=(t,e,r)=>(SS(t,e,"access private method"),r),lte=(t,e,r,n)=>({set _(i){Ul(t,e,i)},get _(){return Fr(t,e,n)}}),V8={};ate(V8,{DEFAULT_CLIENT_OPTIONS:()=>G8,WebsocketClient:()=>pte});var fte=cte(V8),dte=wS,Pu,th,To,Vu,Wh,Fl,_y,W8,H8;function hte(t){const e=new URL(t);return e.protocol=e.protocol.replace("http","ws"),e.toString()}const G8={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5};class pte{constructor(e,r={}){if(pu(this,_y),pu(this,Pu,0),pu(this,th,0),pu(this,To,null),pu(this,Vu,null),pu(this,Wh,new Set),pu(this,Fl,new Map),this.endpoint=e,this.options={...G8,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=hte(this.endpoint))}async makeRequest(e,r){const n=await z8(this,_y,W8).call(this);return new Promise((i,s)=>{Ul(this,Pu,Fr(this,Pu)+1),Fr(this,Fl).set(Fr(this,Pu),{resolve:i,reject:s,timeout:setTimeout(()=>{Fr(this,Fl).delete(Fr(this,Pu)),s(new Error(`Request timeout: ${e}`))},this.options.callTimeout)}),n.send(JSON.stringify({jsonrpc:"2.0",id:Fr(this,Pu),method:e,params:r}))}).then(({error:i,result:s})=>{if(i)throw new dte.JsonRpcError(i.message,i.code);return s})}async subscribe(e){const r=new mte(e);return Fr(this,Wh).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}}Pu=new WeakMap;th=new WeakMap;To=new WeakMap;Vu=new WeakMap;Wh=new WeakMap;Fl=new WeakMap;_y=new WeakSet;W8=function(){return Fr(this,Vu)?Fr(this,Vu):(Ul(this,Vu,new Promise(t=>{var e;(e=Fr(this,To))==null||e.close(),Ul(this,To,new this.options.WebSocketConstructor(this.endpoint)),Fr(this,To).addEventListener("open",()=>{Ul(this,th,0),t(Fr(this,To))}),Fr(this,To).addEventListener("close",()=>{lte(this,th)._++,Fr(this,th)<=this.options.maxReconnects&&setTimeout(()=>{z8(this,_y,H8).call(this)},this.options.reconnectTimeout)}),Fr(this,To).addEventListener("message",({data:r})=>{let n;try{n=JSON.parse(r)}catch(i){console.error(new Error(`Failed to parse RPC message: ${r}`,{cause:i}));return}if("id"in n&&n.id!=null&&Fr(this,Fl).has(n.id)){const{resolve:i,timeout:s}=Fr(this,Fl).get(n.id);clearTimeout(s),i(n)}else if("params"in n){const{params:i}=n;Fr(this,Wh).forEach(s=>{s.subscriptionId===i.subscription&&i.subscription===s.subscriptionId&&s.onMessage(i.result)})}})})),Fr(this,Vu))};H8=async function(){var t;return(t=Fr(this,To))==null||t.close(),Ul(this,Vu,null),Promise.allSettled([...Fr(this,Wh)].map(e=>e.subscribe(this)))};class mte{constructor(e){this.subscriptionId=null,this.subscribed=!1,this.input=e}onMessage(e){this.subscribed&&this.input.onMessage(e)}async unsubscribe(e){const{subscriptionId:r}=this;return this.subscribed=!1,r==null?!1:(this.subscriptionId=null,e.makeRequest(this.input.unsubscribe,[r]))}async subscribe(e){this.subscriptionId=null,this.subscribed=!0;const r=await e.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=r)}}var ES=Object.defineProperty,yte=Object.getOwnPropertyDescriptor,gte=Object.getOwnPropertyNames,vte=Object.prototype.hasOwnProperty,q8=t=>{throw TypeError(t)},bte=(t,e)=>{for(var r in e)ES(t,r,{get:e[r],enumerable:!0})},wte=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of gte(e))!vte.call(t,i)&&i!==r&&ES(t,i,{get:()=>e[i],enumerable:!(n=yte(e,i))||n.enumerable});return t},_te=t=>wte(ES({},"__esModule",{value:!0}),t),OS=(t,e,r)=>e.has(t)||q8("Cannot "+r),Li=(t,e,r)=>(OS(t,e,"read from private field"),r?r.call(t):e.get(t)),h0=(t,e,r)=>e.has(t)?q8("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),L1=(t,e,r,n)=>(OS(t,e,"write to private field"),e.set(t,r),r),xte=(t,e,r)=>(OS(t,e,"access private method"),r),K8={};bte(K8,{SuiHTTPTransport:()=>Ete});var X8=_te(K8),O6=Gee,C6=wS,Ste=fte,jd,vs,rh,z1,J8;class Ete{constructor(e){h0(this,z1),h0(this,jd,0),h0(this,vs),h0(this,rh),L1(this,vs,e)}fetch(e,r){const n=Li(this,vs).fetch??fetch;if(!n)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return n(e,r)}async request(e){var i,s;L1(this,jd,Li(this,jd)+1);const r=await this.fetch(((i=Li(this,vs).rpc)==null?void 0:i.url)??Li(this,vs).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":O6.PACKAGE_VERSION,"Client-Target-Api-Version":O6.TARGETED_RPC_VERSION,"Client-Request-Method":e.method,...(s=Li(this,vs).rpc)==null?void 0:s.headers},body:JSON.stringify({jsonrpc:"2.0",id:Li(this,jd),method:e.method,params:e.params})});if(!r.ok)throw new C6.SuiHTTPStatusError(`Unexpected status code: ${r.status}`,r.status,r.statusText);const n=await r.json();if("error"in n&&n.error!=null)throw new C6.JsonRpcError(n.error.message,n.error.code);return n.result}async subscribe(e){const r=await xte(this,z1,J8).call(this).subscribe(e);return async()=>!!await r()}}jd=new WeakMap;vs=new WeakMap;rh=new WeakMap;z1=new WeakSet;J8=function(){var t;if(!Li(this,rh)){const e=Li(this,vs).WebSocketConstructor??WebSocket;if(!e)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");L1(this,rh,new Ste.WebsocketClient(((t=Li(this,vs).websocket)==null?void 0:t.url)??Li(this,vs).url,{WebSocketConstructor:e,...Li(this,vs).websocket}))}return Li(this,rh)};var CS=Object.defineProperty,Ote=Object.getOwnPropertyDescriptor,Cte=Object.getOwnPropertyNames,Tte=Object.prototype.hasOwnProperty,Pte=(t,e)=>{for(var r in e)CS(t,r,{get:e[r],enumerable:!0})},Ite=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Cte(e))!Tte.call(t,i)&&i!==r&&CS(t,i,{get:()=>e[i],enumerable:!(n=Ote(e,i))||n.enumerable});return t},kte=t=>Ite(CS({},"__esModule",{value:!0}),t),Y8={};Pte(Y8,{getFullnodeUrl:()=>jte});var Ate=kte(Y8);function jte(t){switch(t){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw new Error(`Unknown network: ${t}`)}}var Q8={exports:{}},Z8=Object.defineProperty,Mte=Object.getOwnPropertyDescriptor,$te=Object.getOwnPropertyNames,Nte=Object.prototype.hasOwnProperty,Rte=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $te(e))!Nte.call(t,i)&&i!==r&&Z8(t,i,{get:()=>e[i],enumerable:!(n=Mte(e,i))||n.enumerable});return t},Dte=t=>Rte(Z8({},"__esModule",{value:!0}),t),Bte={},Ute=Dte(Bte),e$=Object.defineProperty,Fte=Object.getOwnPropertyDescriptor,Lte=Object.getOwnPropertyNames,zte=Object.prototype.hasOwnProperty,Vte=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Lte(e))!zte.call(t,i)&&i!==r&&e$(t,i,{get:()=>e[i],enumerable:!(n=Fte(e,i))||n.enumerable});return t},Wte=t=>Vte(e$({},"__esModule",{value:!0}),t),Hte={},Gte=Wte(Hte),t$=Object.defineProperty,qte=Object.getOwnPropertyDescriptor,Kte=Object.getOwnPropertyNames,Xte=Object.prototype.hasOwnProperty,Jte=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Kte(e))!Xte.call(t,i)&&i!==r&&t$(t,i,{get:()=>e[i],enumerable:!(n=qte(e,i))||n.enumerable});return t},Yte=t=>Jte(t$({},"__esModule",{value:!0}),t),Qte={},Zte=Yte(Qte),r$=Object.defineProperty,ere=Object.getOwnPropertyDescriptor,tre=Object.getOwnPropertyNames,rre=Object.prototype.hasOwnProperty,nre=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of tre(e))!rre.call(t,i)&&i!==r&&r$(t,i,{get:()=>e[i],enumerable:!(n=ere(e,i))||n.enumerable});return t},ire=t=>nre(r$({},"__esModule",{value:!0}),t),sre={},ore=ire(sre),n$=Object.defineProperty,are=Object.getOwnPropertyDescriptor,ure=Object.getOwnPropertyNames,cre=Object.prototype.hasOwnProperty,lre=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ure(e))!cre.call(t,i)&&i!==r&&n$(t,i,{get:()=>e[i],enumerable:!(n=are(e,i))||n.enumerable});return t},fre=t=>lre(n$({},"__esModule",{value:!0}),t),dre={},hre=fre(dre),i$=Object.defineProperty,pre=Object.getOwnPropertyDescriptor,mre=Object.getOwnPropertyNames,yre=Object.prototype.hasOwnProperty,gre=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of mre(e))!yre.call(t,i)&&i!==r&&i$(t,i,{get:()=>e[i],enumerable:!(n=pre(e,i))||n.enumerable});return t},vre=t=>gre(i$({},"__esModule",{value:!0}),t),bre={},wre=vre(bre);(function(t){var e=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s=(c,l,f,d)=>{if(l&&typeof l=="object"||typeof l=="function")for(let h of n(l))!i.call(c,h)&&h!==f&&e(c,h,{get:()=>l[h],enumerable:!(d=r(l,h))||d.enumerable});return c},o=(c,l,f)=>(s(c,l,"default"),f&&s(f,l,"default")),a=c=>s(e({},"__esModule",{value:!0}),c),u={};t.exports=a(u),o(u,Ute,t.exports),o(u,Gte,t.exports),o(u,Zte,t.exports),o(u,ore,t.exports),o(u,hre,t.exports),o(u,wre,t.exports)})(Q8);var _re=Q8.exports;const En=Ny(QF);var TS=Object.defineProperty,xre=Object.getOwnPropertyDescriptor,Sre=Object.getOwnPropertyNames,Ere=Object.prototype.hasOwnProperty,Ore=(t,e)=>{for(var r in e)TS(t,r,{get:e[r],enumerable:!0})},Cre=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Sre(e))!Ere.call(t,i)&&i!==r&&TS(t,i,{get:()=>e[i],enumerable:!(n=xre(e,i))||n.enumerable});return t},Tre=t=>Cre(TS({},"__esModule",{value:!0}),t),s$={};Ore(s$,{SUI_ADDRESS_LENGTH:()=>PS,isValidSuiAddress:()=>a$,isValidSuiObjectId:()=>kre,isValidTransactionDigest:()=>Ire,normalizeStructTag:()=>u$,normalizeSuiAddress:()=>kS,normalizeSuiObjectId:()=>jre,parseStructTag:()=>IS});var fi=Tre(s$),o$=En;const Pre=32;function Ire(t){try{return(0,o$.fromBase58)(t).length===Pre}catch{return!1}}const PS=32;function a$(t){return Mre(t)&&$re(t)===PS}function kre(t){return a$(t)}function Are(t){return t.includes("::")?IS(t):t}function IS(t){const[e,r]=t.split("::"),n=t.slice(e.length+r.length+4),i=n.includes("<")?n.slice(0,n.indexOf("<")):n,s=n.includes("<")?(0,o$.splitGenericParameters)(n.slice(n.indexOf("<")+1,n.lastIndexOf(">"))).map(o=>Are(o.trim())):[];return{address:kS(e),module:r,name:i,typeParams:s}}function u$(t){const{address:e,module:r,name:n,typeParams:i}=typeof t=="string"?IS(t):t,s=(i==null?void 0:i.length)>0?`<${i.map(o=>typeof o=="string"?o:u$(o)).join(",")}>`:"";return`${e}::${r}::${n}${s}`}function kS(t,e=!1){let r=t.toLowerCase();return!e&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(PS*2,"0")}`}function jre(t,e=!1){return kS(t,e)}function Mre(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function $re(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}var AS=Object.defineProperty,Nre=Object.getOwnPropertyDescriptor,Rre=Object.getOwnPropertyNames,Dre=Object.prototype.hasOwnProperty,Bre=(t,e)=>{for(var r in e)AS(t,r,{get:e[r],enumerable:!0})},Ure=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Rre(e))!Dre.call(t,i)&&i!==r&&AS(t,i,{get:()=>e[i],enumerable:!(n=Nre(e,i))||n.enumerable});return t},Fre=t=>Ure(AS({},"__esModule",{value:!0}),t),c$={};Bre(c$,{TypeTagSerializer:()=>Hre});var l$=Fre(c$),Lre=En,zre=fi;const Vre=/^vector<(.+)>$/,Wre=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;let Hre=class Zc{static parseFromStr(e,r=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const n=e.match(Vre);if(n)return{vector:Zc.parseFromStr(n[1],r)};const i=e.match(Wre);if(i)return{struct:{address:r?(0,zre.normalizeSuiAddress)(i[1]):i[1],module:i[2],name:i[3],typeParams:i[5]===void 0?[]:Zc.parseStructTypeArgs(i[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,r=!1){return(0,Lre.splitGenericParameters)(e).map(n=>Zc.parseFromStr(n,r))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${Zc.tagToString(e.vector)}>`;if("struct"in e){const r=e.struct,n=r.typeParams.map(Zc.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${n?`<${n}>`:""}`}throw new Error("Invalid TypeTag")}};var jS=Object.defineProperty,Gre=Object.getOwnPropertyDescriptor,qre=Object.getOwnPropertyNames,Kre=Object.prototype.hasOwnProperty,Xre=(t,e)=>{for(var r in e)jS(t,r,{get:e[r],enumerable:!0})},Jre=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of qre(e))!Kre.call(t,i)&&i!==r&&jS(t,i,{get:()=>e[i],enumerable:!(n=Gre(e,i))||n.enumerable});return t},Yre=t=>Jre(jS({},"__esModule",{value:!0}),t),f$={};Xre(f$,{Address:()=>io,AppId:()=>P$,Argument:()=>Vs,CallArg:()=>y$,Command:()=>v$,CompressedSignature:()=>A$,GasData:()=>S$,Intent:()=>I$,IntentMessage:()=>k$,IntentScope:()=>C$,IntentVersion:()=>T$,MultiSig:()=>ene,MultiSigPkMap:()=>M$,MultiSigPublicKey:()=>$$,ObjectArg:()=>m$,ObjectDigest:()=>h$,ProgrammableMoveCall:()=>g$,ProgrammableTransaction:()=>b$,PublicKey:()=>j$,SenderSignedData:()=>tne,SenderSignedTransaction:()=>R$,SharedObjectRef:()=>p$,StructTag:()=>x$,SuiObjectRef:()=>xy,TransactionData:()=>O$,TransactionDataV1:()=>E$,TransactionExpiration:()=>_$,TransactionKind:()=>w$,TypeTag:()=>$S,base64String:()=>N$});var d$=Yre(f$),ye=En,ud=fi,T6=l$;function Qre(t){return ye.bcs.u64({name:"unsafe_u64",...t}).transform({input:e=>e,output:e=>Number(e)})}function Zre(t){return ye.bcs.enum("Option",{None:null,Some:t})}const io=ye.bcs.bytes(ud.SUI_ADDRESS_LENGTH).transform({validate:t=>{const e=typeof t=="string"?t:(0,ye.toHex)(t);if(!e||!(0,ud.isValidSuiAddress)((0,ud.normalizeSuiAddress)(e)))throw new Error(`Invalid Sui address ${e}`)},input:t=>typeof t=="string"?(0,ye.fromHex)((0,ud.normalizeSuiAddress)(t)):t,output:t=>(0,ud.normalizeSuiAddress)((0,ye.toHex)(t))}),h$=ye.bcs.vector(ye.bcs.u8()).transform({name:"ObjectDigest",input:t=>(0,ye.fromBase58)(t),output:t=>(0,ye.toBase58)(new Uint8Array(t)),validate:t=>{if((0,ye.fromBase58)(t).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),xy=ye.bcs.struct("SuiObjectRef",{objectId:io,version:ye.bcs.u64(),digest:h$}),p$=ye.bcs.struct("SharedObjectRef",{objectId:io,initialSharedVersion:ye.bcs.u64(),mutable:ye.bcs.bool()}),m$=ye.bcs.enum("ObjectArg",{ImmOrOwnedObject:xy,SharedObject:p$,Receiving:xy}),y$=ye.bcs.enum("CallArg",{Pure:ye.bcs.struct("Pure",{bytes:ye.bcs.vector(ye.bcs.u8()).transform({input:t=>typeof t=="string"?(0,ye.fromBase64)(t):t,output:t=>(0,ye.toBase64)(new Uint8Array(t))})}),Object:m$}),MS=ye.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:ye.bcs.lazy(()=>MS),struct:ye.bcs.lazy(()=>x$),u16:null,u32:null,u256:null}),$S=MS.transform({input:t=>typeof t=="string"?T6.TypeTagSerializer.parseFromStr(t,!0):t,output:t=>T6.TypeTagSerializer.tagToString(t)}),Vs=ye.bcs.enum("Argument",{GasCoin:null,Input:ye.bcs.u16(),Result:ye.bcs.u16(),NestedResult:ye.bcs.tuple([ye.bcs.u16(),ye.bcs.u16()])}),g$=ye.bcs.struct("ProgrammableMoveCall",{package:io,module:ye.bcs.string(),function:ye.bcs.string(),typeArguments:ye.bcs.vector($S),arguments:ye.bcs.vector(Vs)}),v$=ye.bcs.enum("Command",{MoveCall:g$,TransferObjects:ye.bcs.struct("TransferObjects",{objects:ye.bcs.vector(Vs),address:Vs}),SplitCoins:ye.bcs.struct("SplitCoins",{coin:Vs,amounts:ye.bcs.vector(Vs)}),MergeCoins:ye.bcs.struct("MergeCoins",{destination:Vs,sources:ye.bcs.vector(Vs)}),Publish:ye.bcs.struct("Publish",{modules:ye.bcs.vector(ye.bcs.vector(ye.bcs.u8()).transform({input:t=>typeof t=="string"?(0,ye.fromBase64)(t):t,output:t=>(0,ye.toBase64)(new Uint8Array(t))})),dependencies:ye.bcs.vector(io)}),MakeMoveVec:ye.bcs.struct("MakeMoveVec",{type:Zre($S).transform({input:t=>t===null?{None:!0}:{Some:t},output:t=>t.Some??null}),elements:ye.bcs.vector(Vs)}),Upgrade:ye.bcs.struct("Upgrade",{modules:ye.bcs.vector(ye.bcs.vector(ye.bcs.u8()).transform({input:t=>typeof t=="string"?(0,ye.fromBase64)(t):t,output:t=>(0,ye.toBase64)(new Uint8Array(t))})),dependencies:ye.bcs.vector(io),package:io,ticket:Vs})}),b$=ye.bcs.struct("ProgrammableTransaction",{inputs:ye.bcs.vector(y$),commands:ye.bcs.vector(v$)}),w$=ye.bcs.enum("TransactionKind",{ProgrammableTransaction:b$,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),_$=ye.bcs.enum("TransactionExpiration",{None:null,Epoch:Qre()}),x$=ye.bcs.struct("StructTag",{address:io,module:ye.bcs.string(),name:ye.bcs.string(),typeParams:ye.bcs.vector(MS)}),S$=ye.bcs.struct("GasData",{payment:ye.bcs.vector(xy),owner:io,price:ye.bcs.u64(),budget:ye.bcs.u64()}),E$=ye.bcs.struct("TransactionDataV1",{kind:w$,sender:io,gasData:S$,expiration:_$}),O$=ye.bcs.enum("TransactionData",{V1:E$}),C$=ye.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),T$=ye.bcs.enum("IntentVersion",{V0:null}),P$=ye.bcs.enum("AppId",{Sui:null}),I$=ye.bcs.struct("Intent",{scope:C$,version:T$,appId:P$});function k$(t){return ye.bcs.struct(`IntentMessage<${t.name}>`,{intent:I$,value:t})}const A$=ye.bcs.enum("CompressedSignature",{ED25519:ye.bcs.fixedArray(64,ye.bcs.u8()),Secp256k1:ye.bcs.fixedArray(64,ye.bcs.u8()),Secp256r1:ye.bcs.fixedArray(64,ye.bcs.u8()),ZkLogin:ye.bcs.vector(ye.bcs.u8())}),j$=ye.bcs.enum("PublicKey",{ED25519:ye.bcs.fixedArray(32,ye.bcs.u8()),Secp256k1:ye.bcs.fixedArray(33,ye.bcs.u8()),Secp256r1:ye.bcs.fixedArray(33,ye.bcs.u8()),ZkLogin:ye.bcs.vector(ye.bcs.u8())}),M$=ye.bcs.struct("MultiSigPkMap",{pubKey:j$,weight:ye.bcs.u8()}),$$=ye.bcs.struct("MultiSigPublicKey",{pk_map:ye.bcs.vector(M$),threshold:ye.bcs.u16()}),ene=ye.bcs.struct("MultiSig",{sigs:ye.bcs.vector(A$),bitmap:ye.bcs.u16(),multisig_pk:$$}),N$=ye.bcs.vector(ye.bcs.u8()).transform({input:t=>typeof t=="string"?(0,ye.fromBase64)(t):t,output:t=>(0,ye.toBase64)(new Uint8Array(t))}),R$=ye.bcs.struct("SenderSignedTransaction",{intentMessage:k$(O$),txSignatures:ye.bcs.vector(N$)}),tne=ye.bcs.vector(R$,{name:"SenderSignedData"});var NS=Object.defineProperty,rne=Object.getOwnPropertyDescriptor,nne=Object.getOwnPropertyNames,ine=Object.prototype.hasOwnProperty,sne=(t,e)=>{for(var r in e)NS(t,r,{get:e[r],enumerable:!0})},one=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of nne(e))!ine.call(t,i)&&i!==r&&NS(t,i,{get:()=>e[i],enumerable:!(n=rne(e,i))||n.enumerable});return t},ane=t=>one(NS({},"__esModule",{value:!0}),t),D$={};sne(D$,{TransactionEffects:()=>_ne});var une=ane(D$),me=En,Ht=d$;const cne=me.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:me.bcs.struct("UnableToFetchPackage",{packageId:Ht.Address}),NotAPackage:me.bcs.struct("NotAPackage",{objectId:Ht.Address}),IncompatibleUpgrade:null,DigestDoesNotMatch:me.bcs.struct("DigestDoesNotMatch",{digest:me.bcs.vector(me.bcs.u8())}),UnknownUpgradePolicy:me.bcs.struct("UnknownUpgradePolicy",{policy:me.bcs.u8()}),PackageIDDoesNotMatch:me.bcs.struct("PackageIDDoesNotMatch",{packageId:Ht.Address,ticketId:Ht.Address})}),lne=me.bcs.struct("ModuleId",{address:Ht.Address,name:me.bcs.string()}),P6=me.bcs.struct("MoveLocation",{module:lne,function:me.bcs.u16(),instruction:me.bcs.u16(),functionName:me.bcs.option(me.bcs.string())}),fne=me.bcs.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:me.bcs.struct("IndexOutOfBounds",{idx:me.bcs.u16()}),SecondaryIndexOutOfBounds:me.bcs.struct("SecondaryIndexOutOfBounds",{resultIdx:me.bcs.u16(),secondaryIdx:me.bcs.u16()}),InvalidResultArity:me.bcs.struct("InvalidResultArity",{resultIdx:me.bcs.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),dne=me.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),hne=me.bcs.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:me.bcs.struct("MoveObjectTooBig",{objectSize:me.bcs.u64(),maxObjectSize:me.bcs.u64()}),MovePackageTooBig:me.bcs.struct("MovePackageTooBig",{objectSize:me.bcs.u64(),maxObjectSize:me.bcs.u64()}),CircularObjectOwnership:me.bcs.struct("CircularObjectOwnership",{object:Ht.Address}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:me.bcs.option(P6),MoveAbort:me.bcs.tuple([P6,me.bcs.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:me.bcs.struct("CommandArgumentError",{argIdx:me.bcs.u16(),kind:fne}),TypeArgumentError:me.bcs.struct("TypeArgumentError",{argumentIdx:me.bcs.u16(),kind:dne}),UnusedValueWithoutDrop:me.bcs.struct("UnusedValueWithoutDrop",{resultIdx:me.bcs.u16(),secondaryIdx:me.bcs.u16()}),InvalidPublicFunctionReturnType:me.bcs.struct("InvalidPublicFunctionReturnType",{idx:me.bcs.u16()}),InvalidTransferObject:null,EffectsTooLarge:me.bcs.struct("EffectsTooLarge",{currentSize:me.bcs.u64(),maxSize:me.bcs.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:me.bcs.struct("PackageUpgradeError",{upgradeError:cne}),WrittenObjectsTooLarge:me.bcs.struct("WrittenObjectsTooLarge",{currentSize:me.bcs.u64(),maxSize:me.bcs.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:me.bcs.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:me.bcs.vector(Ht.Address)}),AddressDeniedForCoin:me.bcs.struct("AddressDeniedForCoin",{address:Ht.Address,coinType:me.bcs.string()}),CoinTypeGlobalPause:me.bcs.struct("CoinTypeGlobalPause",{coinType:me.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),B$=me.bcs.enum("ExecutionStatus",{Success:null,Failed:me.bcs.struct("ExecutionFailed",{error:hne,command:me.bcs.option(me.bcs.u64())})}),U$=me.bcs.struct("GasCostSummary",{computationCost:me.bcs.u64(),storageCost:me.bcs.u64(),storageRebate:me.bcs.u64(),nonRefundableStorageFee:me.bcs.u64()}),wl=me.bcs.enum("Owner",{AddressOwner:Ht.Address,ObjectOwner:Ht.Address,Shared:me.bcs.struct("Shared",{initialSharedVersion:me.bcs.u64()}),Immutable:null}),pne=me.bcs.struct("TransactionEffectsV1",{status:B$,executedEpoch:me.bcs.u64(),gasUsed:U$,modifiedAtVersions:me.bcs.vector(me.bcs.tuple([Ht.Address,me.bcs.u64()])),sharedObjects:me.bcs.vector(Ht.SuiObjectRef),transactionDigest:Ht.ObjectDigest,created:me.bcs.vector(me.bcs.tuple([Ht.SuiObjectRef,wl])),mutated:me.bcs.vector(me.bcs.tuple([Ht.SuiObjectRef,wl])),unwrapped:me.bcs.vector(me.bcs.tuple([Ht.SuiObjectRef,wl])),deleted:me.bcs.vector(Ht.SuiObjectRef),unwrappedThenDeleted:me.bcs.vector(Ht.SuiObjectRef),wrapped:me.bcs.vector(Ht.SuiObjectRef),gasObject:me.bcs.tuple([Ht.SuiObjectRef,wl]),eventsDigest:me.bcs.option(Ht.ObjectDigest),dependencies:me.bcs.vector(Ht.ObjectDigest)}),RS=me.bcs.tuple([me.bcs.u64(),Ht.ObjectDigest]),mne=me.bcs.enum("ObjectIn",{NotExist:null,Exist:me.bcs.tuple([RS,wl])}),yne=me.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:me.bcs.tuple([Ht.ObjectDigest,wl]),PackageWrite:RS}),gne=me.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),vne=me.bcs.struct("EffectsObjectChange",{inputState:mne,outputState:yne,idOperation:gne}),bne=me.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:RS,MutateDeleted:me.bcs.u64(),ReadDeleted:me.bcs.u64(),Cancelled:me.bcs.u64(),PerEpochConfig:null}),wne=me.bcs.struct("TransactionEffectsV2",{status:B$,executedEpoch:me.bcs.u64(),gasUsed:U$,transactionDigest:Ht.ObjectDigest,gasObjectIndex:me.bcs.option(me.bcs.u32()),eventsDigest:me.bcs.option(Ht.ObjectDigest),dependencies:me.bcs.vector(Ht.ObjectDigest),lamportVersion:me.bcs.u64(),changedObjects:me.bcs.vector(me.bcs.tuple([Ht.Address,vne])),unchangedSharedObjects:me.bcs.vector(me.bcs.tuple([Ht.Address,bne])),auxDataDigest:me.bcs.option(Ht.ObjectDigest)}),_ne=me.bcs.enum("TransactionEffects",{V1:pne,V2:wne});var DS=Object.defineProperty,xne=Object.getOwnPropertyDescriptor,Sne=Object.getOwnPropertyNames,Ene=Object.prototype.hasOwnProperty,One=(t,e)=>{for(var r in e)DS(t,r,{get:e[r],enumerable:!0})},Cne=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Sne(e))!Ene.call(t,i)&&i!==r&&DS(t,i,{get:()=>e[i],enumerable:!(n=xne(e,i))||n.enumerable});return t},Tne=t=>Cne(DS({},"__esModule",{value:!0}),t),F$={};One(F$,{BcsType:()=>kne.BcsType,TypeTagSerializer:()=>Ine.TypeTagSerializer,bcs:()=>Ane});var $s=Tne(F$),Rs=En,Xt=d$,Pne=une,Ine=l$,kne=En;const Ane={...Rs.bcs,U8:Rs.bcs.u8(),U16:Rs.bcs.u16(),U32:Rs.bcs.u32(),U64:Rs.bcs.u64(),U128:Rs.bcs.u128(),U256:Rs.bcs.u256(),ULEB128:Rs.bcs.uleb128(),Bool:Rs.bcs.bool(),String:Rs.bcs.string(),Address:Xt.Address,AppId:Xt.AppId,Argument:Xt.Argument,CallArg:Xt.CallArg,CompressedSignature:Xt.CompressedSignature,GasData:Xt.GasData,Intent:Xt.Intent,IntentMessage:Xt.IntentMessage,IntentScope:Xt.IntentScope,IntentVersion:Xt.IntentVersion,MultiSig:Xt.MultiSig,MultiSigPkMap:Xt.MultiSigPkMap,MultiSigPublicKey:Xt.MultiSigPublicKey,ObjectArg:Xt.ObjectArg,ObjectDigest:Xt.ObjectDigest,ProgrammableMoveCall:Xt.ProgrammableMoveCall,ProgrammableTransaction:Xt.ProgrammableTransaction,PublicKey:Xt.PublicKey,SenderSignedData:Xt.SenderSignedData,SenderSignedTransaction:Xt.SenderSignedTransaction,SharedObjectRef:Xt.SharedObjectRef,StructTag:Xt.StructTag,SuiObjectRef:Xt.SuiObjectRef,Command:Xt.Command,TransactionData:Xt.TransactionData,TransactionDataV1:Xt.TransactionDataV1,TransactionExpiration:Xt.TransactionExpiration,TransactionKind:Xt.TransactionKind,TypeTag:Xt.TypeTag,TransactionEffects:Pne.TransactionEffects};var BS=Object.defineProperty,jne=Object.getOwnPropertyDescriptor,Mne=Object.getOwnPropertyNames,$ne=Object.prototype.hasOwnProperty,Nne=(t,e)=>{for(var r in e)BS(t,r,{get:e[r],enumerable:!0})},Rne=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Mne(e))!$ne.call(t,i)&&i!==r&&BS(t,i,{get:()=>e[i],enumerable:!(n=jne(e,i))||n.enumerable});return t},Dne=t=>Rne(BS({},"__esModule",{value:!0}),t),L$={};Nne(L$,{formatAddress:()=>Une,formatDigest:()=>Fne});var Bne=Dne(L$);const z$="…";function Une(t){if(t.length<=6)return t;const e=t.startsWith("0x")?2:0;return`0x${t.slice(e,e+4)}${z$}${t.slice(-4)}`}function Fne(t){return`${t.slice(0,10)}${z$}`}var US=Object.defineProperty,Lne=Object.getOwnPropertyDescriptor,zne=Object.getOwnPropertyNames,Vne=Object.prototype.hasOwnProperty,Wne=(t,e)=>{for(var r in e)US(t,r,{get:e[r],enumerable:!0})},Hne=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of zne(e))!Vne.call(t,i)&&i!==r&&US(t,i,{get:()=>e[i],enumerable:!(n=Lne(e,i))||n.enumerable});return t},Gne=t=>Hne(US({},"__esModule",{value:!0}),t),V$={};Wne(V$,{isValidSuiNSName:()=>Kne,normalizeSuiNSName:()=>Xne});var FS=Gne(V$);const W$=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,H$=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i,qne=235;function Kne(t){return t.length>qne?!1:t.includes("@")?W$.test(t):H$.test(t)}function Xne(t,e="at"){const r=t.toLowerCase();let n;if(r.includes("@")){if(!W$.test(r))throw new Error(`Invalid SuiNS name ${t}`);const[i,s]=r.split("@");n=[...i?i.split("."):[],s]}else{if(!H$.test(r))throw new Error(`Invalid SuiNS name ${t}`);n=r.split(".").slice(0,-1)}return e==="dot"?`${n.join(".")}.sui`:`${n.slice(0,-1).join(".")}@${n[n.length-1]}`}var LS=Object.defineProperty,Jne=Object.getOwnPropertyDescriptor,Yne=Object.getOwnPropertyNames,Qne=Object.prototype.hasOwnProperty,Zne=(t,e)=>{for(var r in e)LS(t,r,{get:e[r],enumerable:!0})},eie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yne(e))!Qne.call(t,i)&&i!==r&&LS(t,i,{get:()=>e[i],enumerable:!(n=Jne(e,i))||n.enumerable});return t},tie=t=>eie(LS({},"__esModule",{value:!0}),t),G$={};Zne(G$,{MIST_PER_SUI:()=>iie,MOVE_STDLIB_ADDRESS:()=>sie,SUI_CLOCK_OBJECT_ID:()=>aie,SUI_DECIMALS:()=>nie,SUI_FRAMEWORK_ADDRESS:()=>K$,SUI_SYSTEM_ADDRESS:()=>oie,SUI_SYSTEM_MODULE_NAME:()=>uie,SUI_SYSTEM_STATE_OBJECT_ID:()=>lie,SUI_TYPE_ARG:()=>cie});var rie=tie(G$),q$=fi;const nie=9,iie=BigInt(1e9),sie="0x1",K$="0x2",oie="0x3",aie=(0,q$.normalizeSuiObjectId)("0x6"),uie="sui_system",cie=`${K$}::sui::SUI`,lie=(0,q$.normalizeSuiObjectId)("0x5");var zS=Object.defineProperty,fie=Object.getOwnPropertyDescriptor,die=Object.getOwnPropertyNames,hie=Object.prototype.hasOwnProperty,pie=(t,e)=>{for(var r in e)zS(t,r,{get:e[r],enumerable:!0})},mie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of die(e))!hie.call(t,i)&&i!==r&&zS(t,i,{get:()=>e[i],enumerable:!(n=fie(e,i))||n.enumerable});return t},yie=t=>mie(zS({},"__esModule",{value:!0}),t),X$={};pie(X$,{isValidNamedPackage:()=>Q$,isValidNamedType:()=>_ie});var J$=yie(X$),gie=FS;const vie=/^([a-z0-9]+(?:-[a-z0-9]+)*)$/,bie=/^\d+$/,wie=64,Y$="/",Q$=t=>{const e=t.split(Y$);if(e.length<2||e.length>3)return!1;const[r,n,i]=e;return i!==void 0&&!bie.test(i)||!(0,gie.isValidSuiNSName)(r)?!1:vie.test(n)&&n.length{const e=t.split(/::|<|>|,/);for(const r of e)if(r.includes(Y$)&&!Q$(r))return!1;return!0},Z$=Ny(oz);var VS=Object.defineProperty,xie=Object.getOwnPropertyDescriptor,Sie=Object.getOwnPropertyNames,Eie=Object.prototype.hasOwnProperty,Oie=(t,e)=>{for(var r in e)VS(t,r,{get:e[r],enumerable:!0})},Cie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Sie(e))!Eie.call(t,i)&&i!==r&&VS(t,i,{get:()=>e[i],enumerable:!(n=xie(e,i))||n.enumerable});return t},Tie=t=>Cie(VS({},"__esModule",{value:!0}),t),eN={};Oie(eN,{deriveDynamicFieldID:()=>Aie});var Pie=Tie(eN),Iie=En,kie=Z$,rb=$s;function Aie(t,e,r){const n=rb.bcs.Address.serialize(t).toBytes(),i=rb.bcs.TypeTag.serialize(e).toBytes(),s=rb.bcs.u64().serialize(r.length).toBytes(),o=kie.blake2b.create({dkLen:32});return o.update(new Uint8Array([240])),o.update(n),o.update(s),o.update(r),o.update(i),`0x${(0,Iie.toHex)(o.digest().slice(0,32))}`}var WS=Object.defineProperty,jie=Object.getOwnPropertyDescriptor,Mie=Object.getOwnPropertyNames,$ie=Object.prototype.hasOwnProperty,Nie=(t,e)=>{for(var r in e)WS(t,r,{get:e[r],enumerable:!0})},Rie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Mie(e))!$ie.call(t,i)&&i!==r&&WS(t,i,{get:()=>e[i],enumerable:!(n=jie(e,i))||n.enumerable});return t},Die=t=>Rie(WS({},"__esModule",{value:!0}),t),tN={};Nie(tN,{MIST_PER_SUI:()=>mo.MIST_PER_SUI,MOVE_STDLIB_ADDRESS:()=>mo.MOVE_STDLIB_ADDRESS,SUI_ADDRESS_LENGTH:()=>sa.SUI_ADDRESS_LENGTH,SUI_CLOCK_OBJECT_ID:()=>mo.SUI_CLOCK_OBJECT_ID,SUI_DECIMALS:()=>mo.SUI_DECIMALS,SUI_FRAMEWORK_ADDRESS:()=>mo.SUI_FRAMEWORK_ADDRESS,SUI_SYSTEM_ADDRESS:()=>mo.SUI_SYSTEM_ADDRESS,SUI_SYSTEM_MODULE_NAME:()=>mo.SUI_SYSTEM_MODULE_NAME,SUI_SYSTEM_STATE_OBJECT_ID:()=>mo.SUI_SYSTEM_STATE_OBJECT_ID,SUI_TYPE_ARG:()=>mo.SUI_TYPE_ARG,deriveDynamicFieldID:()=>Bie.deriveDynamicFieldID,formatAddress:()=>I6.formatAddress,formatDigest:()=>I6.formatDigest,fromB64:()=>Ds.fromB64,fromBase58:()=>Ds.fromBase58,fromBase64:()=>Ds.fromBase64,fromHEX:()=>Ds.fromHEX,fromHex:()=>Ds.fromHex,isValidNamedPackage:()=>A6.isValidNamedPackage,isValidNamedType:()=>A6.isValidNamedType,isValidSuiAddress:()=>sa.isValidSuiAddress,isValidSuiNSName:()=>k6.isValidSuiNSName,isValidSuiObjectId:()=>sa.isValidSuiObjectId,isValidTransactionDigest:()=>sa.isValidTransactionDigest,normalizeStructTag:()=>sa.normalizeStructTag,normalizeSuiAddress:()=>sa.normalizeSuiAddress,normalizeSuiNSName:()=>k6.normalizeSuiNSName,normalizeSuiObjectId:()=>sa.normalizeSuiObjectId,parseStructTag:()=>sa.parseStructTag,toB64:()=>Ds.toB64,toBase58:()=>Ds.toBase58,toBase64:()=>Ds.toBase64,toHEX:()=>Ds.toHEX,toHex:()=>Ds.toHex});var HS=Die(tN),I6=Bne,sa=fi,Ds=En,k6=FS,mo=rie,A6=J$,Bie=Pie,GS=Object.defineProperty,Uie=Object.getOwnPropertyDescriptor,Fie=Object.getOwnPropertyNames,Lie=Object.prototype.hasOwnProperty,zie=(t,e)=>{for(var r in e)GS(t,r,{get:e[r],enumerable:!0})},Vie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Fie(e))!Lie.call(t,i)&&i!==r&&GS(t,i,{get:()=>e[i],enumerable:!(n=Uie(e,i))||n.enumerable});return t},Wie=t=>Vie(GS({},"__esModule",{value:!0}),t),rN={};zie(rN,{getPureBcsSchema:()=>V1,isTxContext:()=>Zie,normalizedTypeToMoveTypeSignature:()=>ese,pureBcsSchemaFromOpenMoveTypeSignatureBody:()=>iN});var nN=Wie(rN),vr=$s,j6=HS,nh=fi;const Hie="object",Gie="ID",qie="ascii",Kie="String",Xie="string",Jie="String",Yie="option",Qie="Option";function Zie(t){const e=typeof t.body=="object"&&"datatype"in t.body?t.body.datatype:null;return!!e&&(0,nh.normalizeSuiAddress)(e.package)===(0,nh.normalizeSuiAddress)("0x2")&&e.module==="tx_context"&&e.type==="TxContext"}function V1(t){if(typeof t=="string")switch(t){case"address":return vr.bcs.Address;case"bool":return vr.bcs.Bool;case"u8":return vr.bcs.U8;case"u16":return vr.bcs.U16;case"u32":return vr.bcs.U32;case"u64":return vr.bcs.U64;case"u128":return vr.bcs.U128;case"u256":return vr.bcs.U256;default:throw new Error(`Unknown type signature ${t}`)}if("vector"in t){if(t.vector==="u8")return vr.bcs.vector(vr.bcs.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});const e=V1(t.vector);return e?vr.bcs.vector(e):null}if("datatype"in t){const e=(0,nh.normalizeSuiAddress)(t.datatype.package);if(e===(0,nh.normalizeSuiAddress)(j6.MOVE_STDLIB_ADDRESS)){if(t.datatype.module===qie&&t.datatype.type===Kie||t.datatype.module===Xie&&t.datatype.type===Jie)return vr.bcs.String;if(t.datatype.module===Yie&&t.datatype.type===Qie){const r=V1(t.datatype.typeParameters[0]);return r?vr.bcs.vector(r):null}}if(e===(0,nh.normalizeSuiAddress)(j6.SUI_FRAMEWORK_ADDRESS)&&t.datatype.module===Hie&&t.datatype.type===Gie)return vr.bcs.Address}return null}function ese(t){return typeof t=="object"&&"Reference"in t?{ref:"&",body:ih(t.Reference)}:typeof t=="object"&&"MutableReference"in t?{ref:"&mut",body:ih(t.MutableReference)}:{ref:null,body:ih(t)}}function ih(t){if(typeof t=="string")switch(t){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${t}`)}if("Vector"in t)return{vector:ih(t.Vector)};if("Struct"in t)return{datatype:{package:t.Struct.address,module:t.Struct.module,type:t.Struct.name,typeParameters:t.Struct.typeArguments.map(ih)}};if("TypeParameter"in t)return{typeParameter:t.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(t)}`)}function iN(t){if(typeof t=="string")switch(t){case"address":return vr.bcs.Address;case"bool":return vr.bcs.Bool;case"u8":return vr.bcs.U8;case"u16":return vr.bcs.U16;case"u32":return vr.bcs.U32;case"u64":return vr.bcs.U64;case"u128":return vr.bcs.U128;case"u256":return vr.bcs.U256;default:throw new Error(`Unknown type signature ${t}`)}if("vector"in t)return vr.bcs.vector(iN(t.vector));throw new Error(`Expected pure typeSignature, but got ${JSON.stringify(t)}`)}var qS=Object.defineProperty,tse=Object.getOwnPropertyDescriptor,rse=Object.getOwnPropertyNames,nse=Object.prototype.hasOwnProperty,ise=(t,e)=>{for(var r in e)qS(t,r,{get:e[r],enumerable:!0})},sse=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of rse(e))!nse.call(t,i)&&i!==r&&qS(t,i,{get:()=>e[i],enumerable:!(n=tse(e,i))||n.enumerable});return t},ose=t=>sse(qS({},"__esModule",{value:!0}),t),sN={};ise(sN,{Inputs:()=>cse});var Mg=ose(sN),ase=En,nb=fi;function use(t){return{$kind:"Pure",Pure:{bytes:t instanceof Uint8Array?(0,ase.toBase64)(t):t.toBase64()}}}const cse={Pure:use,ObjectRef({objectId:t,digest:e,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:e,version:r,objectId:(0,nb.normalizeSuiAddress)(t)}}}},SharedObjectRef({objectId:t,mutable:e,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:e,initialSharedVersion:r,objectId:(0,nb.normalizeSuiAddress)(t)}}}},ReceivingRef({objectId:t,digest:e,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:e,version:r,objectId:(0,nb.normalizeSuiAddress)(t)}}}}},su=Ny(eV);var KS=Object.defineProperty,lse=Object.getOwnPropertyDescriptor,fse=Object.getOwnPropertyNames,dse=Object.prototype.hasOwnProperty,hse=(t,e)=>{for(var r in e)KS(t,r,{get:e[r],enumerable:!0})},pse=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of fse(e))!dse.call(t,i)&&i!==r&&KS(t,i,{get:()=>e[i],enumerable:!(n=lse(e,i))||n.enumerable});return t},mse=t=>pse(KS({},"__esModule",{value:!0}),t),oN={};hse(oN,{$Intent:()=>cN,Argument:()=>Ri,BCSBytes:()=>Hh,Command:()=>lN,GasData:()=>aN,JsonU64:()=>tu,NormalizedCallArg:()=>bse,ObjectArg:()=>XS,ObjectID:()=>ic,ObjectRef:()=>Sy,OpenMoveTypeSignature:()=>uN,OpenMoveTypeSignatureBody:()=>Ey,StructTag:()=>yse,SuiAddress:()=>Op,TransactionData:()=>wse,TransactionExpiration:()=>fN,safeEnum:()=>Ff});var Uf=mse(oN),ne=su,M6=fi;function Ff(t){const e=Object.entries(t).map(([r,n])=>(0,ne.object)({[r]:n}));return(0,ne.pipe)((0,ne.union)(e),(0,ne.transform)(r=>({...r,$kind:Object.keys(r)[0]})))}const Op=(0,ne.pipe)((0,ne.string)(),(0,ne.transform)(t=>(0,M6.normalizeSuiAddress)(t)),(0,ne.check)(M6.isValidSuiAddress)),ic=Op,Hh=(0,ne.string)(),tu=(0,ne.pipe)((0,ne.union)([(0,ne.string)(),(0,ne.pipe)((0,ne.number)(),(0,ne.integer)())]),(0,ne.check)(t=>{try{return BigInt(t),BigInt(t)>=0&&BigInt(t)<=18446744073709551615n}catch{return!1}},"Invalid u64")),Sy=(0,ne.object)({objectId:Op,version:tu,digest:(0,ne.string)()}),Ri=(0,ne.pipe)((0,ne.union)([(0,ne.object)({GasCoin:(0,ne.literal)(!0)}),(0,ne.object)({Input:(0,ne.pipe)((0,ne.number)(),(0,ne.integer)()),type:(0,ne.optional)((0,ne.literal)("pure"))}),(0,ne.object)({Input:(0,ne.pipe)((0,ne.number)(),(0,ne.integer)()),type:(0,ne.optional)((0,ne.literal)("object"))}),(0,ne.object)({Result:(0,ne.pipe)((0,ne.number)(),(0,ne.integer)())}),(0,ne.object)({NestedResult:(0,ne.tuple)([(0,ne.pipe)((0,ne.number)(),(0,ne.integer)()),(0,ne.pipe)((0,ne.number)(),(0,ne.integer)())])})]),(0,ne.transform)(t=>({...t,$kind:Object.keys(t)[0]}))),aN=(0,ne.object)({budget:(0,ne.nullable)(tu),price:(0,ne.nullable)(tu),owner:(0,ne.nullable)(Op),payment:(0,ne.nullable)((0,ne.array)(Sy))}),yse=(0,ne.object)({address:(0,ne.string)(),module:(0,ne.string)(),name:(0,ne.string)(),typeParams:(0,ne.array)((0,ne.string)())}),Ey=(0,ne.union)([(0,ne.literal)("address"),(0,ne.literal)("bool"),(0,ne.literal)("u8"),(0,ne.literal)("u16"),(0,ne.literal)("u32"),(0,ne.literal)("u64"),(0,ne.literal)("u128"),(0,ne.literal)("u256"),(0,ne.object)({vector:(0,ne.lazy)(()=>Ey)}),(0,ne.object)({datatype:(0,ne.object)({package:(0,ne.string)(),module:(0,ne.string)(),type:(0,ne.string)(),typeParameters:(0,ne.array)((0,ne.lazy)(()=>Ey))})}),(0,ne.object)({typeParameter:(0,ne.pipe)((0,ne.number)(),(0,ne.integer)())})]),uN=(0,ne.object)({ref:(0,ne.nullable)((0,ne.union)([(0,ne.literal)("&"),(0,ne.literal)("&mut")])),body:Ey}),gse=(0,ne.object)({package:ic,module:(0,ne.string)(),function:(0,ne.string)(),typeArguments:(0,ne.array)((0,ne.string)()),arguments:(0,ne.array)(Ri),_argumentTypes:(0,ne.optional)((0,ne.nullable)((0,ne.array)(uN)))}),cN=(0,ne.object)({name:(0,ne.string)(),inputs:(0,ne.record)((0,ne.string)(),(0,ne.union)([Ri,(0,ne.array)(Ri)])),data:(0,ne.record)((0,ne.string)(),(0,ne.unknown)())}),lN=Ff({MoveCall:gse,TransferObjects:(0,ne.object)({objects:(0,ne.array)(Ri),address:Ri}),SplitCoins:(0,ne.object)({coin:Ri,amounts:(0,ne.array)(Ri)}),MergeCoins:(0,ne.object)({destination:Ri,sources:(0,ne.array)(Ri)}),Publish:(0,ne.object)({modules:(0,ne.array)(Hh),dependencies:(0,ne.array)(ic)}),MakeMoveVec:(0,ne.object)({type:(0,ne.nullable)((0,ne.string)()),elements:(0,ne.array)(Ri)}),Upgrade:(0,ne.object)({modules:(0,ne.array)(Hh),dependencies:(0,ne.array)(ic),package:ic,ticket:Ri}),$Intent:cN}),XS=Ff({ImmOrOwnedObject:Sy,SharedObject:(0,ne.object)({objectId:ic,initialSharedVersion:tu,mutable:(0,ne.boolean)()}),Receiving:Sy}),vse=Ff({Object:XS,Pure:(0,ne.object)({bytes:Hh}),UnresolvedPure:(0,ne.object)({value:(0,ne.unknown)()}),UnresolvedObject:(0,ne.object)({objectId:ic,version:(0,ne.optional)((0,ne.nullable)(tu)),digest:(0,ne.optional)((0,ne.nullable)((0,ne.string)())),initialSharedVersion:(0,ne.optional)((0,ne.nullable)(tu))})}),bse=Ff({Object:XS,Pure:(0,ne.object)({bytes:Hh})}),fN=Ff({None:(0,ne.literal)(!0),Epoch:tu}),wse=(0,ne.object)({version:(0,ne.literal)(2),sender:(0,ne.nullish)(Op),expiration:(0,ne.nullish)(fN),gasData:aN,inputs:(0,ne.array)(vse),commands:(0,ne.array)(lN)});var JS=Object.defineProperty,_se=Object.getOwnPropertyDescriptor,xse=Object.getOwnPropertyNames,Sse=Object.prototype.hasOwnProperty,Ese=(t,e)=>{for(var r in e)JS(t,r,{get:e[r],enumerable:!0})},Ose=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of xse(e))!Sse.call(t,i)&&i!==r&&JS(t,i,{get:()=>e[i],enumerable:!(n=_se(e,i))||n.enumerable});return t},Cse=t=>Ose(JS({},"__esModule",{value:!0}),t),dN={};Ese(dN,{Commands:()=>Tse,UpgradePolicy:()=>hN});var YS=Cse(dN),$6=En,Bs=su,N6=fi,Us=Uf,hN=(t=>(t[t.COMPATIBLE=0]="COMPATIBLE",t[t.ADDITIVE=128]="ADDITIVE",t[t.DEP_ONLY=192]="DEP_ONLY",t))(hN||{});const Tse={MoveCall(t){const[e,r="",n=""]="target"in t?t.target.split("::"):[t.package,t.module,t.function];return{$kind:"MoveCall",MoveCall:{package:e,module:r,function:n,typeArguments:t.typeArguments??[],arguments:t.arguments??[]}}},TransferObjects(t,e){return{$kind:"TransferObjects",TransferObjects:{objects:t.map(r=>(0,Bs.parse)(Us.Argument,r)),address:(0,Bs.parse)(Us.Argument,e)}}},SplitCoins(t,e){return{$kind:"SplitCoins",SplitCoins:{coin:(0,Bs.parse)(Us.Argument,t),amounts:e.map(r=>(0,Bs.parse)(Us.Argument,r))}}},MergeCoins(t,e){return{$kind:"MergeCoins",MergeCoins:{destination:(0,Bs.parse)(Us.Argument,t),sources:e.map(r=>(0,Bs.parse)(Us.Argument,r))}}},Publish({modules:t,dependencies:e}){return{$kind:"Publish",Publish:{modules:t.map(r=>typeof r=="string"?r:(0,$6.toBase64)(new Uint8Array(r))),dependencies:e.map(r=>(0,N6.normalizeSuiObjectId)(r))}}},Upgrade({modules:t,dependencies:e,package:r,ticket:n}){return{$kind:"Upgrade",Upgrade:{modules:t.map(i=>typeof i=="string"?i:(0,$6.toBase64)(new Uint8Array(i))),dependencies:e.map(i=>(0,N6.normalizeSuiObjectId)(i)),package:r,ticket:(0,Bs.parse)(Us.Argument,n)}}},MakeMoveVec({type:t,elements:e}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:t??null,elements:e.map(r=>(0,Bs.parse)(Us.Argument,r))}}},Intent({name:t,inputs:e={},data:r={}}){return{$kind:"$Intent",$Intent:{name:t,inputs:Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Array.isArray(i)?i.map(s=>(0,Bs.parse)(Us.Argument,s)):(0,Bs.parse)(Us.Argument,i)])),data:r}}}};var QS=Object.defineProperty,Pse=Object.getOwnPropertyDescriptor,Ise=Object.getOwnPropertyNames,kse=Object.prototype.hasOwnProperty,Ase=(t,e)=>{for(var r in e)QS(t,r,{get:e[r],enumerable:!0})},jse=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ise(e))!kse.call(t,i)&&i!==r&&QS(t,i,{get:()=>e[i],enumerable:!(n=Pse(e,i))||n.enumerable});return t},Mse=t=>jse(QS({},"__esModule",{value:!0}),t),pN={};Ase(pN,{NormalizedCallArg:()=>W1,ObjectRef:()=>Oy,SerializedTransactionDataV1:()=>qse,StructTag:()=>vN,TransactionArgument:()=>ao,TypeTag:()=>$g,serializeV1TransactionData:()=>Kse,transactionDataFromV1:()=>Xse});var mN=Mse(pN),Ll=En,ee=su,yN=$s,sh=Uf;const Oy=(0,ee.object)({digest:(0,ee.string)(),objectId:(0,ee.string)(),version:(0,ee.union)([(0,ee.pipe)((0,ee.number)(),(0,ee.integer)()),(0,ee.string)(),(0,ee.bigint)()])}),$se=(0,sh.safeEnum)({ImmOrOwned:Oy,Shared:(0,ee.object)({objectId:sh.ObjectID,initialSharedVersion:sh.JsonU64,mutable:(0,ee.boolean)()}),Receiving:Oy}),W1=(0,sh.safeEnum)({Object:$se,Pure:(0,ee.array)((0,ee.pipe)((0,ee.number)(),(0,ee.integer)()))}),gN=(0,ee.union)([(0,ee.object)({kind:(0,ee.literal)("Input"),index:(0,ee.pipe)((0,ee.number)(),(0,ee.integer)()),value:(0,ee.unknown)(),type:(0,ee.optional)((0,ee.literal)("object"))}),(0,ee.object)({kind:(0,ee.literal)("Input"),index:(0,ee.pipe)((0,ee.number)(),(0,ee.integer)()),value:(0,ee.unknown)(),type:(0,ee.literal)("pure")})]),Nse=(0,ee.union)([(0,ee.object)({Epoch:(0,ee.pipe)((0,ee.number)(),(0,ee.integer)())}),(0,ee.object)({None:(0,ee.nullable)((0,ee.literal)(!0))})]),R6=(0,ee.pipe)((0,ee.union)([(0,ee.number)(),(0,ee.string)(),(0,ee.bigint)()]),(0,ee.check)(t=>{if(!["string","number","bigint"].includes(typeof t))return!1;try{return BigInt(t),!0}catch{return!1}})),$g=(0,ee.union)([(0,ee.object)({bool:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({u8:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({u64:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({u128:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({address:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({signer:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({vector:(0,ee.lazy)(()=>$g)}),(0,ee.object)({struct:(0,ee.lazy)(()=>vN)}),(0,ee.object)({u16:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({u32:(0,ee.nullable)((0,ee.literal)(!0))}),(0,ee.object)({u256:(0,ee.nullable)((0,ee.literal)(!0))})]),vN=(0,ee.object)({address:(0,ee.string)(),module:(0,ee.string)(),name:(0,ee.string)(),typeParams:(0,ee.array)($g)}),Rse=(0,ee.object)({budget:(0,ee.optional)(R6),price:(0,ee.optional)(R6),payment:(0,ee.optional)((0,ee.array)(Oy)),owner:(0,ee.optional)((0,ee.string)())}),Dse=[gN,(0,ee.object)({kind:(0,ee.literal)("GasCoin")}),(0,ee.object)({kind:(0,ee.literal)("Result"),index:(0,ee.pipe)((0,ee.number)(),(0,ee.integer)())}),(0,ee.object)({kind:(0,ee.literal)("NestedResult"),index:(0,ee.pipe)((0,ee.number)(),(0,ee.integer)()),resultIndex:(0,ee.pipe)((0,ee.number)(),(0,ee.integer)())})],ao=(0,ee.union)([...Dse]),Bse=(0,ee.object)({kind:(0,ee.literal)("MoveCall"),target:(0,ee.pipe)((0,ee.string)(),(0,ee.check)(t=>t.split("::").length===3)),typeArguments:(0,ee.array)((0,ee.string)()),arguments:(0,ee.array)(ao)}),Use=(0,ee.object)({kind:(0,ee.literal)("TransferObjects"),objects:(0,ee.array)(ao),address:ao}),Fse=(0,ee.object)({kind:(0,ee.literal)("SplitCoins"),coin:ao,amounts:(0,ee.array)(ao)}),Lse=(0,ee.object)({kind:(0,ee.literal)("MergeCoins"),destination:ao,sources:(0,ee.array)(ao)}),zse=(0,ee.object)({kind:(0,ee.literal)("MakeMoveVec"),type:(0,ee.union)([(0,ee.object)({Some:$g}),(0,ee.object)({None:(0,ee.nullable)((0,ee.literal)(!0))})]),objects:(0,ee.array)(ao)}),Vse=(0,ee.object)({kind:(0,ee.literal)("Publish"),modules:(0,ee.array)((0,ee.array)((0,ee.pipe)((0,ee.number)(),(0,ee.integer)()))),dependencies:(0,ee.array)((0,ee.string)())}),Wse=(0,ee.object)({kind:(0,ee.literal)("Upgrade"),modules:(0,ee.array)((0,ee.array)((0,ee.pipe)((0,ee.number)(),(0,ee.integer)()))),dependencies:(0,ee.array)((0,ee.string)()),packageId:(0,ee.string)(),ticket:ao}),Hse=[Bse,Use,Fse,Lse,Vse,Wse,zse],Gse=(0,ee.union)([...Hse]),qse=(0,ee.object)({version:(0,ee.literal)(1),sender:(0,ee.optional)((0,ee.string)()),expiration:(0,ee.nullish)(Nse),gasConfig:Rse,inputs:(0,ee.array)(gN),transactions:(0,ee.array)(Gse)});function Kse(t){var r;const e=t.inputs.map((n,i)=>{if(n.Object)return{kind:"Input",index:i,value:{Object:n.Object.ImmOrOwnedObject?{ImmOrOwned:n.Object.ImmOrOwnedObject}:n.Object.Receiving?{Receiving:{digest:n.Object.Receiving.digest,version:n.Object.Receiving.version,objectId:n.Object.Receiving.objectId}}:{Shared:{mutable:n.Object.SharedObject.mutable,initialSharedVersion:n.Object.SharedObject.initialSharedVersion,objectId:n.Object.SharedObject.objectId}}},type:"object"};if(n.Pure)return{kind:"Input",index:i,value:{Pure:Array.from((0,Ll.fromBase64)(n.Pure.bytes))},type:"pure"};if(n.UnresolvedPure)return{kind:"Input",type:"pure",index:i,value:n.UnresolvedPure.value};if(n.UnresolvedObject)return{kind:"Input",type:"object",index:i,value:n.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:t.sender??void 0,expiration:((r=t.expiration)==null?void 0:r.$kind)==="Epoch"?{Epoch:Number(t.expiration.Epoch)}:t.expiration?{None:!0}:null,gasConfig:{owner:t.gasData.owner??void 0,budget:t.gasData.budget??void 0,price:t.gasData.price??void 0,payment:t.gasData.payment??void 0},inputs:e,transactions:t.commands.map(n=>{if(n.MakeMoveVec)return{kind:"MakeMoveVec",type:n.MakeMoveVec.type===null?{None:!0}:{Some:yN.TypeTagSerializer.parseFromStr(n.MakeMoveVec.type)},objects:n.MakeMoveVec.elements.map(i=>yo(i,e))};if(n.MergeCoins)return{kind:"MergeCoins",destination:yo(n.MergeCoins.destination,e),sources:n.MergeCoins.sources.map(i=>yo(i,e))};if(n.MoveCall)return{kind:"MoveCall",target:`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`,typeArguments:n.MoveCall.typeArguments,arguments:n.MoveCall.arguments.map(i=>yo(i,e))};if(n.Publish)return{kind:"Publish",modules:n.Publish.modules.map(i=>Array.from((0,Ll.fromBase64)(i))),dependencies:n.Publish.dependencies};if(n.SplitCoins)return{kind:"SplitCoins",coin:yo(n.SplitCoins.coin,e),amounts:n.SplitCoins.amounts.map(i=>yo(i,e))};if(n.TransferObjects)return{kind:"TransferObjects",objects:n.TransferObjects.objects.map(i=>yo(i,e)),address:yo(n.TransferObjects.address,e)};if(n.Upgrade)return{kind:"Upgrade",modules:n.Upgrade.modules.map(i=>Array.from((0,Ll.fromBase64)(i))),dependencies:n.Upgrade.dependencies,packageId:n.Upgrade.package,ticket:yo(n.Upgrade.ticket,e)};throw new Error(`Unknown transaction ${Object.keys(n)}`)})}}function yo(t,e){if(t.$kind==="GasCoin")return{kind:"GasCoin"};if(t.$kind==="Result")return{kind:"Result",index:t.Result};if(t.$kind==="NestedResult")return{kind:"NestedResult",index:t.NestedResult[0],resultIndex:t.NestedResult[1]};if(t.$kind==="Input")return e[t.Input];throw new Error(`Invalid argument ${Object.keys(t)}`)}function Xse(t){var e,r,n;return(0,ee.parse)(sh.TransactionData,{version:2,sender:t.sender??null,expiration:t.expiration?"Epoch"in t.expiration?{Epoch:t.expiration.Epoch}:{None:!0}:null,gasData:{owner:t.gasConfig.owner??null,budget:((e=t.gasConfig.budget)==null?void 0:e.toString())??null,price:((r=t.gasConfig.price)==null?void 0:r.toString())??null,payment:((n=t.gasConfig.payment)==null?void 0:n.map(i=>({digest:i.digest,objectId:i.objectId,version:i.version.toString()})))??null},inputs:t.inputs.map(i=>{if(i.kind==="Input"){if((0,ee.is)(W1,i.value)){const s=(0,ee.parse)(W1,i.value);if(s.Object){if(s.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:s.Object.ImmOrOwned.objectId,version:String(s.Object.ImmOrOwned.version),digest:s.Object.ImmOrOwned.digest}}};if(s.Object.Shared)return{Object:{SharedObject:{mutable:s.Object.Shared.mutable??null,initialSharedVersion:s.Object.Shared.initialSharedVersion,objectId:s.Object.Shared.objectId}}};if(s.Object.Receiving)return{Object:{Receiving:{digest:s.Object.Receiving.digest,version:String(s.Object.Receiving.version),objectId:s.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Ll.toBase64)(new Uint8Array(s.Pure))}}}return i.type==="object"?{UnresolvedObject:{objectId:i.value}}:{UnresolvedPure:{value:i.value}}}throw new Error("Invalid input")}),commands:t.transactions.map(i=>{switch(i.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in i.type?yN.TypeTagSerializer.tagToString(i.type.Some):null,elements:i.objects.map(s=>go(s))}};case"MergeCoins":return{MergeCoins:{destination:go(i.destination),sources:i.sources.map(s=>go(s))}};case"MoveCall":{const[s,o,a]=i.target.split("::");return{MoveCall:{package:s,module:o,function:a,typeArguments:i.typeArguments,arguments:i.arguments.map(u=>go(u))}}}case"Publish":return{Publish:{modules:i.modules.map(s=>(0,Ll.toBase64)(Uint8Array.from(s))),dependencies:i.dependencies}};case"SplitCoins":return{SplitCoins:{coin:go(i.coin),amounts:i.amounts.map(s=>go(s))}};case"TransferObjects":return{TransferObjects:{objects:i.objects.map(s=>go(s)),address:go(i.address)}};case"Upgrade":return{Upgrade:{modules:i.modules.map(s=>(0,Ll.toBase64)(Uint8Array.from(s))),dependencies:i.dependencies,package:i.packageId,ticket:go(i.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(i)}`)})})}function go(t){switch(t.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:t.index};case"NestedResult":return{NestedResult:[t.index,t.resultIndex]};case"Input":return{Input:t.index}}}var ZS=Object.defineProperty,Jse=Object.getOwnPropertyDescriptor,Yse=Object.getOwnPropertyNames,Qse=Object.prototype.hasOwnProperty,Zse=(t,e)=>{for(var r in e)ZS(t,r,{get:e[r],enumerable:!0})},eoe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yse(e))!Qse.call(t,i)&&i!==r&&ZS(t,i,{get:()=>e[i],enumerable:!(n=Jse(e,i))||n.enumerable});return t},toe=t=>eoe(ZS({},"__esModule",{value:!0}),t),bN={};Zse(bN,{SerializedTransactionDataV2:()=>loe});var roe=toe(bN),Me=su,Jr=Uf;function Cp(t){return(0,Me.union)(Object.entries(t).map(([e,r])=>(0,Me.object)({[e]:r})))}const ts=Cp({GasCoin:(0,Me.literal)(!0),Input:(0,Me.pipe)((0,Me.number)(),(0,Me.integer)()),Result:(0,Me.pipe)((0,Me.number)(),(0,Me.integer)()),NestedResult:(0,Me.tuple)([(0,Me.pipe)((0,Me.number)(),(0,Me.integer)()),(0,Me.pipe)((0,Me.number)(),(0,Me.integer)())])}),noe=(0,Me.object)({budget:(0,Me.nullable)(Jr.JsonU64),price:(0,Me.nullable)(Jr.JsonU64),owner:(0,Me.nullable)(Jr.SuiAddress),payment:(0,Me.nullable)((0,Me.array)(Jr.ObjectRef))}),ioe=(0,Me.object)({package:Jr.ObjectID,module:(0,Me.string)(),function:(0,Me.string)(),typeArguments:(0,Me.array)((0,Me.string)()),arguments:(0,Me.array)(ts)}),soe=(0,Me.object)({name:(0,Me.string)(),inputs:(0,Me.record)((0,Me.string)(),(0,Me.union)([ts,(0,Me.array)(ts)])),data:(0,Me.record)((0,Me.string)(),(0,Me.unknown)())}),ooe=Cp({MoveCall:ioe,TransferObjects:(0,Me.object)({objects:(0,Me.array)(ts),address:ts}),SplitCoins:(0,Me.object)({coin:ts,amounts:(0,Me.array)(ts)}),MergeCoins:(0,Me.object)({destination:ts,sources:(0,Me.array)(ts)}),Publish:(0,Me.object)({modules:(0,Me.array)(Jr.BCSBytes),dependencies:(0,Me.array)(Jr.ObjectID)}),MakeMoveVec:(0,Me.object)({type:(0,Me.nullable)((0,Me.string)()),elements:(0,Me.array)(ts)}),Upgrade:(0,Me.object)({modules:(0,Me.array)(Jr.BCSBytes),dependencies:(0,Me.array)(Jr.ObjectID),package:Jr.ObjectID,ticket:ts}),$Intent:soe}),aoe=Cp({ImmOrOwnedObject:Jr.ObjectRef,SharedObject:(0,Me.object)({objectId:Jr.ObjectID,initialSharedVersion:Jr.JsonU64,mutable:(0,Me.boolean)()}),Receiving:Jr.ObjectRef}),uoe=Cp({Object:aoe,Pure:(0,Me.object)({bytes:Jr.BCSBytes}),UnresolvedPure:(0,Me.object)({value:(0,Me.unknown)()}),UnresolvedObject:(0,Me.object)({objectId:Jr.ObjectID,version:(0,Me.optional)((0,Me.nullable)(Jr.JsonU64)),digest:(0,Me.optional)((0,Me.nullable)((0,Me.string)())),initialSharedVersion:(0,Me.optional)((0,Me.nullable)(Jr.JsonU64))})}),coe=Cp({None:(0,Me.literal)(!0),Epoch:Jr.JsonU64}),loe=(0,Me.object)({version:(0,Me.literal)(2),sender:(0,Me.nullish)(Jr.SuiAddress),expiration:(0,Me.nullish)(coe),gasData:noe,inputs:(0,Me.array)(uoe),commands:(0,Me.array)(ooe)});var e2=Object.defineProperty,foe=Object.getOwnPropertyDescriptor,doe=Object.getOwnPropertyNames,hoe=Object.prototype.hasOwnProperty,poe=(t,e)=>{for(var r in e)e2(t,r,{get:e[r],enumerable:!0})},moe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of doe(e))!hoe.call(t,i)&&i!==r&&e2(t,i,{get:()=>e[i],enumerable:!(n=foe(e,i))||n.enumerable});return t},yoe=t=>moe(e2({},"__esModule",{value:!0}),t),wN={};poe(wN,{getClient:()=>Lf,resolveTransactionData:()=>xoe});var _N=yoe(wN),goe=su,D6=$s,H1=HS,voe=Uf,oh=Mg,ib=nN;const boe=50,woe=1000n,_oe=5e10;async function xoe(t,e,r){return await Toe(t,e),await Coe(t,e),e.onlyTransactionKind||(await Soe(t,e),await Eoe(t,e),await Ooe(t,e)),await Poe(t),await r()}async function Soe(t,e){t.gasConfig.price||(t.gasConfig.price=String(await Lf(e).getReferenceGasPrice()))}async function Eoe(t,e){if(t.gasConfig.budget)return;const r=await Lf(e).dryRunTransactionBlock({transactionBlock:t.build({overrides:{gasData:{budget:String(_oe),payment:[]}}})});if(r.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${r.effects.status.error}`,{cause:r});const n=woe*BigInt(t.gasConfig.price||1n),i=BigInt(r.effects.gasUsed.computationCost)+n,s=i+BigInt(r.effects.gasUsed.storageCost)-BigInt(r.effects.gasUsed.storageRebate);t.gasConfig.budget=String(s>i?s:i)}async function Ooe(t,e){if(!t.gasConfig.payment){const n=(await Lf(e).getCoins({owner:t.gasConfig.owner||t.sender,coinType:H1.SUI_TYPE_ARG})).data.filter(i=>!t.inputs.find(o=>{var a;return(a=o.Object)!=null&&a.ImmOrOwnedObject?i.coinObjectId===o.Object.ImmOrOwnedObject.objectId:!1})).map(i=>({objectId:i.coinObjectId,digest:i.digest,version:i.version}));if(!n.length)throw new Error("No valid gas coins found for the transaction.");t.gasConfig.payment=n.map(i=>(0,goe.parse)(voe.ObjectRef,i))}}async function Coe(t,e){const r=t.inputs.filter(l=>{var f;return l.UnresolvedObject&&!(l.UnresolvedObject.version||(f=l.UnresolvedObject)!=null&&f.initialSharedVersion)}),n=[...new Set(r.map(l=>(0,H1.normalizeSuiObjectId)(l.UnresolvedObject.objectId)))],i=n.length?joe(n,boe):[],s=(await Promise.all(i.map(l=>Lf(e).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat(),o=new Map(n.map((l,f)=>[l,s[f]])),a=Array.from(o).filter(([l,f])=>f.error).map(([l,f])=>JSON.stringify(f.error));if(a.length)throw new Error(`The following input objects are invalid: ${a.join(", ")}`);const u=s.map(l=>{if(l.error||!l.data)throw new Error(`Failed to fetch object: ${l.error}`);const f=l.data.owner,d=f&&typeof f=="object"&&"Shared"in f?f.Shared.initial_shared_version:null;return{objectId:l.data.objectId,digest:l.data.digest,version:l.data.version,initialSharedVersion:d}}),c=new Map(n.map((l,f)=>[l,u[f]]));for(const[l,f]of t.inputs.entries()){if(!f.UnresolvedObject)continue;let d;const h=(0,H1.normalizeSuiAddress)(f.UnresolvedObject.objectId),m=c.get(h);f.UnresolvedObject.initialSharedVersion??(m==null?void 0:m.initialSharedVersion)?d=oh.Inputs.SharedObjectRef({objectId:h,initialSharedVersion:f.UnresolvedObject.initialSharedVersion||(m==null?void 0:m.initialSharedVersion),mutable:Ioe(t,l)}):koe(t,l)&&(d=oh.Inputs.ReceivingRef({objectId:h,digest:f.UnresolvedObject.digest??(m==null?void 0:m.digest),version:f.UnresolvedObject.version??(m==null?void 0:m.version)})),t.inputs[t.inputs.indexOf(f)]=d??oh.Inputs.ObjectRef({objectId:h,digest:f.UnresolvedObject.digest??(m==null?void 0:m.digest),version:f.UnresolvedObject.version??(m==null?void 0:m.version)})}}async function Toe(t,e){const{inputs:r,commands:n}=t,i=[],s=new Set;n.forEach(a=>{if(a.MoveCall){if(a.MoveCall._argumentTypes)return;if(a.MoveCall.arguments.map(l=>l.$kind==="Input"?t.inputs[l.Input]:null).some(l=>(l==null?void 0:l.UnresolvedPure)||(l==null?void 0:l.UnresolvedObject))){const l=`${a.MoveCall.package}::${a.MoveCall.module}::${a.MoveCall.function}`;s.add(l),i.push(a.MoveCall)}}switch(a.$kind){case"SplitCoins":a.SplitCoins.amounts.forEach(u=>{B6(u,D6.bcs.U64,t)});break;case"TransferObjects":B6(a.TransferObjects.address,D6.bcs.Address,t);break}});const o=new Map;if(s.size>0){const a=Lf(e);await Promise.all([...s].map(async u=>{const[c,l,f]=u.split("::"),d=await a.getNormalizedMoveFunction({package:c,module:l,function:f});o.set(u,d.parameters.map(h=>(0,ib.normalizedTypeToMoveTypeSignature)(h)))}))}i.length&&await Promise.all(i.map(async a=>{const u=o.get(`${a.package}::${a.module}::${a.function}`);if(!u)return;const l=u.length>0&&(0,ib.isTxContext)(u.at(-1))?u.slice(0,u.length-1):u;a._argumentTypes=l})),n.forEach(a=>{if(!a.MoveCall)return;const u=a.MoveCall,c=`${u.package}::${u.module}::${u.function}`,l=u._argumentTypes;if(l){if(l.length!==a.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${c}`);l.forEach((f,d)=>{var S,O;const h=u.arguments[d];if(h.$kind!=="Input")return;const m=r[h.Input];if(!m.UnresolvedPure&&!m.UnresolvedObject)return;const g=((S=m.UnresolvedPure)==null?void 0:S.value)??((O=m.UnresolvedObject)==null?void 0:O.objectId),x=(0,ib.getPureBcsSchema)(f.body);if(x){h.type="pure",r[r.indexOf(m)]=oh.Inputs.Pure(x.serialize(g));return}if(typeof g!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(g,null,2)}`);h.type="object";const _=m.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:g}}:m;r[h.Input]=_})}})}function Poe(t){t.inputs.forEach((e,r)=>{if(e.$kind!=="Object"&&e.$kind!=="Pure")throw new Error(`Input at index ${r} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(e)}`)})}function B6(t,e,r){if(t.$kind!=="Input")return;const n=r.inputs[t.Input];n.$kind==="UnresolvedPure"&&(r.inputs[t.Input]=oh.Inputs.Pure(e.serialize(n.UnresolvedPure.value)))}function Ioe(t,e){let r=!1;return t.getInputUses(e,(n,i)=>{if(i.MoveCall&&i.MoveCall._argumentTypes){const s=i.MoveCall.arguments.indexOf(n);r=i.MoveCall._argumentTypes[s].ref!=="&"||r}(i.$kind==="MakeMoveVec"||i.$kind==="MergeCoins"||i.$kind==="SplitCoins")&&(r=!0)}),r}function koe(t,e){let r=!1;return t.getInputUses(e,(n,i)=>{if(i.MoveCall&&i.MoveCall._argumentTypes){const s=i.MoveCall.arguments.indexOf(n);r=Aoe(i.MoveCall._argumentTypes[s])||r}}),r}function Aoe(t){return typeof t.body!="object"||!("datatype"in t.body)?!1:t.body.datatype.package==="0x2"&&t.body.datatype.module==="transfer"&&t.body.datatype.type==="Receiving"}function Lf(t){if(!t.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return t.client}function joe(t,e){return Array.from({length:Math.ceil(t.length/e)},(r,n)=>t.slice(n*e,n*e+e))}var t2=Object.defineProperty,Moe=Object.getOwnPropertyDescriptor,$oe=Object.getOwnPropertyNames,Noe=Object.prototype.hasOwnProperty,Roe=(t,e)=>{for(var r in e)t2(t,r,{get:e[r],enumerable:!0})},Doe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $oe(e))!Noe.call(t,i)&&i!==r&&t2(t,i,{get:()=>e[i],enumerable:!(n=Moe(e,i))||n.enumerable});return t},Boe=t=>Doe(t2({},"__esModule",{value:!0}),t),xN={};Roe(xN,{createObjectMethods:()=>Uoe});var SN=Boe(xN);function Uoe(t){function e(r){return t(r)}return e.system=()=>e("0x5"),e.clock=()=>e("0x6"),e.random=()=>e("0x8"),e.denyList=()=>e("0x403"),e.option=({type:r,value:n})=>i=>i.moveCall({typeArguments:[r],target:`0x1::option::${n===null?"none":"some"}`,arguments:n===null?[]:[i.object(n)]}),e}var r2=Object.defineProperty,Foe=Object.getOwnPropertyDescriptor,Loe=Object.getOwnPropertyNames,zoe=Object.prototype.hasOwnProperty,Voe=(t,e)=>{for(var r in e)r2(t,r,{get:e[r],enumerable:!0})},Woe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Loe(e))!zoe.call(t,i)&&i!==r&&r2(t,i,{get:()=>e[i],enumerable:!(n=Foe(e,i))||n.enumerable});return t},Hoe=t=>Woe(r2({},"__esModule",{value:!0}),t),EN={};Voe(EN,{createPure:()=>qoe});var ON=Hoe(EN),Goe=En,zr=$s;function qoe(t){function e(r,n){if(typeof r=="string")return t(ah(r).serialize(n));if(r instanceof Uint8Array||(0,Goe.isSerializedBcs)(r))return t(r);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return e.u8=r=>t(zr.bcs.U8.serialize(r)),e.u16=r=>t(zr.bcs.U16.serialize(r)),e.u32=r=>t(zr.bcs.U32.serialize(r)),e.u64=r=>t(zr.bcs.U64.serialize(r)),e.u128=r=>t(zr.bcs.U128.serialize(r)),e.u256=r=>t(zr.bcs.U256.serialize(r)),e.bool=r=>t(zr.bcs.Bool.serialize(r)),e.string=r=>t(zr.bcs.String.serialize(r)),e.address=r=>t(zr.bcs.Address.serialize(r)),e.id=e.address,e.vector=(r,n)=>t(zr.bcs.vector(ah(r)).serialize(n)),e.option=(r,n)=>t(zr.bcs.option(ah(r)).serialize(n)),e}function ah(t){switch(t){case"u8":return zr.bcs.u8();case"u16":return zr.bcs.u16();case"u32":return zr.bcs.u32();case"u64":return zr.bcs.u64();case"u128":return zr.bcs.u128();case"u256":return zr.bcs.u256();case"bool":return zr.bcs.bool();case"string":return zr.bcs.string();case"id":case"address":return zr.bcs.Address}const e=t.match(/^(vector|option)<(.+)>$/);if(e){const[r,n]=e.slice(1);return r==="vector"?zr.bcs.vector(ah(n)):zr.bcs.option(ah(n))}throw new Error(`Invalid Pure type name: ${t}`)}var n2=Object.defineProperty,Koe=Object.getOwnPropertyDescriptor,Xoe=Object.getOwnPropertyNames,Joe=Object.prototype.hasOwnProperty,Yoe=(t,e)=>{for(var r in e)n2(t,r,{get:e[r],enumerable:!0})},Qoe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Xoe(e))!Joe.call(t,i)&&i!==r&&n2(t,i,{get:()=>e[i],enumerable:!(n=Koe(e,i))||n.enumerable});return t},Zoe=t=>Qoe(n2({},"__esModule",{value:!0}),t),CN={};Yoe(CN,{hashTypedData:()=>rae});var eae=Zoe(CN),tae=Z$;function rae(t,e){const r=Array.from(`${t}::`).map(i=>i.charCodeAt(0)),n=new Uint8Array(r.length+e.length);return n.set(r),n.set(e,r.length),(0,tae.blake2b)(n,{dkLen:32})}var i2=Object.defineProperty,nae=Object.getOwnPropertyDescriptor,iae=Object.getOwnPropertyNames,sae=Object.prototype.hasOwnProperty,oae=(t,e)=>{for(var r in e)i2(t,r,{get:e[r],enumerable:!0})},aae=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of iae(e))!sae.call(t,i)&&i!==r&&i2(t,i,{get:()=>e[i],enumerable:!(n=nae(e,i))||n.enumerable});return t},uae=t=>aae(i2({},"__esModule",{value:!0}),t),TN={};oae(TN,{TransactionDataBuilder:()=>$u});var s2=uae(TN),cae=En,sb=su,p0=$s,lae=fi,ob=Uf,fae=mN,dae=eae;function U6(t){return(0,lae.normalizeSuiAddress)(t).replace("0x","")}class $u{constructor(e){this.version=2,this.sender=(e==null?void 0:e.sender)??null,this.expiration=(e==null?void 0:e.expiration)??null,this.inputs=(e==null?void 0:e.inputs)??[],this.commands=(e==null?void 0:e.commands)??[],this.gasData=(e==null?void 0:e.gasData)??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(e){const n=p0.bcs.TransactionKind.parse(e).ProgrammableTransaction;if(!n)throw new Error("Unable to deserialize from bytes.");return $u.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:n.inputs,commands:n.commands})}static fromBytes(e){const r=p0.bcs.TransactionData.parse(e),n=r==null?void 0:r.V1,i=n.kind.ProgrammableTransaction;if(!n||!i)throw new Error("Unable to deserialize from bytes.");return $u.restore({version:2,sender:n.sender,expiration:n.expiration,gasData:n.gasData,inputs:i.inputs,commands:i.commands})}static restore(e){return e.version===2?new $u((0,sb.parse)(ob.TransactionData,e)):new $u((0,sb.parse)(ob.TransactionData,(0,fae.transactionDataFromV1)(e)))}static getDigestFromBytes(e){const r=(0,dae.hashTypedData)("TransactionData",e);return(0,cae.toBase58)(r)}get gasConfig(){return this.gasData}set gasConfig(e){this.gasData=e}build({maxSizeBytes:e=1/0,overrides:r,onlyTransactionKind:n}={}){const i=this.inputs,s=this.commands,o={ProgrammableTransaction:{inputs:i,commands:s}};if(n)return p0.bcs.TransactionKind.serialize(o,{maxSize:e}).toBytes();const a=(r==null?void 0:r.expiration)??this.expiration,u=(r==null?void 0:r.sender)??this.sender,c={...this.gasData,...r==null?void 0:r.gasConfig,...r==null?void 0:r.gasData};if(!u)throw new Error("Missing transaction sender");if(!c.budget)throw new Error("Missing gas budget");if(!c.payment)throw new Error("Missing gas payment");if(!c.price)throw new Error("Missing gas price");const l={sender:U6(u),expiration:a||{None:!0},gasData:{payment:c.payment,owner:U6(this.gasData.owner??u),price:BigInt(c.price),budget:BigInt(c.budget)},kind:{ProgrammableTransaction:{inputs:i,commands:s}}};return p0.bcs.TransactionData.serialize({V1:l},{maxSize:e}).toBytes()}addInput(e,r){const n=this.inputs.length;return this.inputs.push(r),{Input:n,type:e,$kind:"Input"}}getInputUses(e,r){this.mapArguments((n,i)=>(n.$kind==="Input"&&n.Input===e&&r(n,i),n))}mapArguments(e){for(const r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(i=>e(i,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(i=>e(i,r)),r.TransferObjects.address=e(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=e(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(i=>e(i,r));break;case"MergeCoins":r.MergeCoins.destination=e(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(i=>e(i,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(i=>e(i,r));break;case"Upgrade":r.Upgrade.ticket=e(r.Upgrade.ticket,r);break;case"$Intent":const n=r.$Intent.inputs;r.$Intent.inputs={};for(const[i,s]of Object.entries(n))r.$Intent.inputs[i]=Array.isArray(s)?s.map(o=>e(o,r)):e(s,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(e,r){if(!Array.isArray(r)){this.commands[e]=r;return}const n=r.length-1;this.commands.splice(e,1,...r),n!==0&&this.mapArguments(i=>{switch(i.$kind){case"Result":i.Result>e&&(i.Result+=n);break;case"NestedResult":i.NestedResult[0]>e&&(i.NestedResult[0]+=n);break}return i})}getDigest(){const e=this.build({onlyTransactionKind:!1});return $u.getDigestFromBytes(e)}snapshot(){return(0,sb.parse)(ob.TransactionData,this)}}var o2=Object.defineProperty,hae=Object.getOwnPropertyDescriptor,pae=Object.getOwnPropertyNames,mae=Object.prototype.hasOwnProperty,yae=(t,e)=>{for(var r in e)o2(t,r,{get:e[r],enumerable:!0})},gae=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of pae(e))!mae.call(t,i)&&i!==r&&o2(t,i,{get:()=>e[i],enumerable:!(n=hae(e,i))||n.enumerable});return t},vae=t=>gae(o2({},"__esModule",{value:!0}),t),PN={};yae(PN,{extractMutableReference:()=>IN,extractReference:()=>kN,extractStructTag:()=>wae,getIdFromCallArg:()=>_ae});var bae=vae(PN),cd=fi;function IN(t){return typeof t=="object"&&"MutableReference"in t?t.MutableReference:void 0}function kN(t){return typeof t=="object"&&"Reference"in t?t.Reference:void 0}function wae(t){if(typeof t=="object"&&"Struct"in t)return t;const e=kN(t),r=IN(t);if(typeof e=="object"&&"Struct"in e)return e;if(typeof r=="object"&&"Struct"in r)return r}function _ae(t){if(typeof t=="string")return(0,cd.normalizeSuiAddress)(t);if(t.Object)return t.Object.ImmOrOwnedObject?(0,cd.normalizeSuiAddress)(t.Object.ImmOrOwnedObject.objectId):t.Object.Receiving?(0,cd.normalizeSuiAddress)(t.Object.Receiving.objectId):(0,cd.normalizeSuiAddress)(t.Object.SharedObject.objectId);if(t.UnresolvedObject)return(0,cd.normalizeSuiAddress)(t.UnresolvedObject.objectId)}var a2=Object.defineProperty,xae=Object.getOwnPropertyDescriptor,Sae=Object.getOwnPropertyNames,Eae=Object.prototype.hasOwnProperty,AN=t=>{throw TypeError(t)},Oae=(t,e)=>{for(var r in e)a2(t,r,{get:e[r],enumerable:!0})},Cae=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Sae(e))!Eae.call(t,i)&&i!==r&&a2(t,i,{get:()=>e[i],enumerable:!(n=xae(e,i))||n.enumerable});return t},Tae=t=>Cae(a2({},"__esModule",{value:!0}),t),u2=(t,e,r)=>e.has(t)||AN("Cannot "+r),At=(t,e,r)=>(u2(t,e,"read from private field"),r?r.call(t):e.get(t)),ld=(t,e,r)=>e.has(t)?AN("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),mu=(t,e,r,n)=>(u2(t,e,"write to private field"),e.set(t,r),r),So=(t,e,r)=>(u2(t,e,"access private method"),r),jN={};Oae(jN,{Transaction:()=>Nae,isTransaction:()=>$N});var Ng=Tae(jN),fm=En,ba=su,Pae=fi,yu=YS,Nu=Uf,F6=mN,Iae=roe,m0=Mg,kae=_N,Aae=SN,jae=ON,fd=s2,L6=bae,Md,uh,Iu,Rt,rs,dm,c2,G1,l2;function Mae(t){const e={$kind:"Result",Result:t},r=[],n=i=>r[i]??(r[i]={$kind:"NestedResult",NestedResult:[t,i]});return new Proxy(e,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,s){if(s in i)return Reflect.get(i,s);if(s===Symbol.iterator)return function*(){let a=0;for(;;)yield n(a),a++};if(typeof s=="symbol")return;const o=parseInt(s,10);if(!(Number.isNaN(o)||o<0))return n(o)}})}const MN=Symbol.for("@mysten/transaction");function $N(t){return!!t&&typeof t=="object"&&t[MN]===!0}const z6={buildPlugins:new Map,serializationPlugins:new Map},ab=Symbol.for("@mysten/transaction/registry");function dd(){try{const t=globalThis;return t[ab]||(t[ab]=z6),t[ab]}catch{return z6}}const $ae=class q1{constructor(){ld(this,rs),ld(this,Md),ld(this,uh),ld(this,Iu,new Map),ld(this,Rt),this.object=(0,Aae.createObjectMethods)(r=>{var s,o;if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,ba.is)(Nu.Argument,r))return r;const n=(0,L6.getIdFromCallArg)(r),i=At(this,Rt).inputs.find(a=>n===(0,L6.getIdFromCallArg)(a));return(s=i==null?void 0:i.Object)!=null&&s.SharedObject&&typeof r=="object"&&((o=r.Object)!=null&&o.SharedObject)&&(i.Object.SharedObject.mutable=i.Object.SharedObject.mutable||r.Object.SharedObject.mutable),i?{$kind:"Input",Input:At(this,Rt).inputs.indexOf(i),type:"object"}:At(this,Rt).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:(0,Pae.normalizeSuiAddress)(r)}}:r)});const e=dd();mu(this,Rt,new fd.TransactionDataBuilder),mu(this,uh,[...e.buildPlugins.values()]),mu(this,Md,[...e.serializationPlugins.values()])}static fromKind(e){const r=new q1;return mu(r,Rt,fd.TransactionDataBuilder.fromKindBytes(typeof e=="string"?(0,fm.fromBase64)(e):e)),r}static from(e){const r=new q1;return $N(e)?mu(r,Rt,new fd.TransactionDataBuilder(e.getData())):typeof e!="string"||!e.startsWith("{")?mu(r,Rt,fd.TransactionDataBuilder.fromBytes(typeof e=="string"?(0,fm.fromBase64)(e):e)):mu(r,Rt,fd.TransactionDataBuilder.restore(JSON.parse(e))),r}static registerGlobalSerializationPlugin(e,r){dd().serializationPlugins.set(e,r??e)}static unregisterGlobalSerializationPlugin(e){dd().serializationPlugins.delete(e)}static registerGlobalBuildPlugin(e,r){dd().buildPlugins.set(e,r??e)}static unregisterGlobalBuildPlugin(e){dd().buildPlugins.delete(e)}addSerializationPlugin(e){At(this,Md).push(e)}addBuildPlugin(e){At(this,uh).push(e)}addIntentResolver(e,r){if(At(this,Iu).has(e)&&At(this,Iu).get(e)!==r)throw new Error(`Intent resolver for ${e} already exists`);At(this,Iu).set(e,r)}setSender(e){At(this,Rt).sender=e}setSenderIfNotSet(e){At(this,Rt).sender||(At(this,Rt).sender=e)}setExpiration(e){At(this,Rt).expiration=e?(0,ba.parse)(Nu.TransactionExpiration,e):null}setGasPrice(e){At(this,Rt).gasConfig.price=String(e)}setGasBudget(e){At(this,Rt).gasConfig.budget=String(e)}setGasBudgetIfNotSet(e){At(this,Rt).gasData.budget==null&&(At(this,Rt).gasConfig.budget=String(e))}setGasOwner(e){At(this,Rt).gasConfig.owner=e}setGasPayment(e){At(this,Rt).gasConfig.payment=e.map(r=>(0,ba.parse)(Nu.ObjectRef,r))}get blockData(){return(0,F6.serializeV1TransactionData)(At(this,Rt).snapshot())}getData(){return At(this,Rt).snapshot()}get[MN](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:(0,jae.createPure)(e=>(0,fm.isSerializedBcs)(e)?At(this,Rt).addInput("pure",{$kind:"Pure",Pure:{bytes:e.toBase64()}}):At(this,Rt).addInput("pure",(0,ba.is)(Nu.NormalizedCallArg,e)?(0,ba.parse)(Nu.NormalizedCallArg,e):e instanceof Uint8Array?m0.Inputs.Pure(e):{$kind:"UnresolvedPure",UnresolvedPure:{value:e}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...e){return this.object(m0.Inputs.ObjectRef(...e))}receivingRef(...e){return this.object(m0.Inputs.ReceivingRef(...e))}sharedObjectRef(...e){return this.object(m0.Inputs.SharedObjectRef(...e))}add(e){if(typeof e=="function")return e(this);const r=At(this,Rt).commands.push(e);return Mae(r-1)}splitCoins(e,r){return this.add(yu.Commands.SplitCoins(typeof e=="string"?this.object(e):So(this,rs,c2).call(this,e),r.map(n=>typeof n=="number"||typeof n=="bigint"||typeof n=="string"?this.pure.u64(n):So(this,rs,dm).call(this,n))))}mergeCoins(e,r){return this.add(yu.Commands.MergeCoins(this.object(e),r.map(n=>this.object(n))))}publish({modules:e,dependencies:r}){return this.add(yu.Commands.Publish({modules:e,dependencies:r}))}upgrade({modules:e,dependencies:r,package:n,ticket:i}){return this.add(yu.Commands.Upgrade({modules:e,dependencies:r,package:n,ticket:this.object(i)}))}moveCall({arguments:e,...r}){return this.add(yu.Commands.MoveCall({...r,arguments:e==null?void 0:e.map(n=>So(this,rs,dm).call(this,n))}))}transferObjects(e,r){return this.add(yu.Commands.TransferObjects(e.map(n=>this.object(n)),typeof r=="string"?this.pure.address(r):So(this,rs,dm).call(this,r)))}makeMoveVec({type:e,elements:r}){return this.add(yu.Commands.MakeMoveVec({type:e,elements:r.map(n=>this.object(n))}))}serialize(){return JSON.stringify((0,F6.serializeV1TransactionData)(At(this,Rt).snapshot()))}async toJSON(e={}){return await this.prepareForSerialization(e),JSON.stringify((0,ba.parse)(Iae.SerializedTransactionDataV2,At(this,Rt).snapshot()),(r,n)=>typeof n=="bigint"?n.toString():n,2)}async sign(e){const{signer:r,...n}=e,i=await this.build(n);return r.signTransaction(i)}async build(e={}){return await this.prepareForSerialization(e),await So(this,rs,G1).call(this,e),At(this,Rt).build({onlyTransactionKind:e.onlyTransactionKind})}async getDigest(e={}){return await So(this,rs,G1).call(this,e),At(this,Rt).getDigest()}async prepareForSerialization(e){var i;const r=new Set;for(const s of At(this,Rt).commands)s.$Intent&&r.add(s.$Intent.name);const n=[...At(this,Md)];for(const s of r)if(!((i=e.supportedIntents)!=null&&i.includes(s))){if(!At(this,Iu).has(s))throw new Error(`Missing intent resolver for ${s}`);n.push(At(this,Iu).get(s))}await So(this,rs,l2).call(this,n,e)}};Md=new WeakMap;uh=new WeakMap;Iu=new WeakMap;Rt=new WeakMap;rs=new WeakSet;dm=function(t){return(0,fm.isSerializedBcs)(t)?this.pure(t):So(this,rs,c2).call(this,t)};c2=function(t){return typeof t=="function"?(0,ba.parse)(Nu.Argument,t(this)):(0,ba.parse)(Nu.Argument,t)};G1=async function(t){if(!t.onlyTransactionKind&&!At(this,Rt).sender)throw new Error("Missing transaction sender");await So(this,rs,l2).call(this,[...At(this,uh),kae.resolveTransactionData],t)};l2=async function(t,e){const r=n=>{if(n>=t.length)return()=>{};const i=t[n];return async()=>{const s=r(n+1);let o=!1,a=!1;if(await i(At(this,Rt),e,async()=>{if(o)throw new Error(`next() was call multiple times in TransactionPlugin ${n}`);o=!0,await s(),a=!0}),!o)throw new Error(`next() was not called in TransactionPlugin ${n}`);if(!a)throw new Error(`next() was not awaited in TransactionPlugin ${n}`)}};await r(0)()};let Nae=$ae;var f2=Object.defineProperty,Rae=Object.getOwnPropertyDescriptor,Dae=Object.getOwnPropertyNames,Bae=Object.prototype.hasOwnProperty,NN=t=>{throw TypeError(t)},Uae=(t,e)=>{for(var r in e)f2(t,r,{get:e[r],enumerable:!0})},Fae=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Dae(e))!Bae.call(t,i)&&i!==r&&f2(t,i,{get:()=>e[i],enumerable:!(n=Rae(e,i))||n.enumerable});return t},Lae=t=>Fae(f2({},"__esModule",{value:!0}),t),RN=(t,e,r)=>e.has(t)||NN("Cannot "+r),hn=(t,e,r)=>(RN(t,e,"read from private field"),r?r.call(t):e.get(t)),DN=(t,e,r)=>e.has(t)?NN("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),zae=(t,e,r,n)=>(RN(t,e,"write to private field"),e.set(t,r),r),BN={};Uae(BN,{AsyncCache:()=>FN,InMemoryCache:()=>LN,ObjectCache:()=>Vae});var UN=Lae(BN),ub=fi,ku,jn;class FN{async getObject(e){const[r,n]=await Promise.all([this.get("OwnedObject",e),this.get("SharedOrImmutableObject",e)]);return r??n??null}async getObjects(e){return Promise.all([...e.map(r=>this.getObject(r))])}async addObject(e){return e.owner?await this.set("OwnedObject",e.objectId,e):await this.set("SharedOrImmutableObject",e.objectId,e),e}async addObjects(e){await Promise.all(e.map(async r=>this.addObject(r)))}async deleteObject(e){await Promise.all([this.delete("OwnedObject",e),this.delete("SharedOrImmutableObject",e)])}async deleteObjects(e){await Promise.all(e.map(r=>this.deleteObject(r)))}async getMoveFunctionDefinition(e){const r=`${(0,ub.normalizeSuiAddress)(e.package)}::${e.module}::${e.function}`;return this.get("MoveFunction",r)}async addMoveFunctionDefinition(e){const r=(0,ub.normalizeSuiAddress)(e.package),n=`${r}::${e.module}::${e.function}`,i={...e,package:r};return await this.set("MoveFunction",n,i),i}async deleteMoveFunctionDefinition(e){const r=`${(0,ub.normalizeSuiAddress)(e.package)}::${e.module}::${e.function}`;await this.delete("MoveFunction",r)}async getCustom(e){return this.get("Custom",e)}async setCustom(e,r){return this.set("Custom",e,r)}async deleteCustom(e){return this.delete("Custom",e)}}class LN extends FN{constructor(){super(...arguments),DN(this,ku,{OwnedObject:new Map,SharedOrImmutableObject:new Map,MoveFunction:new Map,Custom:new Map})}async get(e,r){return hn(this,ku)[e].get(r)??null}async set(e,r,n){hn(this,ku)[e].set(r,n)}async delete(e,r){hn(this,ku)[e].delete(r)}async clear(e){if(e)hn(this,ku)[e].clear();else for(const r of Object.values(hn(this,ku)))r.clear()}}ku=new WeakMap;class Vae{constructor({cache:e=new LN}){DN(this,jn),zae(this,jn,e)}asPlugin(){return async(e,r,n)=>{const i=e.inputs.filter(a=>a.UnresolvedObject).map(a=>a.UnresolvedObject.objectId),s=(await hn(this,jn).getObjects(i)).filter(a=>a!==null),o=new Map(s.map(a=>[a.objectId,a]));for(const a of e.inputs){if(!a.UnresolvedObject)continue;const u=o.get(a.UnresolvedObject.objectId);u&&(u.initialSharedVersion&&!a.UnresolvedObject.initialSharedVersion?a.UnresolvedObject.initialSharedVersion=u.initialSharedVersion:(u.version&&!a.UnresolvedObject.version&&(a.UnresolvedObject.version=u.version),u.digest&&!a.UnresolvedObject.digest&&(a.UnresolvedObject.digest=u.digest)))}await Promise.all(e.commands.map(async a=>{if(a.MoveCall){const u=await this.getMoveFunctionDefinition({package:a.MoveCall.package,module:a.MoveCall.module,function:a.MoveCall.function});u&&(a.MoveCall._argumentTypes=u.parameters)}})),await n(),await Promise.all(e.commands.map(async a=>{var u;(u=a.MoveCall)!=null&&u._argumentTypes&&await hn(this,jn).addMoveFunctionDefinition({package:a.MoveCall.package,module:a.MoveCall.module,function:a.MoveCall.function,parameters:a.MoveCall._argumentTypes})}))}}async clear(){await hn(this,jn).clear()}async getMoveFunctionDefinition(e){return hn(this,jn).getMoveFunctionDefinition(e)}async getObjects(e){return hn(this,jn).getObjects(e)}async deleteObjects(e){return hn(this,jn).deleteObjects(e)}async clearOwnedObjects(){await hn(this,jn).clear("OwnedObject")}async clearCustom(){await hn(this,jn).clear("Custom")}async getCustom(e){return hn(this,jn).getCustom(e)}async setCustom(e,r){return hn(this,jn).setCustom(e,r)}async deleteCustom(e){return hn(this,jn).deleteCustom(e)}async applyEffects(e){if(!e.V2)throw new Error(`Unsupported transaction effects version ${e.$kind}`);const{lamportVersion:r,changedObjects:n}=e.V2,i=[],s=[];n.forEach(([o,a])=>{var u;if(a.outputState.NotExist)i.push(o);else if(a.outputState.ObjectWrite){const[c,l]=a.outputState.ObjectWrite;s.push({objectId:o,digest:c,version:r,owner:l.AddressOwner??l.ObjectOwner??null,initialSharedVersion:((u=l.Shared)==null?void 0:u.initialSharedVersion)??null})}}),await Promise.all([hn(this,jn).addObjects(s),hn(this,jn).deleteObjects(i)])}}jn=new WeakMap;var d2=Object.defineProperty,Wae=Object.getOwnPropertyDescriptor,Hae=Object.getOwnPropertyNames,Gae=Object.prototype.hasOwnProperty,zN=t=>{throw TypeError(t)},qae=(t,e)=>{for(var r in e)d2(t,r,{get:e[r],enumerable:!0})},Kae=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hae(e))!Gae.call(t,i)&&i!==r&&d2(t,i,{get:()=>e[i],enumerable:!(n=Wae(e,i))||n.enumerable});return t},Xae=t=>Kae(d2({},"__esModule",{value:!0}),t),VN=(t,e,r)=>e.has(t)||zN("Cannot "+r),hd=(t,e,r)=>(VN(t,e,"read from private field"),r?r.call(t):e.get(t)),V6=(t,e,r)=>e.has(t)?zN("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),cb=(t,e,r,n)=>(VN(t,e,"write to private field"),e.set(t,r),r),WN={};qae(WN,{CachingTransactionExecutor:()=>Zae});var HN=Xae(WN),Jae=$s,Yae=UN,Qae=Ng,el,tl;class Zae{constructor({client:e,...r}){V6(this,el),V6(this,tl,null),cb(this,el,e),this.cache=new Yae.ObjectCache(r)}async reset(){await Promise.all([this.cache.clearOwnedObjects(),this.cache.clearCustom(),this.waitForLastTransaction()])}async buildTransaction({transaction:e,...r}){return e.addBuildPlugin(this.cache.asPlugin()),e.build({client:hd(this,el),...r})}async executeTransaction({transaction:e,options:r,...n}){const i=(0,Qae.isTransaction)(e)?await this.buildTransaction({transaction:e}):e,s=await hd(this,el).executeTransactionBlock({...n,transactionBlock:i,options:{...r,showRawEffects:!0}});if(s.rawEffects){const o=Jae.bcs.TransactionEffects.parse(Uint8Array.from(s.rawEffects));await this.applyEffects(o)}return s}async signAndExecuteTransaction({options:e,transaction:r,...n}){r.setSenderIfNotSet(n.signer.toSuiAddress());const i=await this.buildTransaction({transaction:r}),{signature:s}=await n.signer.signTransaction(i);return await this.executeTransaction({transaction:i,signature:s,options:e})}async applyEffects(e){var r;cb(this,tl,((r=e.V2)==null?void 0:r.transactionDigest)??null),await this.cache.applyEffects(e)}async waitForLastTransaction(){hd(this,tl)&&(await hd(this,el).waitForTransaction({digest:hd(this,tl)}),cb(this,tl,null))}}el=new WeakMap;tl=new WeakMap;var h2=Object.defineProperty,eue=Object.getOwnPropertyDescriptor,tue=Object.getOwnPropertyNames,rue=Object.prototype.hasOwnProperty,GN=t=>{throw TypeError(t)},nue=(t,e)=>{for(var r in e)h2(t,r,{get:e[r],enumerable:!0})},iue=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of tue(e))!rue.call(t,i)&&i!==r&&h2(t,i,{get:()=>e[i],enumerable:!(n=eue(e,i))||n.enumerable});return t},sue=t=>iue(h2({},"__esModule",{value:!0}),t),oue=(t,e,r)=>e.has(t)||GN("Cannot "+r),bs=(t,e,r)=>(oue(t,e,"read from private field"),r?r.call(t):e.get(t)),qN=(t,e,r)=>e.has(t)?GN("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),KN={};nue(KN,{ParallelQueue:()=>uue,SerialQueue:()=>aue});var XN=sue(KN),ma,Au;class aue{constructor(){qN(this,ma,[])}async runTask(e){return new Promise((r,n)=>{bs(this,ma).push(()=>{e().finally(()=>{bs(this,ma).shift(),bs(this,ma).length>0&&bs(this,ma)[0]()}).then(r,n)}),bs(this,ma).length===1&&bs(this,ma)[0]()})}}ma=new WeakMap;class uue{constructor(e){qN(this,Au,[]),this.activeTasks=0,this.maxTasks=e}runTask(e){return new Promise((r,n)=>{this.activeTasks{bs(this,Au).length>0?bs(this,Au).shift()():this.activeTasks--}).then(r,n)):bs(this,Au).push(()=>{e().finally(()=>{bs(this,Au).length>0?bs(this,Au).shift()():this.activeTasks--}).then(r,n)})})}}Au=new WeakMap;var p2=Object.defineProperty,cue=Object.getOwnPropertyDescriptor,lue=Object.getOwnPropertyNames,fue=Object.prototype.hasOwnProperty,JN=t=>{throw TypeError(t)},due=(t,e)=>{for(var r in e)p2(t,r,{get:e[r],enumerable:!0})},hue=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of lue(e))!fue.call(t,i)&&i!==r&&p2(t,i,{get:()=>e[i],enumerable:!(n=cue(e,i))||n.enumerable});return t},pue=t=>hue(p2({},"__esModule",{value:!0}),t),YN=(t,e,r)=>e.has(t)||JN("Cannot "+r),kn=(t,e,r)=>(YN(t,e,"read from private field"),r?r.call(t):e.get(t)),Lc=(t,e,r)=>e.has(t)?JN("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),lb=(t,e,r,n)=>(YN(t,e,"write to private field"),e.set(t,r),r),QN={};due(QN,{SerialTransactionExecutor:()=>bue,getGasCoinFromEffects:()=>eR});var ZN=pue(QN),mue=En,yue=$s,W6=Ng,gue=HN,vue=XN,hm,$d,Yi,pm,K1,mm;class bue{constructor({signer:e,defaultGasBudget:r=50000000n,...n}){Lc(this,hm,new vue.SerialQueue),Lc(this,$d),Lc(this,Yi),Lc(this,pm),Lc(this,K1,async i=>{if(!i.V2)return;const s=eR(i).ref;s?kn(this,Yi).cache.setCustom("gasCoin",s):kn(this,Yi).cache.deleteCustom("gasCoin")}),Lc(this,mm,async i=>{const s=await kn(this,Yi).cache.getCustom("gasCoin"),o=W6.Transaction.from(i);return s&&o.setGasPayment([s]),o.setGasBudgetIfNotSet(kn(this,pm)),o.setSenderIfNotSet(kn(this,$d).toSuiAddress()),kn(this,Yi).buildTransaction({transaction:o})}),lb(this,$d,e),lb(this,pm,r),lb(this,Yi,new gue.CachingTransactionExecutor({client:n.client,cache:n.cache}))}async applyEffects(e){return Promise.all([kn(this,K1).call(this,e),kn(this,Yi).cache.applyEffects(e)])}async buildTransaction(e){return kn(this,hm).runTask(()=>kn(this,mm).call(this,e))}resetCache(){return kn(this,Yi).reset()}waitForLastTransaction(){return kn(this,Yi).waitForLastTransaction()}executeTransaction(e,r){return kn(this,hm).runTask(async()=>{const n=(0,W6.isTransaction)(e)?await kn(this,mm).call(this,e):e,{signature:i}=await kn(this,$d).signTransaction(n),s=await kn(this,Yi).executeTransaction({signature:i,transaction:n,options:r}).catch(async u=>{throw await this.resetCache(),u}),o=Uint8Array.from(s.rawEffects),a=yue.bcs.TransactionEffects.parse(o);return await this.applyEffects(a),{digest:s.digest,effects:(0,mue.toBase64)(o),data:s}})}}hm=new WeakMap;$d=new WeakMap;Yi=new WeakMap;pm=new WeakMap;K1=new WeakMap;mm=new WeakMap;function eR(t){if(!t.V2)throw new Error("Unexpected effects version");const e=t.V2.changedObjects[t.V2.gasObjectIndex];if(!e)throw new Error("Gas object not found in effects");const[r,{outputState:n}]=e;if(!n.ObjectWrite)throw new Error("Unexpected gas object state");const[i,s]=n.ObjectWrite;return{ref:{objectId:r,digest:i,version:t.V2.lamportVersion},owner:s.AddressOwner||s.ObjectOwner}}var m2=Object.defineProperty,wue=Object.getOwnPropertyDescriptor,_ue=Object.getOwnPropertyNames,xue=Object.prototype.hasOwnProperty,tR=t=>{throw TypeError(t)},Sue=(t,e)=>{for(var r in e)m2(t,r,{get:e[r],enumerable:!0})},Eue=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _ue(e))!xue.call(t,i)&&i!==r&&m2(t,i,{get:()=>e[i],enumerable:!(n=wue(e,i))||n.enumerable});return t},Oue=t=>Eue(m2({},"__esModule",{value:!0}),t),y2=(t,e,r)=>e.has(t)||tR("Cannot "+r),Ve=(t,e,r)=>(y2(t,e,"read from private field"),r?r.call(t):e.get(t)),tn=(t,e,r)=>e.has(t)?tR("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),Lr=(t,e,r,n)=>(y2(t,e,"write to private field"),e.set(t,r),r),zi=(t,e,r)=>(y2(t,e,"access private method"),r),H6=(t,e,r,n)=>({set _(i){Lr(t,e,i)},get _(){return Ve(t,e,n)}}),rR={};Sue(rR,{ParallelTransactionExecutor:()=>Aue});var Cue=Oue(rR),Tue=En,nR=$s,Pue=Ng,Iue=s2,kue=HN,G6=XN,iR=ZN,Va,so,Cy,Gh,ch,qh,Ty,zl,Gn,Wa,sc,Wu,g2,ym,Kh,_l,_f,Po,ni,sR,oR,Xh,v2,aR,X1,uR;const pd={coinBatchSize:20,initialCoinBalance:200000000n,minimumCoinBalance:50000000n,maxPoolSize:50,epochBoundaryWindow:1e3};class Aue{constructor(e){tn(this,ni),tn(this,Va),tn(this,so),tn(this,Cy),tn(this,Gh),tn(this,ch),tn(this,qh),tn(this,Ty),tn(this,zl),tn(this,Gn),tn(this,Wa,[]),tn(this,sc),tn(this,Wu,new Map),tn(this,g2,new G6.SerialQueue),tn(this,ym),tn(this,Kh,null),tn(this,_l,null),tn(this,_f,0),tn(this,Po,null),Lr(this,Va,e.signer),Lr(this,so,e.client),Lr(this,Cy,e.coinBatchSize??pd.coinBatchSize),Lr(this,Gh,e.initialCoinBalance??pd.initialCoinBalance),Lr(this,ch,e.minimumCoinBalance??pd.minimumCoinBalance),Lr(this,Ty,e.defaultGasBudget??Ve(this,ch)),Lr(this,qh,e.epochBoundaryWindow??pd.epochBoundaryWindow),Lr(this,zl,e.maxPoolSize??pd.maxPoolSize),Lr(this,sc,new kue.CachingTransactionExecutor({client:e.client,cache:e.cache})),Lr(this,ym,new G6.ParallelQueue(Ve(this,zl))),Lr(this,Gn,e.sourceCoins?new Map(e.sourceCoins.map(r=>[r,null])):null)}resetCache(){return Lr(this,Po,null),zi(this,ni,Xh).call(this,()=>Ve(this,sc).reset())}async waitForLastTransaction(){await zi(this,ni,Xh).call(this,()=>zi(this,ni,v2).call(this))}async executeTransaction(e,r){const{promise:n,resolve:i,reject:s}=jue(),o=await zi(this,ni,sR).call(this,e),a=()=>{Ve(this,ym).runTask(()=>zi(this,ni,oR).call(this,e,o,r).then(i,s))},u=new Set;return o.forEach(c=>{Ve(this,Wu).get(c)?(u.add(c),Ve(this,Wu).get(c).push(()=>{u.delete(c),u.size===0&&a()})):Ve(this,Wu).set(c,[])}),u.size===0&&a(),n}}Va=new WeakMap;so=new WeakMap;Cy=new WeakMap;Gh=new WeakMap;ch=new WeakMap;qh=new WeakMap;Ty=new WeakMap;zl=new WeakMap;Gn=new WeakMap;Wa=new WeakMap;sc=new WeakMap;Wu=new WeakMap;g2=new WeakMap;ym=new WeakMap;Kh=new WeakMap;_l=new WeakMap;_f=new WeakMap;Po=new WeakMap;ni=new WeakSet;sR=async function(t){const e=new Set;let r=!1;return t.addSerializationPlugin(async(n,i,s)=>{await s(),!r&&(r=!0,n.inputs.forEach(o=>{var a,u,c,l,f;(u=(a=o.Object)==null?void 0:a.ImmOrOwnedObject)!=null&&u.objectId?e.add(o.Object.ImmOrOwnedObject.objectId):(l=(c=o.Object)==null?void 0:c.Receiving)!=null&&l.objectId?e.add(o.Object.Receiving.objectId):(f=o.UnresolvedObject)!=null&&f.objectId&&!o.UnresolvedObject.initialSharedVersion&&e.add(o.UnresolvedObject.objectId)}))}),await t.prepareForSerialization({client:Ve(this,so)}),e};oR=async function(t,e,r){var i;let n;try{t.setSenderIfNotSet(Ve(this,Va).toSuiAddress()),await Ve(this,g2).runTask(async()=>{t.getData().gasData.price||t.setGasPrice(await zi(this,ni,X1).call(this)),t.setGasBudgetIfNotSet(Ve(this,Ty)),await zi(this,ni,Xh).call(this),n=await zi(this,ni,aR).call(this),H6(this,_f)._++,t.setGasPayment([{objectId:n.id,version:n.version,digest:n.digest}]),await Ve(this,sc).buildTransaction({transaction:t,onlyTransactionKind:!0})});const s=await t.build({client:Ve(this,so)}),{signature:o}=await Ve(this,Va).signTransaction(s),a=await Ve(this,sc).executeTransaction({transaction:s,signature:o,options:{...r,showEffects:!0}}),u=Uint8Array.from(a.rawEffects),c=nR.bcs.TransactionEffects.parse(u),l=(0,iR.getGasCoinFromEffects)(c),f=(i=c.V2)==null?void 0:i.gasUsed;if(n&&f&&l.owner===Ve(this,Va).toSuiAddress()){const d=BigInt(f.computationCost)+BigInt(f.storageCost)+BigInt(f.storageCost)-BigInt(f.storageRebate);let h=!1;new Iue.TransactionDataBuilder(t.getData()).mapArguments(m=>(m.$kind==="GasCoin"&&(h=!0),m)),!h&&n.balance>=Ve(this,ch)?Ve(this,Wa).push({id:l.ref.objectId,version:l.ref.version,digest:l.ref.digest,balance:n.balance-d}):(Ve(this,Gn)||Lr(this,Gn,new Map),Ve(this,Gn).set(l.ref.objectId,l.ref))}return Lr(this,Kh,a.digest),{digest:a.digest,effects:(0,Tue.toBase64)(u),data:a}}catch(s){throw n&&(Ve(this,Gn)||Lr(this,Gn,new Map),Ve(this,Gn).set(n.id,null)),await zi(this,ni,Xh).call(this,async()=>{await Promise.all([Ve(this,sc).cache.deleteObjects([...e]),zi(this,ni,v2).call(this)])}),s}finally{e.forEach(s=>{const o=Ve(this,Wu).get(s);o&&o.length>0?o.shift()():o&&Ve(this,Wu).delete(s)}),H6(this,_f)._--}};Xh=async function(t){Ve(this,_l)&&await Ve(this,_l),Lr(this,_l,(t==null?void 0:t().then(()=>{Lr(this,_l,null)},()=>{}))??null)};v2=async function(){const t=Ve(this,Kh);t&&(Lr(this,Kh,null),await Ve(this,so).waitForTransaction({digest:t}))};aR=async function(){if(Ve(this,Wa).length===0&&Ve(this,_f)<=Ve(this,zl)&&await zi(this,ni,uR).call(this),Ve(this,Wa).length===0)throw new Error("No coins available");return Ve(this,Wa).shift()};X1=async function(){if((Ve(this,Po)?Ve(this,Po).expiration-Ve(this,qh)-Date.now():0)>0)return Ve(this,Po).price;if(Ve(this,Po)){const r=Math.max(Ve(this,Po).expiration+Ve(this,qh)-Date.now(),1e3);await new Promise(n=>setTimeout(n,r))}const e=await Ve(this,so).getLatestSuiSystemState();return Lr(this,Po,{price:BigInt(e.referenceGasPrice),expiration:Number.parseInt(e.epochStartTimestampMs,10)+Number.parseInt(e.epochDurationMs,10)}),zi(this,ni,X1).call(this)};uR=async function(){var c;const t=Math.min(Ve(this,Cy),Ve(this,zl)-(Ve(this,Wa).length+Ve(this,_f))+1);if(t===0)return;const e=new Pue.Transaction,r=Ve(this,Va).toSuiAddress();if(e.setSender(r),Ve(this,Gn)){const l=[],f=[];for(const[d,h]of Ve(this,Gn))h?l.push(h):f.push(d);if(f.length>0){const d=await Ve(this,so).multiGetObjects({ids:f});l.push(...d.filter(h=>h.data!==null).map(({data:h})=>({objectId:h.objectId,version:h.version,digest:h.digest})))}e.setGasPayment(l),Lr(this,Gn,new Map)}const n=new Array(t).fill(Ve(this,Gh)),i=e.splitCoins(e.gas,n),s=[];for(let l=0;l{var h;d===((h=a.V2)==null?void 0:h.gasObjectIndex)||!f.ObjectWrite||Ve(this,Wa).push({id:l,version:a.V2.lamportVersion,digest:f.ObjectWrite[0],balance:BigInt(Ve(this,Gh))})}),Ve(this,Gn)||Lr(this,Gn,new Map);const u=(0,iR.getGasCoinFromEffects)(a).ref;Ve(this,Gn).set(u.objectId,u),await Ve(this,so).waitForTransaction({digest:o.digest})};function jue(){let t,e;return{promise:new Promise((n,i)=>{t=n,e=i}),resolve:t,reject:e}}var b2=Object.defineProperty,Mue=Object.getOwnPropertyDescriptor,$ue=Object.getOwnPropertyNames,Nue=Object.prototype.hasOwnProperty,Rue=(t,e)=>{for(var r in e)b2(t,r,{get:e[r],enumerable:!0})},Due=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $ue(e))!Nue.call(t,i)&&i!==r&&b2(t,i,{get:()=>e[i],enumerable:!(n=Mue(e,i))||n.enumerable});return t},Bue=t=>Due(b2({},"__esModule",{value:!0}),t),cR={};Rue(cR,{coinWithBalance:()=>zue});var Uue=Bue(cR),gm=su,Fue=$s,lR=fi,vm=YS,q6=Mg,Lue=_N;const Py="CoinWithBalance",K6=(0,lR.normalizeStructTag)("0x2::sui::SUI");function zue({type:t=K6,balance:e,useGasCoin:r=!0}){return n=>{n.addIntentResolver(Py,Wue);const i=t==="gas"?t:(0,lR.normalizeStructTag)(t);return n.add(vm.Commands.Intent({name:Py,inputs:{},data:{type:i===K6&&r?"gas":i,balance:BigInt(e)}}))}}const Vue=(0,gm.object)({type:(0,gm.string)(),balance:(0,gm.bigint)()});async function Wue(t,e,r){var c,l;const n=new Set,i=new Map;if(!t.sender)throw new Error("Sender must be set to resolve CoinWithBalance");for(const f of t.commands)if(f.$kind==="$Intent"&&f.$Intent.name===Py){const{type:d,balance:h}=(0,gm.parse)(Vue,f.$Intent.data);d!=="gas"&&h>0n&&n.add(d),i.set(d,(i.get(d)??0n)+h)}const s=new Set;for(const f of t.inputs)(c=f.Object)!=null&&c.ImmOrOwnedObject&&s.add(f.Object.ImmOrOwnedObject.objectId),(l=f.UnresolvedObject)!=null&&l.objectId&&s.add(f.UnresolvedObject.objectId);const o=new Map,a=(0,Lue.getClient)(e);await Promise.all([...n].map(async f=>{o.set(f,await Hue({coinType:f,balance:i.get(f),client:a,owner:t.sender,usedIds:s}))}));const u=new Map;u.set("gas",{$kind:"GasCoin",GasCoin:!0});for(const[f,d]of t.commands.entries()){if(d.$kind!=="$Intent"||d.$Intent.name!==Py)continue;const{type:h,balance:m}=d.$Intent.data;if(m===0n){t.replaceCommand(f,vm.Commands.MoveCall({target:"0x2::coin::zero",typeArguments:[h]}));continue}const g=[];if(!u.has(h)){const[x,..._]=o.get(h).map(S=>t.addInput("object",q6.Inputs.ObjectRef({objectId:S.coinObjectId,digest:S.digest,version:S.version})));_.length>0&&g.push(vm.Commands.MergeCoins(x,_)),u.set(h,x)}g.push(vm.Commands.SplitCoins(u.get(h),[t.addInput("pure",q6.Inputs.Pure(Fue.bcs.u64().serialize(m)))])),t.replaceCommand(f,g),t.mapArguments(x=>x.$kind==="Result"&&x.Result===f?{$kind:"NestedResult",NestedResult:[f+g.length-1,0]}:x)}return r()}async function Hue({coinType:t,balance:e,client:r,owner:n,usedIds:i}){let s=e;const o=[];return a();async function a(u=null){const{data:c,hasNextPage:l,nextCursor:f}=await r.getCoins({owner:n,coinType:t,cursor:u}),d=c.sort((h,m)=>Number(BigInt(m.balance)-BigInt(h.balance)));for(const h of d){if(i.has(h.coinObjectId))continue;const m=BigInt(h.balance);if(o.push(h),s-=m,s<=0)return o}if(l)return a(f);throw new Error(`Not enough coins of type ${t} to satisfy requested balance`)}}var w2=Object.defineProperty,Gue=Object.getOwnPropertyDescriptor,que=Object.getOwnPropertyNames,Kue=Object.prototype.hasOwnProperty,Xue=(t,e)=>{for(var r in e)w2(t,r,{get:e[r],enumerable:!0})},Jue=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of que(e))!Kue.call(t,i)&&i!==r&&w2(t,i,{get:()=>e[i],enumerable:!(n=Gue(e,i))||n.enumerable});return t},Yue=t=>Jue(w2({},"__esModule",{value:!0}),t),fR={};Xue(fR,{Arguments:()=>tce});var Que=Yue(fR),Zue=SN,ece=ON;const tce={pure:(0,ece.createPure)(t=>e=>e.pure(t)),object:(0,Zue.createObjectMethods)(t=>e=>e.object(t)),sharedObjectRef:(...t)=>e=>e.sharedObjectRef(...t),objectRef:(...t)=>e=>e.objectRef(...t),receivingRef:(...t)=>e=>e.receivingRef(...t)};var _2=Object.defineProperty,rce=Object.getOwnPropertyDescriptor,nce=Object.getOwnPropertyNames,ice=Object.prototype.hasOwnProperty,sce=(t,e)=>{for(var r in e)_2(t,r,{get:e[r],enumerable:!0})},oce=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of nce(e))!ice.call(t,i)&&i!==r&&_2(t,i,{get:()=>e[i],enumerable:!(n=rce(e,i))||n.enumerable});return t},ace=t=>oce(_2({},"__esModule",{value:!0}),t),dR={};sce(dR,{findTransactionBlockNames:()=>cce,listToRequests:()=>fce,replaceNames:()=>lce});var uce=ace(dR),hR=J$;const lh="/",cce=t=>{var n;const e=new Set,r=new Set;for(const i of t.commands){if((n=i.MakeMoveVec)!=null&&n.type){X6([i.MakeMoveVec.type]).forEach(a=>{r.add(a)});continue}if(!("MoveCall"in i))continue;const s=i.MoveCall;if(!s)continue;const o=s.package.split("::")[0];if(o.includes(lh)){if(!(0,hR.isValidNamedPackage)(o))throw new Error(`Invalid package name: ${o}`);e.add(o)}X6(s.typeArguments??[]).forEach(a=>{r.add(a)})}return{packages:[...e],types:[...r]}};function X6(t){const e=new Set;for(const r of t)if(r.includes(lh)){if(!(0,hR.isValidNamedType)(r))throw new Error(`Invalid type with names: ${r}`);e.add(r)}return[...e]}const lce=(t,e)=>{var r;for(const n of t.commands){if((r=n.MakeMoveVec)!=null&&r.type){if(!n.MakeMoveVec.type.includes(lh))continue;if(!e.types[n.MakeMoveVec.type])throw new Error(`No resolution found for type: ${n.MakeMoveVec.type}`);n.MakeMoveVec.type=e.types[n.MakeMoveVec.type]}const i=n.MoveCall;if(!i)continue;const s=i.package.split("::"),o=s[0];if(o.includes(lh)&&!e.packages[o])throw new Error(`No address found for package: ${o}`);s[0]=e.packages[o],i.package=s.join("::");const a=i.typeArguments;if(a){for(let u=0;u{const r=[],n=J6(t.packages),i=J6(t.types);for(const[s,o]of n.entries())r.push({id:s,type:"package",name:o});for(const[s,o]of i.entries())r.push({id:s+n.length,type:"moveType",name:o});return dce(r,e)},J6=t=>[...new Set(t)],dce=(t,e)=>{const r=[];for(let n=0;n{for(var r in e)x2(t,r,{get:e[r],enumerable:!0})},gce=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of pce(e))!mce.call(t,i)&&i!==r&&x2(t,i,{get:()=>e[i],enumerable:!(n=hce(e,i))||n.enumerable});return t},vce=t=>gce(x2({},"__esModule",{value:!0}),t),pR={};yce(pR,{namedPackagesPlugin:()=>wce});var bce=vce(pR),fb=uce;const wce=({suiGraphQLClient:t,pageSize:e=10,overrides:r={packages:{},types:{}}})=>{const n={packages:{...r.packages},types:{...r.types}};return async(s,o,a)=>{const u=(0,fb.findTransactionBlockNames)(s),c=(0,fb.listToRequests)({packages:u.packages.filter(l=>!n.packages[l]),types:u.types.filter(l=>!n.types[l])},e);(await Promise.all(c.map(l=>i(t,l)))).forEach(l=>{Object.assign(n.types,l.types),Object.assign(n.packages,l.packages)}),(0,fb.replaceNames)(s,n),await a()};async function i(s,o){const a={packages:{},types:{}};if(o.length===0)return a;const u=`{ + ${o.map(l=>{const f=l.type==="package"?"packageByName":"typeByName",d=l.type==="package"?"address":"repr";return`${Y6(l.id)}: ${f}(name:"${l.name}") { + ${d} + }`})} + }`,c=await s.query({query:u,variables:void 0});if(c.errors)throw new Error(JSON.stringify({query:u,errors:c.errors}));for(const l of o){const f=Y6(l.id);if(!c.data||!c.data[f])throw new Error(`No result found for: ${l.name}`);const d=c.data[f];l.type==="package"&&(a.packages[l.name]=d.address),l.type==="moveType"&&(a.types[l.name]=d.repr)}return a}},Y6=t=>`key_${t}`;var S2=Object.defineProperty,_ce=Object.getOwnPropertyDescriptor,xce=Object.getOwnPropertyNames,Sce=Object.prototype.hasOwnProperty,Ece=(t,e)=>{for(var r in e)S2(t,r,{get:e[r],enumerable:!0})},Oce=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of xce(e))!Sce.call(t,i)&&i!==r&&S2(t,i,{get:()=>e[i],enumerable:!(n=_ce(e,i))||n.enumerable});return t},Cce=t=>Oce(S2({},"__esModule",{value:!0}),t),mR={};Ece(mR,{Arguments:()=>jce.Arguments,AsyncCache:()=>tT.AsyncCache,Commands:()=>Z6.Commands,Inputs:()=>Tce.Inputs,ObjectCache:()=>tT.ObjectCache,ParallelTransactionExecutor:()=>kce.ParallelTransactionExecutor,SerialTransactionExecutor:()=>Ice.SerialTransactionExecutor,Transaction:()=>eT.Transaction,TransactionDataBuilder:()=>Pce.TransactionDataBuilder,UpgradePolicy:()=>Z6.UpgradePolicy,coinWithBalance:()=>Ace.coinWithBalance,getPureBcsSchema:()=>Q6.getPureBcsSchema,isTransaction:()=>eT.isTransaction,namedPackagesPlugin:()=>Mce.namedPackagesPlugin,normalizedTypeToMoveTypeSignature:()=>Q6.normalizedTypeToMoveTypeSignature});var yR=Cce(mR),Q6=nN,Tce=Mg,Z6=YS,eT=Ng,Pce=s2,tT=UN,Ice=ZN,kce=Cue,Ace=Uue,jce=Que,Mce=bce,E2=Object.defineProperty,$ce=Object.getOwnPropertyDescriptor,Nce=Object.getOwnPropertyNames,Rce=Object.prototype.hasOwnProperty,Dce=(t,e)=>{for(var r in e)E2(t,r,{get:e[r],enumerable:!0})},Bce=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Nce(e))!Rce.call(t,i)&&i!==r&&E2(t,i,{get:()=>e[i],enumerable:!(n=$ce(e,i))||n.enumerable});return t},Uce=t=>Bce(E2({},"__esModule",{value:!0}),t),gR={};Dce(gR,{SuiClient:()=>Hce,isSuiClient:()=>Wce});var Fce=Uce(gR),zc=En,Lce=yR,Rr=fi,zce=FS,Vce=X8;const vR=Symbol.for("@mysten/SuiClient");function Wce(t){return typeof t=="object"&&t!==null&&t[vR]===!0}class Hce{get[vR](){return!0}constructor(e){this.transport=e.transport??new Vce.SuiHTTPTransport({url:e.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(e){if(!e.owner||!(0,Rr.isValidSuiAddress)((0,Rr.normalizeSuiAddress)(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[e.owner,e.coinType,e.cursor,e.limit]})}async getAllCoins(e){if(!e.owner||!(0,Rr.isValidSuiAddress)((0,Rr.normalizeSuiAddress)(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[e.owner,e.cursor,e.limit]})}async getBalance(e){if(!e.owner||!(0,Rr.isValidSuiAddress)((0,Rr.normalizeSuiAddress)(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[e.owner,e.coinType]})}async getAllBalances(e){if(!e.owner||!(0,Rr.isValidSuiAddress)((0,Rr.normalizeSuiAddress)(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[e.owner]})}async getCoinMetadata(e){return await this.transport.request({method:"suix_getCoinMetadata",params:[e.coinType]})}async getTotalSupply(e){return await this.transport.request({method:"suix_getTotalSupply",params:[e.coinType]})}async call(e,r){return await this.transport.request({method:e,params:r})}async getMoveFunctionArgTypes(e){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[e.package,e.module,e.function]})}async getNormalizedMoveModulesByPackage(e){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[e.package]})}async getNormalizedMoveModule(e){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[e.package,e.module]})}async getNormalizedMoveFunction(e){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[e.package,e.module,e.function]})}async getNormalizedMoveStruct(e){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[e.package,e.module,e.struct]})}async getOwnedObjects(e){if(!e.owner||!(0,Rr.isValidSuiAddress)((0,Rr.normalizeSuiAddress)(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[e.owner,{filter:e.filter,options:e.options},e.cursor,e.limit]})}async getObject(e){if(!e.id||!(0,Rr.isValidSuiObjectId)((0,Rr.normalizeSuiObjectId)(e.id)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"sui_getObject",params:[e.id,e.options]})}async tryGetPastObject(e){return await this.transport.request({method:"sui_tryGetPastObject",params:[e.id,e.version,e.options]})}async multiGetObjects(e){if(e.ids.forEach(n=>{if(!n||!(0,Rr.isValidSuiObjectId)((0,Rr.normalizeSuiObjectId)(n)))throw new Error(`Invalid Sui Object id ${n}`)}),e.ids.length!==new Set(e.ids).size)throw new Error(`Duplicate object ids in batch call ${e.ids}`);return await this.transport.request({method:"sui_multiGetObjects",params:[e.ids,e.options]})}async queryTransactionBlocks(e){return await this.transport.request({method:"suix_queryTransactionBlocks",params:[{filter:e.filter,options:e.options},e.cursor,e.limit,(e.order||"descending")==="descending"]})}async getTransactionBlock(e){if(!(0,Rr.isValidTransactionDigest)(e.digest))throw new Error("Invalid Transaction digest");return await this.transport.request({method:"sui_getTransactionBlock",params:[e.digest,e.options]})}async multiGetTransactionBlocks(e){if(e.digests.forEach(n=>{if(!(0,Rr.isValidTransactionDigest)(n))throw new Error(`Invalid Transaction digest ${n}`)}),e.digests.length!==new Set(e.digests).size)throw new Error(`Duplicate digests in batch call ${e.digests}`);return await this.transport.request({method:"sui_multiGetTransactionBlocks",params:[e.digests,e.options]})}async executeTransactionBlock({transactionBlock:e,signature:r,options:n,requestType:i}){const s=await this.transport.request({method:"sui_executeTransactionBlock",params:[typeof e=="string"?e:(0,zc.toBase64)(e),Array.isArray(r)?r:[r],n]});if(i==="WaitForLocalExecution")try{await this.waitForTransaction({digest:s.digest})}catch{}return s}async signAndExecuteTransaction({transaction:e,signer:r,...n}){let i;e instanceof Uint8Array?i=e:(e.setSenderIfNotSet(r.toSuiAddress()),i=await e.build({client:this}));const{signature:s,bytes:o}=await r.signTransaction(i);return this.executeTransactionBlock({transactionBlock:o,signature:s,...n})}async getTotalTransactionBlocks(){const e=await this.transport.request({method:"sui_getTotalTransactionBlocks",params:[]});return BigInt(e)}async getReferenceGasPrice(){const e=await this.transport.request({method:"suix_getReferenceGasPrice",params:[]});return BigInt(e)}async getStakes(e){if(!e.owner||!(0,Rr.isValidSuiAddress)((0,Rr.normalizeSuiAddress)(e.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[e.owner]})}async getStakesByIds(e){return e.stakedSuiIds.forEach(r=>{if(!r||!(0,Rr.isValidSuiObjectId)((0,Rr.normalizeSuiObjectId)(r)))throw new Error(`Invalid Sui Stake id ${r}`)}),await this.transport.request({method:"suix_getStakesByIds",params:[e.stakedSuiIds]})}async getLatestSuiSystemState(){return await this.transport.request({method:"suix_getLatestSuiSystemState",params:[]})}async queryEvents(e){return await this.transport.request({method:"suix_queryEvents",params:[e.query,e.cursor,e.limit,(e.order||"descending")==="descending"]})}async subscribeEvent(e){return this.transport.subscribe({method:"suix_subscribeEvent",unsubscribe:"suix_unsubscribeEvent",params:[e.filter],onMessage:e.onMessage})}async subscribeTransaction(e){return this.transport.subscribe({method:"suix_subscribeTransaction",unsubscribe:"suix_unsubscribeTransaction",params:[e.filter],onMessage:e.onMessage})}async devInspectTransactionBlock(e){var n;let r;if((0,Lce.isTransaction)(e.transactionBlock))e.transactionBlock.setSenderIfNotSet(e.sender),r=(0,zc.toBase64)(await e.transactionBlock.build({client:this,onlyTransactionKind:!0}));else if(typeof e.transactionBlock=="string")r=e.transactionBlock;else if(e.transactionBlock instanceof Uint8Array)r=(0,zc.toBase64)(e.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[e.sender,r,(n=e.gasPrice)==null?void 0:n.toString(),e.epoch]})}async dryRunTransactionBlock(e){return await this.transport.request({method:"sui_dryRunTransactionBlock",params:[typeof e.transactionBlock=="string"?e.transactionBlock:(0,zc.toBase64)(e.transactionBlock)]})}async getDynamicFields(e){if(!e.parentId||!(0,Rr.isValidSuiObjectId)((0,Rr.normalizeSuiObjectId)(e.parentId)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"suix_getDynamicFields",params:[e.parentId,e.cursor,e.limit]})}async getDynamicFieldObject(e){return await this.transport.request({method:"suix_getDynamicFieldObject",params:[e.parentId,e.name]})}async getLatestCheckpointSequenceNumber(){const e=await this.transport.request({method:"sui_getLatestCheckpointSequenceNumber",params:[]});return String(e)}async getCheckpoint(e){return await this.transport.request({method:"sui_getCheckpoint",params:[e.id]})}async getCheckpoints(e){return await this.transport.request({method:"sui_getCheckpoints",params:[e.cursor,e==null?void 0:e.limit,e.descendingOrder]})}async getCommitteeInfo(e){return await this.transport.request({method:"suix_getCommitteeInfo",params:[e==null?void 0:e.epoch]})}async getNetworkMetrics(){return await this.transport.request({method:"suix_getNetworkMetrics",params:[]})}async getAddressMetrics(){return await this.transport.request({method:"suix_getLatestAddressMetrics",params:[]})}async getEpochMetrics(e){return await this.transport.request({method:"suix_getEpochMetrics",params:[e==null?void 0:e.cursor,e==null?void 0:e.limit,e==null?void 0:e.descendingOrder]})}async getAllEpochAddressMetrics(e){return await this.transport.request({method:"suix_getAllEpochAddressMetrics",params:[e==null?void 0:e.descendingOrder]})}async getEpochs(e){return await this.transport.request({method:"suix_getEpochs",params:[e==null?void 0:e.cursor,e==null?void 0:e.limit,e==null?void 0:e.descendingOrder]})}async getMoveCallMetrics(){return await this.transport.request({method:"suix_getMoveCallMetrics",params:[]})}async getCurrentEpoch(){return await this.transport.request({method:"suix_getCurrentEpoch",params:[]})}async getValidatorsApy(){return await this.transport.request({method:"suix_getValidatorsApy",params:[]})}async getChainIdentifier(){const e=await this.getCheckpoint({id:"0"}),r=(0,zc.fromBase58)(e.digest);return(0,zc.toHex)(r.slice(0,4))}async resolveNameServiceAddress(e){return await this.transport.request({method:"suix_resolveNameServiceAddress",params:[e.name]})}async resolveNameServiceNames({format:e="dot",...r}){const{nextCursor:n,hasNextPage:i,data:s}=await this.transport.request({method:"suix_resolveNameServiceNames",params:[r.address,r.cursor,r.limit]});return{hasNextPage:i,nextCursor:n,data:s.map(o=>(0,zce.normalizeSuiNSName)(o,e))}}async getProtocolConfig(e){return await this.transport.request({method:"sui_getProtocolConfig",params:[e==null?void 0:e.version]})}async waitForTransaction({signal:e,timeout:r=60*1e3,pollInterval:n=2*1e3,...i}){const s=AbortSignal.timeout(r),o=new Promise((a,u)=>{s.addEventListener("abort",()=>u(s.reason))});for(o.catch(()=>{});!s.aborted;){e==null||e.throwIfAborted();try{return await this.getTransactionBlock(i)}catch{await Promise.race([new Promise(u=>setTimeout(u,n)),o])}}throw s.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}}(function(t){var e=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s=(m,g)=>{for(var x in g)e(m,x,{get:g[x],enumerable:!0})},o=(m,g,x,_)=>{if(g&&typeof g=="object"||typeof g=="function")for(let S of n(g))!i.call(m,S)&&S!==x&&e(m,S,{get:()=>g[S],enumerable:!(_=r(g,S))||_.enumerable});return m},a=(m,g,x)=>(o(m,g,"default"),x&&o(x,g,"default")),u=m=>o(e({},"__esModule",{value:!0}),m),c={};s(c,{JsonRpcError:()=>h.JsonRpcError,SuiClient:()=>d.SuiClient,SuiHTTPStatusError:()=>h.SuiHTTPStatusError,SuiHTTPTransport:()=>l.SuiHTTPTransport,SuiHTTPTransportError:()=>h.SuiHTTPTransportError,getFullnodeUrl:()=>f.getFullnodeUrl,isSuiClient:()=>d.isSuiClient}),t.exports=u(c);var l=X8,f=Ate;a(c,_re,t.exports);var d=Fce,h=wS})(B8);var Gce=B8.exports,rT;function qce(){return rT||(rT=1,function(t){var e=ft&&ft.__awaiter||function(f,d,h,m){function g(x){return x instanceof h?x:new h(function(_){_(x)})}return new(h||(h=Promise))(function(x,_){function S(z){try{D(m.next(z))}catch(G){_(G)}}function O(z){try{D(m.throw(z))}catch(G){_(G)}}function D(z){z.done?x(z.value):g(z.value).then(S,O)}D((m=m.apply(f,d||[])).next())})},r=ft&&ft.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.fetchPoolData=void 0,t.getPoolInfo=u,t.getLatestProtocolPackageId=c,t.getUserRewardHistory=l;const n=r(gS),i=Jh(),s=Gce,o=Jh(),a=f=>e(void 0,[f],void 0,function*({poolId:d,client:h,reserveParentId:m,poolInfo:g}){var x,_,S,O,D,z;const G=g[d],J=(O=(S=(_=(x=(yield h.getDynamicFieldObject({parentId:m,name:{type:"u8",value:d}})).data)===null||x===void 0?void 0:x.content)===null||_===void 0?void 0:_.fields)===null||S===void 0?void 0:S.value)===null||O===void 0?void 0:O.fields,fe=G.total_supply*J.current_supply_index/1e27,pe=G.total_borrow*J.current_borrow_index/1e27;return{coin_type:G.coin_type,total_supply:fe,total_borrow:pe,tokenPrice:G.price,base_supply_rate:G.supply_rate,base_borrow_rate:G.borrow_rate,boosted_supply_rate:G.boosted,boosted_borrow_rate:G.borrow_reward_apy,supply_cap_ceiling:Number(J.supply_cap_ceiling/1e36),borrow_cap_ceiling:Number((J.borrow_cap_ceiling/1e27).toFixed(2))*G.total_supply,current_supply_utilization:fe/Number(J.supply_cap_ceiling/1e36),current_borrow_utilization:pe/(Number((J.borrow_cap_ceiling/1e27).toFixed(2))*G.total_supply),optimal_borrow_utilization:(Number((z=(D=J.borrow_rate_factors)===null||D===void 0?void 0:D.fields)===null||z===void 0?void 0:z.optimal_utilization)/1e27).toFixed(2),pool:G.pool,max_ltv:(Number(J.ltv)/1e27).toFixed(2),liquidation_threshold:(Number(J.liquidation_factors.fields.threshold)/1e27).toFixed(2),symbol:G.symbol,rewardTokenAddress:G.rewardTokens}});t.fetchPoolData=a;function u(f,d){return e(this,void 0,void 0,function*(){d||(d=new s.SuiClient({url:(0,s.getFullnodeUrl)("mainnet")}));try{const m=(yield n.default.get("https://api-defi.naviprotocol.io/getIndexAssetData")).data,g=yield(0,o.getConfig)(),x={};if(f){const _=i.pool[f.symbol],S=String(_.assetId);return yield(0,t.fetchPoolData)({poolId:S,reserveParentId:g.ReserveParentId,client:d,poolInfo:m})}else{for(const _ in m)m.hasOwnProperty(_)&&(x[_]=yield(0,t.fetchPoolData)({poolId:_,reserveParentId:g.ReserveParentId,client:d,poolInfo:m}));return x}}catch(h){throw console.error("Error fetching pool information:",h),h}})}function c(){return e(this,void 0,void 0,function*(){const f="https://open-api.naviprotocol.io/api/package";try{const d=yield fetch(f);if(!d.ok)throw new Error(`API call failed with status ${d.status}`);return(yield d.json()).packageId}catch{console.error("Failed to update ProtocolPackage:")}})}function l(f){return e(this,arguments,void 0,function*(d,h=1,m=400){var g,x;const _=`https://open-api.naviprotocol.io/api/navi/user/rewards?userAddress=${d}&page=${h}&pageSize=${m}`;console.log(_);try{return((x=(g=(yield n.default.get(_)).data)===null||g===void 0?void 0:g.data)===null||x===void 0?void 0:x.rewards)||[]}catch(S){throw console.error("Error fetching user reward history:",S),S}})}}(Yv)),Yv}var nT;function Jh(){if(nT)return ct;nT=1;var t=ft&&ft.__awaiter||function(c,l,f,d){function h(m){return m instanceof f?m:new f(function(g){g(m)})}return new(f||(f=Promise))(function(m,g){function x(O){try{S(d.next(O))}catch(D){g(D)}}function _(O){try{S(d.throw(O))}catch(D){g(D)}}function S(O){O.done?m(O.value):h(O.value).then(x,_)}S((d=d.apply(c,l||[])).next())})};Object.defineProperty(ct,"__esModule",{value:!0}),ct.OracleProConfig=ct.PriceFeedConfig=ct.vSuiConfig=ct.LorenzoBTC=ct.NS=ct.ETH=ct.nUSDC=ct.wUSDC=ct.AUSD=ct.WBTC=ct.haSui=ct.CETUS=ct.WETH=ct.USDT=ct.vSui=ct.Sui=ct.NAVX=ct.flashloanConfig=ct.pool=ct.getConfig=ct.AddressMap=void 0,ct.getPackageCache=s,ct.setPackageCache=o;const e=qce();let r,n,i=null;ct.AddressMap={"0x2::sui::SUI":"Sui","0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX":"NAVX","0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT":"vSui","0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN":"wUSDC","0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN":"USDT","0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN":"WETH","0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS":"CETUS","0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI":"haSui","0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN":"WBTC","0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD":"AUSD","0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC":"nUSDC","0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH":"ETH","0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY":"USDY","0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS":"NS","0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a::fdusd::FDUSD":"FDUSD","0x5f496ed5d9d045c5b788dc1bb85f54100f2ede11e46f6a232c29daada4c5bdb6::coin::COIN":"stBTC"};function s(){if(r&&n>Date.now())return r}function o(){return t(this,arguments,void 0,function*(c=3600){r=yield(0,e.getLatestProtocolPackageId)(),n=Date.now()+c*1e3})}function a(){return t(this,void 0,void 0,function*(){!s()&&!i?(i=o(),yield i,i=null):i&&(yield i)})}const u=()=>t(void 0,void 0,void 0,function*(){return yield a(),{ProtocolPackage:s(),StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",PriceOracle:"0x1568865ed9a0b5ec414220e8f79b3d04c77acc82358f6e5ae4635687392ffbef",ReserveParentId:"0xe6d4c6610b86ce7735ea754596d71d72d10c7980b5052fc3c8cdf8d09fea9b4b",uiGetter:"0x1ee4061d3c78d6244b5f32eb4011d081e52f5f4b484ca4a84de48b1146a779f7"}});return ct.getConfig=u,ct.pool={Sui:{name:"SUI",assetId:0,poolId:"0x96df0fce3c471489f4debaaa762cf960b3d97820bd1f3f025ff8190730e958c5",type:"0x2::sui::SUI",reserveObjectId:"0xab644b5fd11aa11e930d1c7bc903ef609a9feaf9ffe1b23532ad8441854fbfaf",borrowBalanceParentId:"0xe7ff0daa9d090727210abe6a8b6c0c5cd483f3692a10610386e4dc9c57871ba7",supplyBalanceParentId:"0x589c83af4b035a3bc64c40d9011397b539b97ea47edf7be8f33d643606bf96f8"},USDT:{name:"USDT",assetId:2,poolId:"0x0e060c3b5b8de00fb50511b7a45188c8e34b6995c01f69d98ea5a466fe10d103",type:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",reserveObjectId:"0xb8c5eab02a0202f638958cc79a69a2d30055565caad1684b3c8bbca3bddcb322",borrowBalanceParentId:"0xc14d8292a7d69ae31164bafab7ca8a5bfda11f998540fe976a674ed0673e448f",supplyBalanceParentId:"0x7e2a49ff9d2edd875f82b76a9b21e2a5a098e7130abfd510a203b6ea08ab9257"},WETH:{name:"WETH",assetId:3,poolId:"0x71b9f6e822c48ce827bceadce82201d6a7559f7b0350ed1daa1dc2ba3ac41b56",type:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",reserveObjectId:"0xafecf4b57899d377cc8c9de75854c68925d9f512d0c47150ca52a0d3a442b735",borrowBalanceParentId:"0x7568d06a1b6ffc416a36c82791e3daf0e621cf19d4a2724fc6f74842661b6323",supplyBalanceParentId:"0xa668905b1ad445a3159b4d29b1181c4a62d864861b463dd9106cc0d97ffe8f7f"},CETUS:{name:"CETUS",assetId:4,poolId:"0x3c376f857ec4247b8ee456c1db19e9c74e0154d4876915e54221b5052d5b1e2e",type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",reserveObjectId:"0x66a807c06212537fe46aa6719a00e4fa1e85a932d0b53ce7c4b1041983645133",borrowBalanceParentId:"0x4c3da45ffff6432b4592a39cdb3ce12f4a28034cbcb804bb071facc81fdd923d",supplyBalanceParentId:"0x6adc72faf2a9a15a583c9fb04f457c6a5f0b456bc9b4832413a131dfd4faddae"},vSui:{name:"VoloSui",assetId:5,poolId:"0x9790c2c272e15b6bf9b341eb531ef16bcc8ed2b20dfda25d060bf47f5dd88d01",type:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",reserveObjectId:"0xd4fd7e094af9819b06ea3136c13a6ae8da184016b78cf19773ac26d2095793e2",borrowBalanceParentId:"0x8fa5eccbca2c4ba9aae3b87fd44aa75aa5f5b41ea2d9be4d5321379384974984",supplyBalanceParentId:"0xe6457d247b6661b1cac123351998f88f3e724ff6e9ea542127b5dcb3176b3841"},haSui:{name:"HaedalSui",assetId:6,poolId:"0x6fd9cb6ebd76bc80340a9443d72ea0ae282ee20e2fd7544f6ffcd2c070d9557a",type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",reserveObjectId:"0x0c9f7a6ca561dc566bd75744bcc71a6af1dc3caf7bd32c099cd640bb5f3bb0e3",borrowBalanceParentId:"0x01f36898e020be6c3423e5c95d9f348868813cd4d0be39b0c8df9d8de4722b00",supplyBalanceParentId:"0x278b8e3d09c3548c60c51ed2f8eed281876ea58c392f71b7ff650cc9286d095b"},NAVX:{name:"NAVX",assetId:7,poolId:"0xc0e02e7a245e855dd365422faf76f87d9f5b2148a26d48dda6e8253c3fe9fa60",type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",reserveObjectId:"0x2e13b2f1f714c0c5fa72264f147ef7632b48ec2501f810c07df3ccb59d6fdc81",borrowBalanceParentId:"0xa5bf13075aa400cbdd4690a617c5f008e1fae0511dcd4f7121f09817df6c8d8b",supplyBalanceParentId:"0x59dedca8dc44e8df50b190f8b5fe673098c1273ac6168c0a4addf3613afcdee5"},WBTC:{name:"WBTC",assetId:8,poolId:"0xd162cbe40f8829ce71c9b3d3bf3a83859689a79fa220b23d70dc0300b777ae6e",type:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",reserveObjectId:"0x8b4d81f004e4e9faf4540951a896b6d96e42598a270e6375f598b99742db767e",borrowBalanceParentId:"0x55e1f3c9e6e5cf9fff563bdd61db07a3826458c56ef72c455e049ab3b1b0e99c",supplyBalanceParentId:"0x821e505a0091b089edba94deaa14c2f2230d026bbaa7b85680554441aad447e0"},AUSD:{name:"AUSD",assetId:9,poolId:"0xc9208c1e75f990b2c814fa3a45f1bf0e85bb78404cfdb2ae6bb97de58bb30932",type:"0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD",reserveObjectId:"0x918889c6a9d9b93108531d4d59a4ebb9cc4d41689798ffc1d4aed6e1ae816ec0",borrowBalanceParentId:"0x551300b9441c9a3a16ca1d7972c1dbb4715e15004ccd5f001b2c2eee22fd92c1",supplyBalanceParentId:"0xe151af690355de8be1c0281fbd0d483c099ea51920a57c4bf8c9666fd36808fd"},wUSDC:{name:"wUSDC",assetId:1,poolId:"0xa02a98f9c88db51c6f5efaaf2261c81f34dd56d86073387e0ef1805ca22e39c8",type:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",reserveObjectId:"0xeb3903f7748ace73429bd52a70fff278aac1725d3b58afa781f25ce3450ac203",borrowBalanceParentId:"0x8a3aaa817a811131c624658f6e77cba04ab5829293d2c49c1a9cce8ac9c8dec4",supplyBalanceParentId:"0x8d0a4467806458052d577c8cd2be6031e972f2b8f5f77fce98aa12cd85330da9"},nUSDC:{name:"nUSDC",assetId:10,poolId:"0xa3582097b4c57630046c0c49a88bfc6b202a3ec0a9db5597c31765f7563755a8",type:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",reserveObjectId:"0x4c8a2c72a22ae8da803a8519798d312c86e74a9e0d6ec0eec2bfcf7e4b3fef5e",borrowBalanceParentId:"0xb0b0c7470e96cabbb4f1e8d06bef2fbea65f4dbac52afae8635d9286b1ea9a09",supplyBalanceParentId:"0x08b5ce8574ac3bc9327e66ad5decd34d07ee798f724ad01058e8855ac9acb605"},ETH:{name:"ETH",assetId:11,poolId:"0x78ba01c21d8301be15690d3c30dc9f111871e38cfb0b2dd4b70cc6052fba41bb",type:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",reserveObjectId:"0x376faea6dfbffab9ea808474cb751d91222b6d664f38c0f1d23de442a8edb1ce",borrowBalanceParentId:"0xf0c6ce5cfaee96073876a5fab7426043f3a798b79502c4caeb6d9772cd35af1f",supplyBalanceParentId:"0xc0a0cb43620eb8a84d5a4a50a85650e7fa7ba81e660f9cc2863404fd84591d4b"},USDY:{name:"USDY",assetId:12,poolId:"0x4b6253a9f8cf7f5d31e6d04aed4046b9e325a1681d34e0eff11a8441525d4563",type:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY",reserveObjectId:"0xddeb55afe4860995d755fddb0b1dfb8f8011ca08edb66e43c867a21bd6e0551a",borrowBalanceParentId:"0xc0f59c5665d6289408ba31efc48718daa4d14a291a303a0d50d306e51eb68872",supplyBalanceParentId:"0x8aac332c01340926066a53f7a5f8ac924e61ea2ae6bc6ce61f112e9094fd5639"},NS:{name:"NS",assetId:13,poolId:"0x2fcc6245f72795fad50f17c20583f8c6e81426ab69d7d3590420571364d080d4",type:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS",reserveObjectId:"0x03f405f4d5ed2688b8b7ab4cfbf3e0a8572622a737d615db829342131f3586f2",borrowBalanceParentId:"0x2c7b7e6d323ca8f63908bb03191225a2ecf177bf0c4602ccd21d7ac121d52fa4",supplyBalanceParentId:"0x071dc718b1e579d476d088456979e30d142ecdde6a6eec875477b5b4786530f0"},LorenzoBTC:{name:"stBTC",assetId:14,poolId:"0xd96dcd6982c45e580c83ff1d96c2b4455a874c284b637daf67c0787f25bc32dd",type:"0x5f496ed5d9d045c5b788dc1bb85f54100f2ede11e46f6a232c29daada4c5bdb6::coin::COIN",reserveObjectId:"0x9634f9f7f8ea7236e2ad5bfbecdce9673c811a34cf8c3741edfbcaf5d9409100",borrowBalanceParentId:"0xb5cac1b39f67da86f4496f75339001a12f4b8ba78b047682f5158ac4ae8e1649",supplyBalanceParentId:"0xad0d8be450e020f54e3212b5b1f4f1256bb8ea882bc85bc9f86708f73d653720"}},ct.flashloanConfig={id:"0x3672b2bf471a60c30a03325f104f92fb195c9d337ba58072dce764fe2aa5e2dc"},ct.NAVX={symbol:"NAVX",address:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",decimal:9},ct.Sui={symbol:"Sui",address:"0x2::sui::SUI",decimal:9},ct.vSui={symbol:"vSui",address:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",decimal:9},ct.USDT={symbol:"USDT",address:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",decimal:6},ct.WETH={symbol:"WETH",address:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",decimal:8},ct.CETUS={symbol:"CETUS",address:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",decimal:9},ct.haSui={symbol:"haSui",address:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",decimal:9},ct.WBTC={symbol:"WBTC",address:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",decimal:8},ct.AUSD={symbol:"AUSD",address:"0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD",decimal:6},ct.wUSDC={symbol:"wUSDC",address:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",decimal:6},ct.nUSDC={symbol:"nUSDC",address:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",decimal:6},ct.ETH={symbol:"ETH",address:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",decimal:8},ct.NS={symbol:"NS",address:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS",decimal:6},ct.LorenzoBTC={symbol:"stBTC",address:"0x5f496ed5d9d045c5b788dc1bb85f54100f2ede11e46f6a232c29daada4c5bdb6::coin::COIN",decimal:8},ct.vSuiConfig={ProtocolPackage:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",pool:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadata:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",wrapper:"0x05"},ct.PriceFeedConfig={SUI:{oracleId:0,maxTimestampDiff:30*1e3,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:3e9,minimumEffectivePrice:1e8,historicalPriceTTL:5*60*1e3,coinType:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",feedId:"0x2cab9b151ca1721624b09b421cc57d0bb26a1feb5da1f821492204b098ec35c9",supraPairId:90,pythPriceFeedId:"0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythPriceInfoObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37",priceDecimal:9,expiration:30},wUSDC:{oracleId:1,maxTimestampDiff:30*1e3,priceDiffThreshold1:80,priceDiffThreshold2:150,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e6,minimumEffectivePrice:1e5,historicalPriceTTL:5*60*1e3,coinType:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",feedId:"0x70a79226dda5c080378b639d1bb540ddea64761629aa4ad7355d79266d55af61",supraPairId:47,pythPriceFeedId:"0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythPriceInfoObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab",priceDecimal:6,expiration:30},USDT:{oracleId:2,maxTimestampDiff:30*1e3,priceDiffThreshold1:80,priceDiffThreshold2:150,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e6,minimumEffectivePrice:1e5,historicalPriceTTL:5*60*1e3,coinType:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",feedId:"0xf72d8933873bb4e5bfa1edbfa9ff6443ec5fac25c1d99ba2ef37f50a125826f3",supraPairId:48,pythPriceFeedId:"0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",pythPriceInfoObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572",priceDecimal:6,expiration:30},WETH:{oracleId:3,maxTimestampDiff:30*1e3,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:6e11,minimumEffectivePrice:1e8,historicalPriceTTL:5*60*1e3,coinType:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",feedId:"0x44d92366eba1f1652ec81f34585406726bef267565a2db1664ffd5ef18e21693",supraPairId:1,pythPriceFeedId:"0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",pythPriceInfoObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab",priceDecimal:8,expiration:30},CETUS:{oracleId:4,maxTimestampDiff:30*1e3,priceDiffThreshold1:200,priceDiffThreshold2:400,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:1e9,minimumEffectivePrice:1e6,historicalPriceTTL:5*60*1e3,coinType:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",feedId:"0x5ac98fc1e6723af2a6d9a68a5d771654a6043f9c4d2b836b2d5fb4832a3be4f2",supraPairId:93,pythPriceFeedId:"0xe5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",pythPriceInfoObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14",priceDecimal:9,expiration:30},CERT:{oracleId:5,maxTimestampDiff:30*1e3,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:3e9,minimumEffectivePrice:1e8,historicalPriceTTL:5*60*1e3,coinType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",feedId:"0x086bb5540047b3c77ae5e2f9b811c7ef085517a73510f776753c8ee83d19e62c",supraPairId:90,pythPriceFeedId:"0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythPriceInfoObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37",priceDecimal:9,expiration:30},HASUI:{oracleId:6,maxTimestampDiff:30*1e3,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:3e9,minimumEffectivePrice:1e8,historicalPriceTTL:5*60*1e3,coinType:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",feedId:"0xac934a2a2d406085e7f73b460221fe1b11935864605ba58cdbb8e21c15f12acd",supraPairId:90,pythPriceFeedId:"0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythPriceInfoObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37",priceDecimal:9,expiration:30},NAVX:{oracleId:7,maxTimestampDiff:30*1e3,priceDiffThreshold1:200,priceDiffThreshold2:400,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:1e9,minimumEffectivePrice:1e6,historicalPriceTTL:5*60*1e3,coinType:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",feedId:"0x4324c797d2f19eff517c24adec8b92aa2d282e44f3a5cafb36d6c4b30d7f2dca",supraPairId:408,pythPriceFeedId:"0x88250f854c019ef4f88a5c073d52a18bb1c6ac437033f5932cd017d24917ab46",pythPriceInfoObject:"0x5b117a6a2de70796bffe36495bad576b788a34c33ca0648bd57852ead3f41e32",priceDecimal:9,expiration:30},WBTC:{oracleId:8,maxTimestampDiff:30*1e3,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:1e13,minimumEffectivePrice:1e8,historicalPriceTTL:5*60*1e3,coinType:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",feedId:"0x1bf4727242a61d892feef6616d3e40a3bd24b64b5deb884054e86cb9360556c4",supraPairId:0,pythPriceFeedId:"0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",pythPriceInfoObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2",priceDecimal:8,expiration:30},AUSD:{oracleId:9,maxTimestampDiff:30*1e3,priceDiffThreshold1:80,priceDiffThreshold2:150,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e6,minimumEffectivePrice:1e4,historicalPriceTTL:5*60*1e3,coinType:"0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD",feedId:"0x9a0656e1e10a0cdf3f03dce9db9ad931f51dc6eac2e52ebfbf535dfbcf8100ef",supraPairId:99999,pythPriceFeedId:"0xd9912df360b5b7f21a122f15bdd5e27f62ce5e72bd316c291f7c86620e07fb2a",pythPriceInfoObject:"0x94ef89923e7beccd4a52043a9451a87c614684b847426fb5fd76faa8cb1e907f",priceDecimal:6,expiration:30},NUSDC:{oracleId:10,maxTimestampDiff:30*1e3,priceDiffThreshold1:80,priceDiffThreshold2:150,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e6,minimumEffectivePrice:1e5,historicalPriceTTL:5*60*1e3,coinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",feedId:"0xe120611435395f144b4bcc4466a00b6b26d7a27318f96e148648852a9dd6b31c",supraPairId:47,pythPriceFeedId:"0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythPriceInfoObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab",priceDecimal:6,expiration:30},ETH:{oracleId:11,maxTimestampDiff:30*1e3,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:6e11,minimumEffectivePrice:1e8,historicalPriceTTL:5*60*1e3,coinType:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",feedId:"0x9a6ffc707270286e98e8d0f654ce38f69efbc302ac98e2deb11fbad2211600f0",supraPairId:1,pythPriceFeedId:"0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",pythPriceInfoObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab",priceDecimal:8,expiration:30},USDY:{oracleId:12,maxTimestampDiff:30*1e3,priceDiffThreshold1:80,priceDiffThreshold2:150,maxDurationWithinThresholds:30*1e3,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e6,minimumEffectivePrice:1e4,historicalPriceTTL:5*60*1e3,coinType:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY",feedId:"0x11ddf2ac1868d493e2487deeb2a0c2791bb7ca69632c8c5fefe85e09390be093",supraPairId:185,pythPriceFeedId:"0xe393449f6aff8a4b6d3e1165a7c9ebec103685f3b41e60db4277b5b6d10e7326",pythPriceInfoObject:"0x62e15c2fd1437a4d0e111dbd8a193f244878ba25cc7caa9120d0ee41ac151ea5",priceDecimal:6,expiration:30},NS:{oracleId:13,maxTimestampDiff:3e4,priceDiffThreshold1:80,priceDiffThreshold2:150,maxDurationWithinThresholds:3e4,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e6,minimumEffectivePrice:1e5,historicalPriceTTL:3e5,coinType:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS",feedId:"0xc771ec0ca245857f30195ce05197a7b3ab41c58c1e8abe0661919d90675ad63d",supraPairId:47,pythPriceFeedId:"0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythPriceInfoObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab",priceDecimal:6,expiration:30},LorenzoBTC:{oracleId:14,maxTimestampDiff:3e4,priceDiffThreshold1:100,priceDiffThreshold2:300,maxDurationWithinThresholds:3e4,maximumAllowedSpanPercentage:700,maximumEffectivePrice:2e13,minimumEffectivePrice:1e8,historicalPriceTTL:3e5,coinType:"0x5f496ed5d9d045c5b788dc1bb85f54100f2ede11e46f6a232c29daada4c5bdb6::coin::COIN",feedId:"0xdf9b254a7a64742e1edf8c48bd2a1f182b52f020de2ab070ae0e3f9228d05280",supraPairId:0,pythPriceFeedId:"0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",pythPriceInfoObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2",priceDecimal:8,expiration:30}},ct.OracleProConfig={PackageId:"0xc2d49bf5e75d2258ee5563efa527feb6155de7ac6f6bf025a23ee88cd12d5a83",PriceOracle:"0x1568865ed9a0b5ec414220e8f79b3d04c77acc82358f6e5ae4635687392ffbef",OracleAdminCap:"0x7204e37882baf10f31b66cd1ac78ac65b3b8ad29c265d1e474fb4b24ccd6d5b7",OracleConfig:"0x1afe1cb83634f581606cc73c4487ddd8cc39a944b951283af23f7d69d5589478",PythStateId:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",WormholeStateId:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",SupraOracleHolder:"0xaa0315f0748c1f24ddb2b45f7939cff40f7a8104af5ccbc4a1d32f870c0b4105",Sender:"0x39c70d4ce3ce769a46f46ad80184a88bc25be9b49545751f5425796ef0c3d9ba",GasObject:"0x1e30410559ed83708ee1bb6b21e3a1dae96f1768ce35ed8233590b130ddc0086"},ct}var md=Jh(),bm={},kr={},bR={exports:{}};function Kce(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),r=0;r>>0,O=new Uint8Array(S);x!==_;){for(var D=h[x],z=0,G=S-1;(D!==0||z>>0,O[G]=D%o>>>0,D=D/o>>>0;if(D!==0)throw new Error("Non-zero carry");g=z,x++}for(var K=S-g;K!==S&&O[K]===0;)K++;for(var J=a.repeat(m);K>>0,S=new Uint8Array(_);h[m];){var O=e[h.charCodeAt(m)];if(O===255)return;for(var D=0,z=_-1;(O!==0||D>>0,S[z]=O%256>>>0,O=O/256>>>0;if(O!==0)throw new Error("Non-zero carry");x=D,m++}for(var G=_-x;G!==_&&S[G]===0;)G++;for(var K=new Uint8Array(g+(_-G)),J=g;G!==_;)K[J++]=S[G++];return K}function d(h){var m=f(h);if(m)return m;throw new Error("Non-base"+o+" character")}return{encode:l,decodeUnsafe:f,decode:d}}var Xce=Kce;const Jce=Xce,Yce="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var Qce=Jce(Yce),Zce=Object.create,Rg=Object.defineProperty,ele=Object.getOwnPropertyDescriptor,tle=Object.getOwnPropertyNames,rle=Object.getPrototypeOf,nle=Object.prototype.hasOwnProperty,ile=(t,e)=>{for(var r in e)Rg(t,r,{get:e[r],enumerable:!0})},wR=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of tle(e))!nle.call(t,i)&&i!==r&&Rg(t,i,{get:()=>e[i],enumerable:!(n=ele(e,i))||n.enumerable});return t},sle=(t,e,r)=>(r=t!=null?Zce(rle(t)):{},wR(!t||!t.__esModule?Rg(r,"default",{value:t,enumerable:!0}):r,t)),ole=t=>wR(Rg({},"__esModule",{value:!0}),t),_R={};ile(_R,{fromB58:()=>ule,toB58:()=>ale});var Dg=ole(_R),xR=sle(Qce);const ale=t=>xR.default.encode(t),ule=t=>xR.default.decode(t);var O2=Object.defineProperty,cle=Object.getOwnPropertyDescriptor,lle=Object.getOwnPropertyNames,fle=Object.prototype.hasOwnProperty,dle=(t,e)=>{for(var r in e)O2(t,r,{get:e[r],enumerable:!0})},hle=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of lle(e))!fle.call(t,i)&&i!==r&&O2(t,i,{get:()=>e[i],enumerable:!(n=cle(e,i))||n.enumerable});return t},ple=t=>hle(O2({},"__esModule",{value:!0}),t),SR={};dle(SR,{fromB64:()=>mle,toB64:()=>yle});var Bg=ple(SR);function mle(t){return Uint8Array.from(atob(t),e=>e.charCodeAt(0))}const db=8192;function yle(t){if(t.length{for(var r in e)C2(t,r,{get:e[r],enumerable:!0})},_le=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of vle(e))!ble.call(t,i)&&i!==r&&C2(t,i,{get:()=>e[i],enumerable:!(n=gle(e,i))||n.enumerable});return t},xle=t=>_le(C2({},"__esModule",{value:!0}),t),ER={};wle(ER,{fromHEX:()=>Sle,toHEX:()=>Ele});var Ug=xle(ER);function Sle(t){var i;const e=t.startsWith("0x")?t.slice(2):t,n=((i=(e.length%2===0?e:`0${e}}`).match(/.{2}/g))==null?void 0:i.map(s=>parseInt(s,16)))??[];return Uint8Array.from(n)}function Ele(t){return t.reduce((e,r)=>e+r.toString(16).padStart(2,"0"),"")}var T2=Object.defineProperty,Ole=Object.getOwnPropertyDescriptor,Cle=Object.getOwnPropertyNames,Tle=Object.prototype.hasOwnProperty,Ple=(t,e)=>{for(var r in e)T2(t,r,{get:e[r],enumerable:!0})},Ile=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Cle(e))!Tle.call(t,i)&&i!==r&&T2(t,i,{get:()=>e[i],enumerable:!(n=Ole(e,i))||n.enumerable});return t},kle=t=>Ile(T2({},"__esModule",{value:!0}),t),OR={};Ple(OR,{ulebDecode:()=>jle,ulebEncode:()=>Ale});var Fg=kle(OR);function Ale(t){let e=[],r=0;if(t===0)return[0];for(;t>0;)e[r]=t&127,(t>>=7)&&(e[r]|=128),r+=1;return e}function jle(t){let e=0,r=0,n=0;for(;;){let i=t[n];if(n+=1,e|=(i&127)<{for(var r in e)P2(t,r,{get:e[r],enumerable:!0})},Dle=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $le(e))!Nle.call(t,i)&&i!==r&&P2(t,i,{get:()=>e[i],enumerable:!(n=Mle(e,i))||n.enumerable});return t},Ble=t=>Dle(P2({},"__esModule",{value:!0}),t),CR={};Rle(CR,{BcsReader:()=>Fle});var I2=Ble(CR),Ule=Fg;class Fle{constructor(e){this.bytePosition=0,this.dataView=new DataView(e.buffer)}shift(e){return this.bytePosition+=e,this}read8(){let e=this.dataView.getUint8(this.bytePosition);return this.shift(1),e}read16(){let e=this.dataView.getUint16(this.bytePosition,!0);return this.shift(2),e}read32(){let e=this.dataView.getUint32(this.bytePosition,!0);return this.shift(4),e}read64(){let e=this.read32(),n=this.read32().toString(16)+e.toString(16).padStart(8,"0");return BigInt("0x"+n).toString(10)}read128(){let e=BigInt(this.read64()),n=BigInt(this.read64()).toString(16)+e.toString(16).padStart(16,"0");return BigInt("0x"+n).toString(10)}read256(){let e=BigInt(this.read128()),n=BigInt(this.read128()).toString(16)+e.toString(16).padStart(32,"0");return BigInt("0x"+n).toString(10)}readBytes(e){let r=this.bytePosition+this.dataView.byteOffset,n=new Uint8Array(this.dataView.buffer,r,e);return this.shift(e),n}readULEB(){let e=this.bytePosition+this.dataView.byteOffset,r=new Uint8Array(this.dataView.buffer,e),{value:n,length:i}=(0,Ule.ulebDecode)(r);return this.shift(i),n}readVec(e){let r=this.readULEB(),n=[];for(let i=0;i{for(var r in e)k2(t,r,{get:e[r],enumerable:!0})},Hle=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of zle(e))!Vle.call(t,i)&&i!==r&&k2(t,i,{get:()=>e[i],enumerable:!(n=Lle(e,i))||n.enumerable});return t},Gle=t=>Hle(k2({},"__esModule",{value:!0}),t),TR={};Wle(TR,{decodeStr:()=>Kle,encodeStr:()=>qle,splitGenericParameters:()=>Xle});var A2=Gle(TR),PR=Dg,IR=Bg,kR=Ug;function qle(t,e){switch(e){case"base58":return(0,PR.toB58)(t);case"base64":return(0,IR.toB64)(t);case"hex":return(0,kR.toHEX)(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function Kle(t,e){switch(e){case"base58":return(0,PR.fromB58)(t);case"base64":return(0,IR.fromB64)(t);case"hex":return(0,kR.fromHEX)(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function Xle(t,e=["<",">"]){const[r,n]=e,i=[];let s="",o=0;for(let a=0;a{for(var r in e)j2(t,r,{get:e[r],enumerable:!0})},efe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Yle(e))!Qle.call(t,i)&&i!==r&&j2(t,i,{get:()=>e[i],enumerable:!(n=Jle(e,i))||n.enumerable});return t},tfe=t=>efe(j2({},"__esModule",{value:!0}),t),AR={};Zle(AR,{BcsWriter:()=>ife});var M2=tfe(AR),rfe=Fg,nfe=A2;class ife{constructor({size:e=1024,maxSize:r,allocateSize:n=1024}={}){this.bytePosition=0,this.size=e,this.maxSize=r||e,this.allocateSize=n,this.dataView=new DataView(new ArrayBuffer(e))}ensureSizeOrGrow(e){const r=this.bytePosition+e;if(r>this.size){const n=Math.min(this.maxSize,this.size+this.allocateSize);if(r>n)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${r}`);this.size=n;const i=new ArrayBuffer(this.size);new Uint8Array(i).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(i)}}shift(e){return this.bytePosition+=e,this}write8(e){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(e)),this.shift(1)}write16(e){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(e),!0),this.shift(2)}write32(e){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(e),!0),this.shift(4)}write64(e){return hb(BigInt(e),8).forEach(r=>this.write8(r)),this}write128(e){return hb(BigInt(e),16).forEach(r=>this.write8(r)),this}write256(e){return hb(BigInt(e),32).forEach(r=>this.write8(r)),this}writeULEB(e){return(0,rfe.ulebEncode)(e).forEach(r=>this.write8(r)),this}writeVec(e,r){return this.writeULEB(e.length),Array.from(e).forEach((n,i)=>r(this,n,i,e.length)),this}*[Symbol.iterator](){for(let e=0;e0;)r[n]=Number(t%BigInt(256)),t=t/BigInt(256),n+=1;return r}var $2=Object.defineProperty,sfe=Object.getOwnPropertyDescriptor,ofe=Object.getOwnPropertyNames,afe=Object.prototype.hasOwnProperty,ufe=(t,e)=>{for(var r in e)$2(t,r,{get:e[r],enumerable:!0})},cfe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ofe(e))!afe.call(t,i)&&i!==r&&$2(t,i,{get:()=>e[i],enumerable:!(n=sfe(e,i))||n.enumerable});return t},lfe=t=>cfe($2({},"__esModule",{value:!0}),t),jR=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},ws=(t,e,r)=>(jR(t,e,"read from private field"),r?r.call(t):e.get(t)),Iy=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},ky=(t,e,r,n)=>(jR(t,e,"write to private field"),e.set(t,r),r),MR={};ufe(MR,{BcsType:()=>Tp,SerializedBcs:()=>RR,bigUIntBcsType:()=>bfe,dynamicSizeBcsType:()=>wfe,fixedSizeBcsType:()=>R2,isSerializedBcs:()=>gfe,lazyBcsType:()=>xfe,stringLikeBcsType:()=>_fe,uIntBcsType:()=>vfe});var N2=lfe(MR),ffe=Dg,dfe=Bg,hfe=Ug,pfe=I2,mfe=Fg,yfe=M2,rl,Nd,wm,ya;const $R=class{constructor(t){Iy(this,rl,void 0),Iy(this,Nd,void 0),this.name=t.name,this.read=t.read,this.serializedSize=t.serializedSize??(()=>null),ky(this,rl,t.write),ky(this,Nd,t.serialize??((e,r)=>{const n=new yfe.BcsWriter({size:this.serializedSize(e)??void 0,...r});return ws(this,rl).call(this,e,n),n.toBytes()})),this.validate=t.validate??(()=>{})}write(t,e){this.validate(t),ws(this,rl).call(this,t,e)}serialize(t,e){return this.validate(t),new RR(this,ws(this,Nd).call(this,t,e))}parse(t){const e=new pfe.BcsReader(t);return this.read(e)}transform({name:t,input:e,output:r}){return new $R({name:t??this.name,read:n=>r(this.read(n)),write:(n,i)=>ws(this,rl).call(this,e(n),i),serializedSize:n=>this.serializedSize(e(n)),serialize:(n,i)=>ws(this,Nd).call(this,e(n),i),validate:n=>this.validate(e(n))})}};let Tp=$R;rl=new WeakMap;Nd=new WeakMap;const NR=Symbol.for("@mysten/serialized-bcs");function gfe(t){return!!t&&typeof t=="object"&&t[NR]===!0}class RR{constructor(e,r){Iy(this,wm,void 0),Iy(this,ya,void 0),ky(this,wm,e),ky(this,ya,r)}get[NR](){return!0}toBytes(){return ws(this,ya)}toHex(){return(0,hfe.toHEX)(ws(this,ya))}toBase64(){return(0,dfe.toB64)(ws(this,ya))}toBase58(){return(0,ffe.toB58)(ws(this,ya))}parse(){return ws(this,wm).parse(ws(this,ya))}}wm=new WeakMap;ya=new WeakMap;function R2({size:t,...e}){return new Tp({...e,serializedSize:()=>t})}function vfe({readMethod:t,writeMethod:e,...r}){return R2({...r,read:n=>n[t](),write:(n,i)=>i[e](n),validate:n=>{var i;if(n<0||n>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${n}. Expected value in range 0-${r.maxValue}`);(i=r.validate)==null||i.call(r,n)}})}function bfe({readMethod:t,writeMethod:e,...r}){return R2({...r,read:n=>n[t](),write:(n,i)=>i[e](BigInt(n)),validate:n=>{var s;const i=BigInt(n);if(i<0||i>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${i}. Expected value in range 0-${r.maxValue}`);(s=r.validate)==null||s.call(r,i)}})}function wfe({serialize:t,...e}){const r=new Tp({...e,serialize:t,write:(n,i)=>{for(const s of r.serialize(n).toBytes())i.write8(s)}});return r}function _fe({toBytes:t,fromBytes:e,...r}){return new Tp({...r,read:n=>{const i=n.readULEB(),s=n.readBytes(i);return e(s)},write:(n,i)=>{const s=t(n);i.writeULEB(s.length);for(let o=0;o{const i=t(n),s=(0,mfe.ulebEncode)(i.length),o=new Uint8Array(s.length+i.length);return o.set(s,0),o.set(i,s.length),o},validate:n=>{var i;if(typeof n!="string")throw new TypeError(`Invalid ${r.name} value: ${n}. Expected string`);(i=r.validate)==null||i.call(r,n)}})}function xfe(t){let e=null;function r(){return e||(e=t()),e}return new Tp({name:"lazy",read:n=>r().read(n),serializedSize:n=>r().serializedSize(n),write:(n,i)=>r().write(n,i),serialize:(n,i)=>r().serialize(n,i).toBytes()})}var D2=Object.defineProperty,Sfe=Object.getOwnPropertyDescriptor,Efe=Object.getOwnPropertyNames,Ofe=Object.prototype.hasOwnProperty,Cfe=(t,e)=>{for(var r in e)D2(t,r,{get:e[r],enumerable:!0})},Tfe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Efe(e))!Ofe.call(t,i)&&i!==r&&D2(t,i,{get:()=>e[i],enumerable:!(n=Sfe(e,i))||n.enumerable});return t},Pfe=t=>Tfe(D2({},"__esModule",{value:!0}),t),DR={};Cfe(DR,{bcs:()=>_m});var Ife=Pfe(DR),An=N2,kfe=Fg;const _m={u8(t){return(0,An.uIntBcsType)({name:"u8",readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...t})},u16(t){return(0,An.uIntBcsType)({name:"u16",readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...t})},u32(t){return(0,An.uIntBcsType)({name:"u32",readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...t})},u64(t){return(0,An.bigUIntBcsType)({name:"u64",readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...t})},u128(t){return(0,An.bigUIntBcsType)({name:"u128",readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...t})},u256(t){return(0,An.bigUIntBcsType)({name:"u256",readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...t})},bool(t){return(0,An.fixedSizeBcsType)({name:"bool",size:1,read:e=>e.read8()===1,write:(e,r)=>r.write8(e?1:0),...t,validate:e=>{var r;if((r=t==null?void 0:t.validate)==null||r.call(t,e),typeof e!="boolean")throw new TypeError(`Expected boolean, found ${typeof e}`)}})},uleb128(t){return(0,An.dynamicSizeBcsType)({name:"uleb128",read:e=>e.readULEB(),serialize:e=>Uint8Array.from((0,kfe.ulebEncode)(e)),...t})},bytes(t,e){return(0,An.fixedSizeBcsType)({name:`bytes[${t}]`,size:t,read:r=>r.readBytes(t),write:(r,n)=>{for(let i=0;i{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t)throw new TypeError(`Expected array of length ${t}, found ${r.length}`)}})},string(t){return(0,An.stringLikeBcsType)({name:"string",toBytes:e=>new TextEncoder().encode(e),fromBytes:e=>new TextDecoder().decode(e),...t})},fixedArray(t,e,r){return new An.BcsType({name:`${e.name}[${t}]`,read:n=>{const i=new Array(t);for(let s=0;s{for(const s of n)e.write(s,i)},...r,validate:n=>{var i;if((i=r==null?void 0:r.validate)==null||i.call(r,n),!("length"in n))throw new TypeError(`Expected array, found ${typeof n}`);if(n.length!==t)throw new TypeError(`Expected array of length ${t}, found ${n.length}`)}})},option(t){return _m.enum(`Option<${t.name}>`,{None:null,Some:t}).transform({input:e=>e==null?{None:!0}:{Some:e},output:e=>"Some"in e?e.Some:null})},vector(t,e){return new An.BcsType({name:`vector<${t.name}>`,read:r=>{const n=r.readULEB(),i=new Array(n);for(let s=0;s{n.writeULEB(r.length);for(const i of r)t.write(i,n)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`)}})},tuple(t,e){return new An.BcsType({name:`(${t.map(r=>r.name).join(", ")})`,serializedSize:r=>{let n=0;for(let i=0;i{const n=[];for(const i of t)n.push(i.read(r));return n},write:(r,n)=>{for(let i=0;i{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!Array.isArray(r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t.length)throw new TypeError(`Expected array of length ${t.length}, found ${r.length}`)}})},struct(t,e,r){const n=Object.entries(e);return new An.BcsType({name:t,serializedSize:i=>{let s=0;for(const[o,a]of n){const u=a.serializedSize(i[o]);if(u==null)return null;s+=u}return s},read:i=>{const s={};for(const[o,a]of n)s[o]=a.read(i);return s},write:(i,s)=>{for(const[o,a]of n)a.write(i[o],s)},...r,validate:i=>{var s;if((s=r==null?void 0:r.validate)==null||s.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})},enum(t,e,r){const n=Object.entries(e);return new An.BcsType({name:t,read:i=>{const s=i.readULEB(),[o,a]=n[s];return{[o]:(a==null?void 0:a.read(i))??!0}},write:(i,s)=>{const[o,a]=Object.entries(i)[0];for(let u=0;u{var a;if((a=r==null?void 0:r.validate)==null||a.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`);const s=Object.keys(i);if(s.length!==1)throw new TypeError(`Expected object with one key, found ${s.length}`);const[o]=s;if(!Object.hasOwn(e,o))throw new TypeError(`Invalid enum variant ${o}`)}})},map(t,e){return _m.vector(_m.tuple([t,e])).transform({name:`Map<${t.name}, ${e.name}>`,input:r=>[...r.entries()],output:r=>{const n=new Map;for(const[i,s]of r)n.set(i,s);return n}})},generic(t,e){return(...r)=>e(...r).transform({name:`${e.name}<${r.map(n=>n.name).join(", ")}>`,input:n=>n,output:n=>n})},lazy(t){return(0,An.lazyBcsType)(t)}};var B2=Object.defineProperty,Afe=Object.getOwnPropertyDescriptor,jfe=Object.getOwnPropertyNames,Mfe=Object.prototype.hasOwnProperty,$fe=(t,e)=>{for(var r in e)B2(t,r,{get:e[r],enumerable:!0})},Nfe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of jfe(e))!Mfe.call(t,i)&&i!==r&&B2(t,i,{get:()=>e[i],enumerable:!(n=Afe(e,i))||n.enumerable});return t},Rfe=t=>Nfe(B2({},"__esModule",{value:!0}),t),BR={};$fe(BR,{BCS:()=>hr,getRustConfig:()=>Ffe,getSuiMoveConfig:()=>Lfe,registerPrimitives:()=>FR});var Dfe=Rfe(BR),iT=Dg,Ay=Bg,sT=N2,jy=Ug,Bfe=I2,oT=A2,Ufe=M2;const UR=32,Rd=class{constructor(t){if(this.types=new Map,this.counter=0,t instanceof Rd){this.schema=t.schema,this.types=new Map(t.types);return}if(this.schema=t,this.registerAddressType(Rd.ADDRESS,t.addressLength,t.addressEncoding),this.registerVectorType(t.vectorType),t.types&&t.types.structs)for(let e of Object.keys(t.types.structs))this.registerStructType(e,t.types.structs[e]);if(t.types&&t.types.enums)for(let e of Object.keys(t.types.enums))this.registerEnumType(e,t.types.enums[e]);if(t.types&&t.types.aliases)for(let e of Object.keys(t.types.aliases))this.registerAlias(e,t.types.aliases[e]);t.withPrimitives!==!1&&FR(this)}tempKey(){return`bcs-struct-${++this.counter}`}ser(t,e,r){if(typeof t=="string"||Array.isArray(t)){const{name:n,params:i}=this.parseTypeName(t);return this.getTypeInterface(n).encode(this,e,r,i)}if(typeof t=="object"){const n=this.tempKey();return new Rd(this).registerStructType(n,t).ser(n,e,r)}throw new Error(`Incorrect type passed into the '.ser()' function. +${JSON.stringify(t)}`)}de(t,e,r){if(typeof e=="string")if(r)e=(0,oT.decodeStr)(e,r);else throw new Error("To pass a string to `bcs.de`, specify encoding");if(typeof t=="string"||Array.isArray(t)){const{name:n,params:i}=this.parseTypeName(t);return this.getTypeInterface(n).decode(this,e,i)}if(typeof t=="object"){const n=new Rd(this),i=this.tempKey();return n.registerStructType(i,t).de(i,e,r)}throw new Error(`Incorrect type passed into the '.de()' function. +${JSON.stringify(t)}`)}hasType(t){return this.types.has(t)}registerAlias(t,e){return this.types.set(t,e),this}registerType(t,e,r,n=()=>!0){const{name:i,params:s}=this.parseTypeName(t);return this.types.set(i,{encode(o,a,u,c){const l=s.reduce((f,d,h)=>Object.assign(f,{[d]:c[h]}),{});return this._encodeRaw.call(o,new Ufe.BcsWriter(u),a,c,l)},decode(o,a,u){const c=s.reduce((l,f,d)=>Object.assign(l,{[f]:u[d]}),{});return this._decodeRaw.call(o,new Bfe.BcsReader(a),u,c)},_encodeRaw(o,a,u,c){if(n(a))return e.call(this,o,a,u,c);throw new Error(`Validation failed for type ${i}, data: ${a}`)},_decodeRaw(o,a,u){return r.call(this,o,a,u)}}),this}registerBcsType(t,e){return this.registerType(t,(r,n,i)=>{const s=i.map(o=>new sT.BcsType({name:String(o),write:(a,u)=>{const{name:c,params:l}=this.parseTypeName(o),f=this.getTypeInterface(c),d=l.reduce((h,m,g)=>Object.assign(h,{[m]:i[g]}),{});return f._encodeRaw.call(this,u,a,l,d)},read:()=>{throw new Error("Not implemented")}}));return e(...s).write(n,r),r},(r,n)=>{const i=n.map(s=>new sT.BcsType({name:String(s),write:(o,a)=>{throw new Error("Not implemented")},read:o=>{const{name:a,params:u}=this.parseTypeName(s),c=this.getTypeInterface(a),l=u.reduce((f,d,h)=>Object.assign(f,{[d]:n[h]}),{});return c._decodeRaw.call(this,o,u,l)}}));return e(...i).read(r)}),this}registerAddressType(t,e,r="hex"){switch(r){case"base64":return this.registerType(t,function(i,s){return(0,Ay.fromB64)(s).reduce((o,a)=>o.write8(a),i)},function(i){return(0,Ay.toB64)(i.readBytes(e))});case"hex":return this.registerType(t,function(i,s){return(0,jy.fromHEX)(s).reduce((o,a)=>o.write8(a),i)},function(i){return(0,jy.toHEX)(i.readBytes(e))});default:throw new Error("Unsupported encoding! Use either hex or base64")}}registerVectorType(t){let{name:e,params:r}=this.parseTypeName(t);if(r.length>1)throw new Error("Vector can have only one type parameter; got "+e);return this.registerType(t,function(i,s,o,a){return i.writeVec(s,(u,c)=>{let l=o[0];if(!l)throw new Error(`Incorrect number of type parameters passed a to vector '${t}'`);let{name:f,params:d}=this.parseTypeName(l);if(this.hasType(f))return this.getTypeInterface(f)._encodeRaw.call(this,u,c,d,a);if(!(f in a))throw new Error(`Unable to find a matching type definition for ${f} in vector; make sure you passed a generic`);let{name:h,params:m}=this.parseTypeName(a[f]);return this.getTypeInterface(h)._encodeRaw.call(this,u,c,m,a)})},function(i,s,o){return i.readVec(a=>{let u=s[0];if(!u)throw new Error(`Incorrect number of type parameters passed to a vector '${t}'`);let{name:c,params:l}=this.parseTypeName(u);if(this.hasType(c))return this.getTypeInterface(c)._decodeRaw.call(this,a,l,o);if(!(c in o))throw new Error(`Unable to find a matching type definition for ${c} in vector; make sure you passed a generic`);let{name:f,params:d}=this.parseTypeName(o[c]);return this.getTypeInterface(f)._decodeRaw.call(this,a,d,o)})})}registerStructType(t,e){for(let o in e){let a=this.tempKey(),u=e[o];!Array.isArray(u)&&typeof u!="string"&&(e[o]=a,this.registerStructType(a,u))}let r=Object.freeze(e),n=Object.keys(r),{name:i,params:s}=this.parseTypeName(t);return this.registerType(t,function(a,u,c,l){if(!u||u.constructor!==Object)throw new Error(`Expected ${i} to be an Object, got: ${u}`);if(c.length!==s.length)throw new Error(`Incorrect number of generic parameters passed; expected: ${s.length}, got: ${c.length}`);for(let f of n){if(!(f in u))throw new Error(`Struct ${i} requires field ${f}:${r[f]}`);const{name:d,params:h}=this.parseTypeName(r[f]);if(!s.includes(d))this.getTypeInterface(d)._encodeRaw.call(this,a,u[f],h,l);else{const m=s.indexOf(d);let{name:g,params:x}=this.parseTypeName(c[m]);if(this.hasType(g)){this.getTypeInterface(g)._encodeRaw.call(this,a,u[f],x,l);continue}if(!(g in l))throw new Error(`Unable to find a matching type definition for ${g} in ${i}; make sure you passed a generic`);let{name:_,params:S}=this.parseTypeName(l[g]);this.getTypeInterface(_)._encodeRaw.call(this,a,u[f],S,l)}}return a},function(a,u,c){if(u.length!==s.length)throw new Error(`Incorrect number of generic parameters passed; expected: ${s.length}, got: ${u.length}`);let l={};for(let f of n){const{name:d,params:h}=this.parseTypeName(r[f]);if(!s.includes(d))l[f]=this.getTypeInterface(d)._decodeRaw.call(this,a,h,c);else{const m=s.indexOf(d);let{name:g,params:x}=this.parseTypeName(u[m]);if(this.hasType(g)){l[f]=this.getTypeInterface(g)._decodeRaw.call(this,a,x,c);continue}if(!(g in c))throw new Error(`Unable to find a matching type definition for ${g} in ${i}; make sure you passed a generic`);let{name:_,params:S}=this.parseTypeName(c[g]);l[f]=this.getTypeInterface(_)._decodeRaw.call(this,a,S,c)}}return l})}registerEnumType(t,e){for(let o in e){let a=this.tempKey(),u=e[o];u!==null&&!Array.isArray(u)&&typeof u!="string"&&(e[o]=a,this.registerStructType(a,u))}let r=Object.freeze(e),n=Object.keys(r),{name:i,params:s}=this.parseTypeName(t);return this.registerType(t,function(a,u,c,l){if(!u)throw new Error(`Unable to write enum "${i}", missing data. +Received: "${u}"`);if(typeof u!="object")throw new Error(`Incorrect data passed into enum "${i}", expected object with properties: "${n.join(" | ")}". +Received: "${JSON.stringify(u)}"`);let f=Object.keys(u)[0];if(f===void 0)throw new Error(`Empty object passed as invariant of the enum "${i}"`);let d=n.indexOf(f);if(d===-1)throw new Error(`Unknown invariant of the enum "${i}", allowed values: "${n.join(" | ")}"; received "${f}"`);let h=n[d],m=r[h];if(a.write8(d),m===null)return a;let g=s.indexOf(m),x=g===-1?m:c[g];{let{name:_,params:S}=this.parseTypeName(x);return this.getTypeInterface(_)._encodeRaw.call(this,a,u[f],S,l)}},function(a,u,c){let l=a.readULEB(),f=n[l],d=r[f];if(l===-1)throw new Error(`Decoding type mismatch, expected enum "${i}" invariant index, received "${l}"`);if(d===null)return{[f]:!0};let h=s.indexOf(d),m=h===-1?d:u[h];{let{name:g,params:x}=this.parseTypeName(m);return{[f]:this.getTypeInterface(g)._decodeRaw.call(this,a,x,c)}}})}getTypeInterface(t){let e=this.types.get(t);if(typeof e=="string"){let r=[];for(;typeof e=="string";){if(r.includes(e))throw new Error(`Recursive definition found: ${r.join(" -> ")} -> ${e}`);r.push(e),e=this.types.get(e)}}if(e===void 0)throw new Error(`Type ${t} is not registered`);return e}parseTypeName(t){if(Array.isArray(t)){let[a,...u]=t;return{name:a,params:u}}if(typeof t!="string")throw new Error(`Illegal type passed as a name of the type: ${t}`);let[e,r]=this.schema.genericSeparators||["<",">"],n=t.indexOf(e),i=Array.from(t).reverse().indexOf(r);if(n===-1&&i===-1)return{name:t,params:[]};if(n===-1||i===-1)throw new Error(`Unclosed generic in name '${t}'`);let s=t.slice(0,n),o=(0,oT.splitGenericParameters)(t.slice(n+1,t.length-i-1),this.schema.genericSeparators);return{name:s,params:o}}};let hr=Rd;hr.U8="u8";hr.U16="u16";hr.U32="u32";hr.U64="u64";hr.U128="u128";hr.U256="u256";hr.BOOL="bool";hr.VECTOR="vector";hr.ADDRESS="address";hr.STRING="string";hr.HEX="hex-string";hr.BASE58="base58-string";hr.BASE64="base64-string";function FR(t){t.registerType(hr.U8,function(e,r){return e.write8(r)},function(e){return e.read8()},e=>e<256),t.registerType(hr.U16,function(e,r){return e.write16(r)},function(e){return e.read16()},e=>e<65536),t.registerType(hr.U32,function(e,r){return e.write32(r)},function(e){return e.read32()},e=>e<=4294967296n),t.registerType(hr.U64,function(e,r){return e.write64(r)},function(e){return e.read64()}),t.registerType(hr.U128,function(e,r){return e.write128(r)},function(e){return e.read128()}),t.registerType(hr.U256,function(e,r){return e.write256(r)},function(e){return e.read256()}),t.registerType(hr.BOOL,function(e,r){return e.write8(r)},function(e){return e.read8().toString(10)==="1"}),t.registerType(hr.STRING,function(e,r){return e.writeVec(Array.from(r),(n,i)=>n.write8(i.charCodeAt(0)))},function(e){return e.readVec(r=>r.read8()).map(r=>String.fromCharCode(Number(r))).join("")},e=>!0),t.registerType(hr.HEX,function(e,r){return e.writeVec(Array.from((0,jy.fromHEX)(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return(0,jy.toHEX)(new Uint8Array(r))}),t.registerType(hr.BASE58,function(e,r){return e.writeVec(Array.from((0,iT.fromB58)(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return(0,iT.toB58)(new Uint8Array(r))}),t.registerType(hr.BASE64,function(e,r){return e.writeVec(Array.from((0,Ay.fromB64)(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return(0,Ay.toB64)(new Uint8Array(r))})}function Ffe(){return{genericSeparators:["<",">"],vectorType:"Vec",addressLength:UR,addressEncoding:"hex"}}function Lfe(){return{genericSeparators:["<",">"],vectorType:"vector",addressLength:UR,addressEncoding:"hex"}}(function(t){var e=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,s=(S,O)=>{for(var D in O)e(S,D,{get:O[D],enumerable:!0})},o=(S,O,D,z)=>{if(O&&typeof O=="object"||typeof O=="function")for(let G of n(O))!i.call(S,G)&&G!==D&&e(S,G,{get:()=>O[G],enumerable:!(z=r(O,G))||z.enumerable});return S},a=(S,O,D)=>(o(S,O,"default"),D&&o(D,O,"default")),u=S=>o(e({},"__esModule",{value:!0}),S),c={};s(c,{BcsReader:()=>g.BcsReader,BcsType:()=>d.BcsType,BcsWriter:()=>_.BcsWriter,SerializedBcs:()=>d.SerializedBcs,bcs:()=>h.bcs,decodeStr:()=>x.decodeStr,encodeStr:()=>x.encodeStr,fromB58:()=>l.fromB58,fromB64:()=>f.fromB64,fromHEX:()=>m.fromHEX,isSerializedBcs:()=>d.isSerializedBcs,splitGenericParameters:()=>x.splitGenericParameters,toB58:()=>l.toB58,toB64:()=>f.toB64,toHEX:()=>m.toHEX}),t.exports=u(c);var l=Dg,f=Bg,d=N2,h=Ife,m=Ug,g=I2,x=A2,_=M2;a(c,Dfe,t.exports)})(bR);var U2=bR.exports,F2=Object.defineProperty,zfe=Object.getOwnPropertyDescriptor,Vfe=Object.getOwnPropertyNames,Wfe=Object.prototype.hasOwnProperty,Hfe=(t,e)=>{for(var r in e)F2(t,r,{get:e[r],enumerable:!0})},Gfe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Vfe(e))!Wfe.call(t,i)&&i!==r&&F2(t,i,{get:()=>e[i],enumerable:!(n=zfe(e,i))||n.enumerable});return t},qfe=t=>Gfe(F2({},"__esModule",{value:!0}),t),LR={};Hfe(LR,{SUI_ADDRESS_LENGTH:()=>L2,isValidSuiAddress:()=>WR,isValidSuiObjectId:()=>Jfe,isValidTransactionDigest:()=>Xfe,normalizeStructTag:()=>HR,normalizeSuiAddress:()=>V2,normalizeSuiObjectId:()=>Qfe,parseStructTag:()=>z2});var zR=qfe(LR),VR=U2;const Kfe=32;function Xfe(t){try{return(0,VR.fromB58)(t).length===Kfe}catch{return!1}}const L2=32;function WR(t){return Zfe(t)&&ede(t)===L2}function Jfe(t){return WR(t)}function Yfe(t){return t.includes("::")?z2(t):t}function z2(t){const[e,r]=t.split("::"),n=t.slice(e.length+r.length+4),i=n.includes("<")?n.slice(0,n.indexOf("<")):n,s=n.includes("<")?(0,VR.splitGenericParameters)(n.slice(n.indexOf("<")+1,n.lastIndexOf(">"))).map(o=>Yfe(o.trim())):[];return{address:V2(e),module:r,name:i,typeParams:s}}function HR(t){const{address:e,module:r,name:n,typeParams:i}=typeof t=="string"?z2(t):t,s=(i==null?void 0:i.length)>0?`<${i.map(o=>typeof o=="string"?o:HR(o)).join(",")}>`:"";return`${e}::${r}::${n}${s}`}function V2(t,e=!1){let r=t.toLowerCase();return!e&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(L2*2,"0")}`}function Qfe(t,e=!1){return V2(t,e)}function Zfe(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function ede(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}var W2=Object.defineProperty,tde=Object.getOwnPropertyDescriptor,rde=Object.getOwnPropertyNames,nde=Object.prototype.hasOwnProperty,ide=(t,e)=>{for(var r in e)W2(t,r,{get:e[r],enumerable:!0})},sde=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of rde(e))!nde.call(t,i)&&i!==r&&W2(t,i,{get:()=>e[i],enumerable:!(n=tde(e,i))||n.enumerable});return t},ode=t=>sde(W2({},"__esModule",{value:!0}),t),GR={};ide(GR,{TypeTagSerializer:()=>Ru});var qR=ode(GR),ade=U2,ude=zR;const cde=/^vector<(.+)>$/,lde=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;class Ru{static parseFromStr(e,r=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const n=e.match(cde);if(n)return{vector:Ru.parseFromStr(n[1],r)};const i=e.match(lde);if(i)return{struct:{address:r?(0,ude.normalizeSuiAddress)(i[1]):i[1],module:i[2],name:i[3],typeParams:i[5]===void 0?[]:Ru.parseStructTypeArgs(i[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,r=!1){return(0,ade.splitGenericParameters)(e).map(n=>Ru.parseFromStr(n,r))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${Ru.tagToString(e.vector)}>`;if("struct"in e){const r=e.struct,n=r.typeParams.map(Ru.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${n?`<${n}>`:""}`}throw new Error("Invalid TypeTag")}}var H2=Object.defineProperty,fde=Object.getOwnPropertyDescriptor,dde=Object.getOwnPropertyNames,hde=Object.prototype.hasOwnProperty,pde=(t,e)=>{for(var r in e)H2(t,r,{get:e[r],enumerable:!0})},mde=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of dde(e))!hde.call(t,i)&&i!==r&&H2(t,i,{get:()=>e[i],enumerable:!(n=fde(e,i))||n.enumerable});return t},yde=t=>mde(H2({},"__esModule",{value:!0}),t),KR={};pde(KR,{TypeTagSerializer:()=>gde.TypeTagSerializer,bcs:()=>Cde,bcsRegistry:()=>nr,isPureArg:()=>vde});var XR=yde(KR),ce=U2,xm=zR,aT=qR,gde=qR;function vde(t){return t.Pure!==void 0}const nr=new ce.BCS({...(0,ce.getSuiMoveConfig)(),types:{enums:{"Option":{None:null,Some:"T"}}}});function JR(t){return ce.bcs.u64({name:"unsafe_u64",...t}).transform({input:e=>e,output:e=>Number(e)})}function bde(t){return ce.bcs.enum("Option",{None:null,Some:t})}function G2(t){return t.transform({input:e=>({[e.kind]:e}),output:e=>{const r=Object.keys(e)[0];return{kind:r,...e[r]}}})}const Ts=ce.bcs.bytes(xm.SUI_ADDRESS_LENGTH).transform({input:t=>typeof t=="string"?(0,ce.fromHEX)((0,xm.normalizeSuiAddress)(t)):t,output:t=>(0,xm.normalizeSuiAddress)((0,ce.toHEX)(t))}),q2=ce.bcs.vector(ce.bcs.u8()).transform({name:"ObjectDigest",input:t=>(0,ce.fromB58)(t),output:t=>(0,ce.toB58)(new Uint8Array(t))}),Yh=ce.bcs.struct("SuiObjectRef",{objectId:Ts,version:ce.bcs.u64(),digest:q2}),K2=ce.bcs.struct("SharedObjectRef",{objectId:Ts,initialSharedVersion:ce.bcs.u64(),mutable:ce.bcs.bool()}),My=ce.bcs.enum("ObjectArg",{ImmOrOwned:Yh,Shared:K2,Receiving:Yh}),X2=ce.bcs.enum("CallArg",{Pure:ce.bcs.vector(ce.bcs.u8()),Object:My,ObjVec:ce.bcs.vector(My)}),zf=ce.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:ce.bcs.lazy(()=>zf),struct:ce.bcs.lazy(()=>tE),u16:null,u32:null,u256:null}),ns=G2(ce.bcs.enum("Argument",{GasCoin:null,Input:ce.bcs.struct("Input",{index:ce.bcs.u16()}),Result:ce.bcs.struct("Result",{index:ce.bcs.u16()}),NestedResult:ce.bcs.struct("NestedResult",{index:ce.bcs.u16(),resultIndex:ce.bcs.u16()})})),J2=ce.bcs.struct("ProgrammableMoveCall",{package:Ts,module:ce.bcs.string(),function:ce.bcs.string(),type_arguments:ce.bcs.vector(zf),arguments:ce.bcs.vector(ns)}).transform({input:t=>{const[e,r,n]=t.target.split("::"),i=t.typeArguments.map(s=>aT.TypeTagSerializer.parseFromStr(s,!0));return{package:(0,xm.normalizeSuiAddress)(e),module:r,function:n,type_arguments:i,arguments:t.arguments}},output:t=>({target:[t.package,t.module,t.function].join("::"),arguments:t.arguments,typeArguments:t.type_arguments.map(aT.TypeTagSerializer.tagToString)})}),Y2=G2(ce.bcs.enum("Transaction",{MoveCall:J2,TransferObjects:ce.bcs.struct("TransferObjects",{objects:ce.bcs.vector(ns),address:ns}),SplitCoins:ce.bcs.struct("SplitCoins",{coin:ns,amounts:ce.bcs.vector(ns)}),MergeCoins:ce.bcs.struct("MergeCoins",{destination:ns,sources:ce.bcs.vector(ns)}),Publish:ce.bcs.struct("Publish",{modules:ce.bcs.vector(ce.bcs.vector(ce.bcs.u8())),dependencies:ce.bcs.vector(Ts)}),MakeMoveVec:ce.bcs.struct("MakeMoveVec",{type:bde(zf),objects:ce.bcs.vector(ns)}),Upgrade:ce.bcs.struct("Upgrade",{modules:ce.bcs.vector(ce.bcs.vector(ce.bcs.u8())),dependencies:ce.bcs.vector(Ts),packageId:Ts,ticket:ns})})),Q2=ce.bcs.struct("ProgrammableTransaction",{inputs:ce.bcs.vector(X2),transactions:ce.bcs.vector(Y2)}),Z2=ce.bcs.enum("TransactionKind",{ProgrammableTransaction:Q2,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),eE=ce.bcs.enum("TransactionExpiration",{None:null,Epoch:JR()}),tE=ce.bcs.struct("StructTag",{address:Ts,module:ce.bcs.string(),name:ce.bcs.string(),typeParams:ce.bcs.vector(zf)}),rE=ce.bcs.struct("GasData",{payment:ce.bcs.vector(Yh),owner:Ts,price:ce.bcs.u64(),budget:ce.bcs.u64()}),nE=ce.bcs.struct("TransactionDataV1",{kind:Z2,sender:Ts,gasData:rE,expiration:eE}),iE=ce.bcs.enum("TransactionData",{V1:nE}),wde=ce.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),_de=ce.bcs.enum("IntentVersion",{V0:null}),xde=ce.bcs.enum("AppId",{Sui:null}),Sde=ce.bcs.struct("Intent",{scope:wde,version:_de,appId:xde}),Ede=ce.bcs.generic(["T"],t=>ce.bcs.struct("IntentMessage",{intent:Sde,value:t})),sE=ce.bcs.enum("CompressedSignature",{ED25519:ce.bcs.fixedArray(64,ce.bcs.u8()),Secp256k1:ce.bcs.fixedArray(64,ce.bcs.u8()),Secp256r1:ce.bcs.fixedArray(64,ce.bcs.u8()),ZkLogin:ce.bcs.vector(ce.bcs.u8())}),oE=ce.bcs.enum("PublicKey",{ED25519:ce.bcs.fixedArray(32,ce.bcs.u8()),Secp256k1:ce.bcs.fixedArray(33,ce.bcs.u8()),Secp256r1:ce.bcs.fixedArray(33,ce.bcs.u8()),ZkLogin:ce.bcs.vector(ce.bcs.u8())}),aE=ce.bcs.struct("MultiSigPkMap",{pubKey:oE,weight:ce.bcs.u8()}),uE=ce.bcs.struct("MultiSigPublicKey",{pk_map:ce.bcs.vector(aE),threshold:ce.bcs.u16()}),YR=ce.bcs.struct("MultiSig",{sigs:ce.bcs.vector(sE),bitmap:ce.bcs.u16(),multisig_pk:uE}),Ode=ce.bcs.vector(ce.bcs.u8()).transform({input:t=>typeof t=="string"?(0,ce.fromB64)(t):t,output:t=>(0,ce.toB64)(new Uint8Array(t))}),QR=ce.bcs.struct("SenderSignedTransaction",{intentMessage:Ede(iE),txSignatures:ce.bcs.vector(Ode)}),ZR=ce.bcs.vector(QR,{name:"SenderSignedData"}),Cde={...ce.bcs,U8:ce.bcs.u8(),U16:ce.bcs.u16(),U32:ce.bcs.u32(),U64:ce.bcs.u64(),U128:ce.bcs.u128(),U256:ce.bcs.u256(),ULEB128:ce.bcs.uleb128(),Bool:ce.bcs.bool(),String:ce.bcs.string(),Address:Ts,Argument:ns,CallArg:X2,CompressedSignature:sE,GasData:rE,MultiSig:YR,MultiSigPkMap:aE,MultiSigPublicKey:uE,ObjectArg:My,ObjectDigest:q2,ProgrammableMoveCall:J2,ProgrammableTransaction:Q2,PublicKey:oE,SenderSignedData:ZR,SenderSignedTransaction:QR,SharedObjectRef:K2,StructTag:tE,SuiObjectRef:Yh,Transaction:Y2,TransactionData:iE,TransactionDataV1:nE,TransactionExpiration:eE,TransactionKind:Z2,TypeTag:zf,ser:nr.ser.bind(nr),de:nr.de.bind(nr),getTypeInterface:nr.getTypeInterface.bind(nr),hasType:nr.hasType.bind(nr),parseTypeName:nr.parseTypeName.bind(nr),registerAddressType:nr.registerAddressType.bind(nr),registerAlias:nr.registerAlias.bind(nr),registerBcsType:nr.registerBcsType.bind(nr),registerEnumType:nr.registerEnumType.bind(nr),registerStructType:nr.registerStructType.bind(nr),registerType:nr.registerType.bind(nr),types:nr.types};nr.registerBcsType("utf8string",()=>ce.bcs.string({name:"utf8string"}));nr.registerBcsType("unsafe_u64",()=>JR());nr.registerBcsType("enumKind",t=>G2(t));[Ts,ns,X2,sE,rE,YR,aE,uE,My,q2,J2,Q2,oE,ZR,K2,tE,Yh,Y2,iE,nE,eE,Z2,zf].forEach(t=>{nr.registerBcsType(t.name,()=>t)});var Pp={},Qh=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(Pp,"__esModule",{value:!0});Pp.moveInspect=kde;Pp.getReservesDetail=eD;Pp.getAddressPortfolio=Ade;const Tde=XR,J1=Jh();function Pde(t,e,r){if(t.results&&t.results.length>0){if(t.results[0].returnValues&&t.results[0].returnValues.length>0){let n=[];for(let i of t.results[0].returnValues){const s=r||i[1];let o=Tde.bcs.de(s,Uint8Array.from(i[0]));n.push(o)}return n}}else t.error&&console.log(`Get an error, msg: ${t.error}`)}function Ide(t,e,r,n,i){return Qh(this,void 0,void 0,function*(){const s=yield e.devInspectTransactionBlock({transactionBlock:t,sender:r});return Pde(s,n,i)})}function kde(t,e,r,n,i,s,o){return Qh(this,void 0,void 0,function*(){const a=n.split("::");return t.moveCall({target:n,arguments:i,typeArguments:s}),yield Ide(t,e,r,a.slice(1,3).join("::"),o)})}function eD(t,e){return Qh(this,void 0,void 0,function*(){const r=yield(0,J1.getConfig)();return yield e.getDynamicFieldObject({parentId:r.ReserveParentId,name:{type:"u8",value:t}})})}function Ade(t){return Qh(this,arguments,void 0,function*(e,r=!0,n){const i=new Map;return yield Promise.all(Object.keys(J1.pool).map(s=>Qh(this,void 0,void 0,function*(){var o,a,u,c,l,f,d,h,m,g,x,_,S,O,D,z,G,K;const J=J1.pool[s],fe=yield n.getDynamicFieldObject({parentId:J.borrowBalanceParentId,name:{type:"address",value:e}}),pe=yield n.getDynamicFieldObject({parentId:J.supplyBalanceParentId,name:{type:"address",value:e}}),Oe=yield eD(J.assetId,n),Ue=((l=(c=(u=(a=(o=Oe.data)===null||o===void 0?void 0:o.content)===null||a===void 0?void 0:a.fields)===null||u===void 0?void 0:u.value)===null||c===void 0?void 0:c.fields)===null||l===void 0?void 0:l.current_borrow_index)/Math.pow(10,27),W=((g=(m=(h=(d=(f=Oe.data)===null||f===void 0?void 0:f.content)===null||d===void 0?void 0:d.fields)===null||h===void 0?void 0:h.value)===null||m===void 0?void 0:m.fields)===null||g===void 0?void 0:g.current_supply_index)/Math.pow(10,27);let p=fe&&((_=(x=fe.data)===null||x===void 0?void 0:x.content)===null||_===void 0?void 0:_.fields.value)!==void 0?((O=(S=fe.data)===null||S===void 0?void 0:S.content)===null||O===void 0?void 0:O.fields.value)/Math.pow(10,9):0,T=pe&&((z=(D=pe.data)===null||D===void 0?void 0:D.content)===null||z===void 0?void 0:z.fields.value)!==void 0?((K=(G=pe.data)===null||G===void 0?void 0:G.content)===null||K===void 0?void 0:K.fields.value)/Math.pow(10,9):0;p*=Ue,T*=W,r&&console.log(`| ${J.name} | ${p} | ${T} |`),i.set(J.name,{borrowBalance:p,supplyBalance:T})}))),i})}var tD={},Lg={},cE={},zg={},lE={},Vg={};Object.defineProperty(Vg,"__esModule",{value:!0});Vg.Convert=void 0;class jde{static toPriceFeed(e){return pb(e,Io("PriceFeed"))}static priceFeedToJson(e){return mb(e,Io("PriceFeed"))}static toPrice(e){return pb(e,Io("Price"))}static priceToJson(e){return mb(e,Io("Price"))}static toPriceFeedMetadata(e){return pb(e,Io("PriceFeedMetadata"))}static priceFeedMetadataToJson(e){return mb(e,Io("PriceFeedMetadata"))}}Vg.Convert=jde;function vo(t,e,r=""){throw Error(r?`Invalid value for key "${r}". Expected type ${JSON.stringify(t)} but got ${JSON.stringify(e)}`:`Invalid value ${JSON.stringify(e)} for type ${JSON.stringify(t)}`)}function Mde(t){if(t.jsonToJS===void 0){const e={};t.props.forEach(r=>e[r.json]={key:r.js,typ:r.typ}),t.jsonToJS=e}return t.jsonToJS}function $de(t){if(t.jsToJSON===void 0){const e={};t.props.forEach(r=>e[r.js]={key:r.json,typ:r.typ}),t.jsToJSON=e}return t.jsToJSON}function xl(t,e,r,n=""){function i(l,f){return typeof l==typeof f?f:vo(l,f,n)}function s(l,f){const d=l.length;for(let h=0;hxl(d,l,r)):vo("array",f)}function u(l){if(l===null)return null;const f=new Date(l);return isNaN(f.valueOf())?vo("Date",l):f}function c(l,f,d){if(d===null||typeof d!="object"||Array.isArray(d))return vo("object",d);const h={};return Object.getOwnPropertyNames(l).forEach(m=>{const g=l[m],x=Object.prototype.hasOwnProperty.call(d,m)?d[m]:void 0;h[g.key]=xl(x,g.typ,r,g.key)}),Object.getOwnPropertyNames(d).forEach(m=>{Object.prototype.hasOwnProperty.call(l,m)||(h[m]=xl(d[m],f,r,m))}),h}if(e==="any")return t;if(e===null)return t===null?t:vo(e,t);if(e===!1)return vo(e,t);for(;typeof e=="object"&&e.ref!==void 0;)e=Nde[e.ref];return Array.isArray(e)?o(e,t):typeof e=="object"?e.hasOwnProperty("unionMembers")?s(e.unionMembers,t):e.hasOwnProperty("arrayItems")?a(e.arrayItems,t):e.hasOwnProperty("props")?c(r(e),e.additional,t):vo(e,t):e===Date&&typeof t!="number"?u(t):i(e,t)}function pb(t,e){return xl(t,e,Mde)}function mb(t,e){return xl(t,e,$de)}function gu(...t){return{unionMembers:t}}function yb(t,e){return{props:t,additional:e}}function Io(t){return{ref:t}}const Nde={PriceFeed:yb([{json:"ema_price",js:"ema_price",typ:Io("Price")},{json:"id",js:"id",typ:""},{json:"metadata",js:"metadata",typ:gu(void 0,Io("PriceFeedMetadata"))},{json:"price",js:"price",typ:Io("Price")},{json:"vaa",js:"vaa",typ:gu(void 0,"")}],"any"),Price:yb([{json:"conf",js:"conf",typ:""},{json:"expo",js:"expo",typ:0},{json:"price",js:"price",typ:""},{json:"publish_time",js:"publish_time",typ:0}],"any"),PriceFeedMetadata:yb([{json:"attestation_time",js:"attestation_time",typ:gu(void 0,0)},{json:"emitter_chain",js:"emitter_chain",typ:0},{json:"prev_publish_time",js:"prev_publish_time",typ:gu(void 0,0)},{json:"price_service_receive_time",js:"price_service_receive_time",typ:gu(void 0,0)},{json:"sequence_number",js:"sequence_number",typ:gu(void 0,0)},{json:"slot",js:"slot",typ:gu(void 0,0)}],"any")};var Zs={},fE={exports:{}};fE.exports;(function(t){(function(e,r){function n(W,p){if(!W)throw new Error(p||"Assertion failed")}function i(W,p){W.super_=p;var T=function(){};T.prototype=p.prototype,W.prototype=new T,W.prototype.constructor=W}function s(W,p,T){if(s.isBN(W))return W;this.negative=0,this.words=null,this.length=0,this.red=null,W!==null&&((p==="le"||p==="be")&&(T=p,p=10),this._init(W||0,p||10,T||"be"))}typeof e=="object"?e.exports=s:r.BN=s,s.BN=s,s.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=u5.Buffer}catch{}s.isBN=function(p){return p instanceof s?!0:p!==null&&typeof p=="object"&&p.constructor.wordSize===s.wordSize&&Array.isArray(p.words)},s.max=function(p,T){return p.cmp(T)>0?p:T},s.min=function(p,T){return p.cmp(T)<0?p:T},s.prototype._init=function(p,T,$){if(typeof p=="number")return this._initNumber(p,T,$);if(typeof p=="object")return this._initArray(p,T,$);T==="hex"&&(T=16),n(T===(T|0)&&T>=2&&T<=36),p=p.toString().replace(/\s+/g,"");var L=0;p[0]==="-"&&(L++,this.negative=1),L=0;L-=3)j=p[L]|p[L-1]<<8|p[L-2]<<16,this.words[N]|=j<>>26-B&67108863,B+=24,B>=26&&(B-=26,N++);else if($==="le")for(L=0,N=0;L>>26-B&67108863,B+=24,B>=26&&(B-=26,N++);return this._strip()};function a(W,p){var T=W.charCodeAt(p);if(T>=48&&T<=57)return T-48;if(T>=65&&T<=70)return T-55;if(T>=97&&T<=102)return T-87;n(!1,"Invalid character in "+W)}function u(W,p,T){var $=a(W,T);return T-1>=p&&($|=a(W,T-1)<<4),$}s.prototype._parseHex=function(p,T,$){this.length=Math.ceil((p.length-T)/6),this.words=new Array(this.length);for(var L=0;L=T;L-=2)B=u(p,T,L)<=18?(N-=18,j+=1,this.words[j]|=B>>>26):N+=8;else{var P=p.length-T;for(L=P%2===0?T+1:T;L=18?(N-=18,j+=1,this.words[j]|=B>>>26):N+=8}this._strip()};function c(W,p,T,$){for(var L=0,N=0,j=Math.min(W.length,T),B=p;B=49?N=P-49+10:P>=17?N=P-17+10:N=P,n(P>=0&&N<$,"Invalid character"),L+=N}return L}s.prototype._parseBase=function(p,T,$){this.words=[0],this.length=1;for(var L=0,N=1;N<=67108863;N*=T)L++;L--,N=N/T|0;for(var j=p.length-$,B=j%L,P=Math.min(j,j-B)+$,v=0,U=$;U1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},s.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{s.prototype[Symbol.for("nodejs.util.inspect.custom")]=f}catch{s.prototype.inspect=f}else s.prototype.inspect=f;function f(){return(this.red?""}var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],m=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(p,T){p=p||10,T=T|0||1;var $;if(p===16||p==="hex"){$="";for(var L=0,N=0,j=0;j>>24-L&16777215,L+=2,L>=26&&(L-=26,j--),N!==0||j!==this.length-1?$=d[6-P.length]+P+$:$=P+$}for(N!==0&&($=N.toString(16)+$);$.length%T!==0;)$="0"+$;return this.negative!==0&&($="-"+$),$}if(p===(p|0)&&p>=2&&p<=36){var v=h[p],U=m[p];$="";var ue=this.clone();for(ue.negative=0;!ue.isZero();){var de=ue.modrn(U).toString(p);ue=ue.idivn(U),ue.isZero()?$=de+$:$=d[v-de.length]+de+$}for(this.isZero()&&($="0"+$);$.length%T!==0;)$="0"+$;return this.negative!==0&&($="-"+$),$}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var p=this.words[0];return this.length===2?p+=this.words[1]*67108864:this.length===3&&this.words[2]===1?p+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-p:p},s.prototype.toJSON=function(){return this.toString(16,2)},o&&(s.prototype.toBuffer=function(p,T){return this.toArrayLike(o,p,T)}),s.prototype.toArray=function(p,T){return this.toArrayLike(Array,p,T)};var g=function(p,T){return p.allocUnsafe?p.allocUnsafe(T):new p(T)};s.prototype.toArrayLike=function(p,T,$){this._strip();var L=this.byteLength(),N=$||Math.max(1,L);n(L<=N,"byte array longer than desired length"),n(N>0,"Requested array length <= 0");var j=g(p,N),B=T==="le"?"LE":"BE";return this["_toArrayLike"+B](j,L),j},s.prototype._toArrayLikeLE=function(p,T){for(var $=0,L=0,N=0,j=0;N>8&255),$>16&255),j===6?($>24&255),L=0,j=0):(L=B>>>24,j+=2)}if($=0&&(p[$--]=B>>8&255),$>=0&&(p[$--]=B>>16&255),j===6?($>=0&&(p[$--]=B>>24&255),L=0,j=0):(L=B>>>24,j+=2)}if($>=0)for(p[$--]=L;$>=0;)p[$--]=0},Math.clz32?s.prototype._countBits=function(p){return 32-Math.clz32(p)}:s.prototype._countBits=function(p){var T=p,$=0;return T>=4096&&($+=13,T>>>=13),T>=64&&($+=7,T>>>=7),T>=8&&($+=4,T>>>=4),T>=2&&($+=2,T>>>=2),$+T},s.prototype._zeroBits=function(p){if(p===0)return 26;var T=p,$=0;return T&8191||($+=13,T>>>=13),T&127||($+=7,T>>>=7),T&15||($+=4,T>>>=4),T&3||($+=2,T>>>=2),T&1||$++,$},s.prototype.bitLength=function(){var p=this.words[this.length-1],T=this._countBits(p);return(this.length-1)*26+T};function x(W){for(var p=new Array(W.bitLength()),T=0;T>>L&1}return p}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var p=0,T=0;Tp.length?this.clone().ior(p):p.clone().ior(this)},s.prototype.uor=function(p){return this.length>p.length?this.clone().iuor(p):p.clone().iuor(this)},s.prototype.iuand=function(p){var T;this.length>p.length?T=p:T=this;for(var $=0;$p.length?this.clone().iand(p):p.clone().iand(this)},s.prototype.uand=function(p){return this.length>p.length?this.clone().iuand(p):p.clone().iuand(this)},s.prototype.iuxor=function(p){var T,$;this.length>p.length?(T=this,$=p):(T=p,$=this);for(var L=0;L<$.length;L++)this.words[L]=T.words[L]^$.words[L];if(this!==T)for(;Lp.length?this.clone().ixor(p):p.clone().ixor(this)},s.prototype.uxor=function(p){return this.length>p.length?this.clone().iuxor(p):p.clone().iuxor(this)},s.prototype.inotn=function(p){n(typeof p=="number"&&p>=0);var T=Math.ceil(p/26)|0,$=p%26;this._expand(T),$>0&&T--;for(var L=0;L0&&(this.words[L]=~this.words[L]&67108863>>26-$),this._strip()},s.prototype.notn=function(p){return this.clone().inotn(p)},s.prototype.setn=function(p,T){n(typeof p=="number"&&p>=0);var $=p/26|0,L=p%26;return this._expand($+1),T?this.words[$]=this.words[$]|1<p.length?($=this,L=p):($=p,L=this);for(var N=0,j=0;j>>26;for(;N!==0&&j<$.length;j++)T=($.words[j]|0)+N,this.words[j]=T&67108863,N=T>>>26;if(this.length=$.length,N!==0)this.words[this.length]=N,this.length++;else if($!==this)for(;j<$.length;j++)this.words[j]=$.words[j];return this},s.prototype.add=function(p){var T;return p.negative!==0&&this.negative===0?(p.negative=0,T=this.sub(p),p.negative^=1,T):p.negative===0&&this.negative!==0?(this.negative=0,T=p.sub(this),this.negative=1,T):this.length>p.length?this.clone().iadd(p):p.clone().iadd(this)},s.prototype.isub=function(p){if(p.negative!==0){p.negative=0;var T=this.iadd(p);return p.negative=1,T._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(p),this.negative=1,this._normSign();var $=this.cmp(p);if($===0)return this.negative=0,this.length=1,this.words[0]=0,this;var L,N;$>0?(L=this,N=p):(L=p,N=this);for(var j=0,B=0;B>26,this.words[B]=T&67108863;for(;j!==0&&B>26,this.words[B]=T&67108863;if(j===0&&B>>26,ue=P&67108863,de=Math.min(v,p.length-1),Ee=Math.max(0,v-W.length+1);Ee<=de;Ee++){var Xe=v-Ee|0;L=W.words[Xe]|0,N=p.words[Ee]|0,j=L*N+ue,U+=j/67108864|0,ue=j&67108863}T.words[v]=ue|0,P=U|0}return P!==0?T.words[v]=P|0:T.length--,T._strip()}var S=function(p,T,$){var L=p.words,N=T.words,j=$.words,B=0,P,v,U,ue=L[0]|0,de=ue&8191,Ee=ue>>>13,Xe=L[1]|0,it=Xe&8191,Ge=Xe>>>13,mr=L[2]|0,Qt=mr&8191,Bt=mr>>>13,ln=L[3]|0,Ut=ln&8191,ar=ln>>>13,Yo=L[4]|0,qt=Yo&8191,ir=Yo>>>13,bn=L[5]|0,Zt=bn&8191,er=bn>>>13,wn=L[6]|0,tr=wn&8191,sr=wn>>>13,Un=L[7]|0,or=Un&8191,k=Un>>>13,b=L[8]|0,w=b&8191,F=b>>>13,X=L[9]|0,Z=X&8191,ie=X>>>13,dt=N[0]|0,et=dt&8191,Qe=dt>>>13,Vt=N[1]|0,qe=Vt&8191,ur=Vt>>>13,Ic=N[2]|0,Sr=Ic&8191,Ar=Ic>>>13,kp=N[3]|0,Wt=kp&8191,rr=kp>>>13,lo=N[4]|0,yr=lo&8191,gr=lo>>>13,Wf=N[5]|0,jr=Wf&8191,Tt=Wf>>>13,Hf=N[6]|0,E=Hf&8191,A=Hf>>>13,M=N[7]|0,y=M&8191,R=M>>>13,Q=N[8]|0,Y=Q&8191,oe=Q>>>13,_e=N[9]|0,Pe=_e&8191,xe=_e>>>13;$.negative=p.negative^T.negative,$.length=19,P=Math.imul(de,et),v=Math.imul(de,Qe),v=v+Math.imul(Ee,et)|0,U=Math.imul(Ee,Qe);var St=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(St>>>26)|0,St&=67108863,P=Math.imul(it,et),v=Math.imul(it,Qe),v=v+Math.imul(Ge,et)|0,U=Math.imul(Ge,Qe),P=P+Math.imul(de,qe)|0,v=v+Math.imul(de,ur)|0,v=v+Math.imul(Ee,qe)|0,U=U+Math.imul(Ee,ur)|0;var $e=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+($e>>>26)|0,$e&=67108863,P=Math.imul(Qt,et),v=Math.imul(Qt,Qe),v=v+Math.imul(Bt,et)|0,U=Math.imul(Bt,Qe),P=P+Math.imul(it,qe)|0,v=v+Math.imul(it,ur)|0,v=v+Math.imul(Ge,qe)|0,U=U+Math.imul(Ge,ur)|0,P=P+Math.imul(de,Sr)|0,v=v+Math.imul(de,Ar)|0,v=v+Math.imul(Ee,Sr)|0,U=U+Math.imul(Ee,Ar)|0;var Ze=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(Ze>>>26)|0,Ze&=67108863,P=Math.imul(Ut,et),v=Math.imul(Ut,Qe),v=v+Math.imul(ar,et)|0,U=Math.imul(ar,Qe),P=P+Math.imul(Qt,qe)|0,v=v+Math.imul(Qt,ur)|0,v=v+Math.imul(Bt,qe)|0,U=U+Math.imul(Bt,ur)|0,P=P+Math.imul(it,Sr)|0,v=v+Math.imul(it,Ar)|0,v=v+Math.imul(Ge,Sr)|0,U=U+Math.imul(Ge,Ar)|0,P=P+Math.imul(de,Wt)|0,v=v+Math.imul(de,rr)|0,v=v+Math.imul(Ee,Wt)|0,U=U+Math.imul(Ee,rr)|0;var tt=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(tt>>>26)|0,tt&=67108863,P=Math.imul(qt,et),v=Math.imul(qt,Qe),v=v+Math.imul(ir,et)|0,U=Math.imul(ir,Qe),P=P+Math.imul(Ut,qe)|0,v=v+Math.imul(Ut,ur)|0,v=v+Math.imul(ar,qe)|0,U=U+Math.imul(ar,ur)|0,P=P+Math.imul(Qt,Sr)|0,v=v+Math.imul(Qt,Ar)|0,v=v+Math.imul(Bt,Sr)|0,U=U+Math.imul(Bt,Ar)|0,P=P+Math.imul(it,Wt)|0,v=v+Math.imul(it,rr)|0,v=v+Math.imul(Ge,Wt)|0,U=U+Math.imul(Ge,rr)|0,P=P+Math.imul(de,yr)|0,v=v+Math.imul(de,gr)|0,v=v+Math.imul(Ee,yr)|0,U=U+Math.imul(Ee,gr)|0;var ht=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(ht>>>26)|0,ht&=67108863,P=Math.imul(Zt,et),v=Math.imul(Zt,Qe),v=v+Math.imul(er,et)|0,U=Math.imul(er,Qe),P=P+Math.imul(qt,qe)|0,v=v+Math.imul(qt,ur)|0,v=v+Math.imul(ir,qe)|0,U=U+Math.imul(ir,ur)|0,P=P+Math.imul(Ut,Sr)|0,v=v+Math.imul(Ut,Ar)|0,v=v+Math.imul(ar,Sr)|0,U=U+Math.imul(ar,Ar)|0,P=P+Math.imul(Qt,Wt)|0,v=v+Math.imul(Qt,rr)|0,v=v+Math.imul(Bt,Wt)|0,U=U+Math.imul(Bt,rr)|0,P=P+Math.imul(it,yr)|0,v=v+Math.imul(it,gr)|0,v=v+Math.imul(Ge,yr)|0,U=U+Math.imul(Ge,gr)|0,P=P+Math.imul(de,jr)|0,v=v+Math.imul(de,Tt)|0,v=v+Math.imul(Ee,jr)|0,U=U+Math.imul(Ee,Tt)|0;var ut=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(ut>>>26)|0,ut&=67108863,P=Math.imul(tr,et),v=Math.imul(tr,Qe),v=v+Math.imul(sr,et)|0,U=Math.imul(sr,Qe),P=P+Math.imul(Zt,qe)|0,v=v+Math.imul(Zt,ur)|0,v=v+Math.imul(er,qe)|0,U=U+Math.imul(er,ur)|0,P=P+Math.imul(qt,Sr)|0,v=v+Math.imul(qt,Ar)|0,v=v+Math.imul(ir,Sr)|0,U=U+Math.imul(ir,Ar)|0,P=P+Math.imul(Ut,Wt)|0,v=v+Math.imul(Ut,rr)|0,v=v+Math.imul(ar,Wt)|0,U=U+Math.imul(ar,rr)|0,P=P+Math.imul(Qt,yr)|0,v=v+Math.imul(Qt,gr)|0,v=v+Math.imul(Bt,yr)|0,U=U+Math.imul(Bt,gr)|0,P=P+Math.imul(it,jr)|0,v=v+Math.imul(it,Tt)|0,v=v+Math.imul(Ge,jr)|0,U=U+Math.imul(Ge,Tt)|0,P=P+Math.imul(de,E)|0,v=v+Math.imul(de,A)|0,v=v+Math.imul(Ee,E)|0,U=U+Math.imul(Ee,A)|0;var rt=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(rt>>>26)|0,rt&=67108863,P=Math.imul(or,et),v=Math.imul(or,Qe),v=v+Math.imul(k,et)|0,U=Math.imul(k,Qe),P=P+Math.imul(tr,qe)|0,v=v+Math.imul(tr,ur)|0,v=v+Math.imul(sr,qe)|0,U=U+Math.imul(sr,ur)|0,P=P+Math.imul(Zt,Sr)|0,v=v+Math.imul(Zt,Ar)|0,v=v+Math.imul(er,Sr)|0,U=U+Math.imul(er,Ar)|0,P=P+Math.imul(qt,Wt)|0,v=v+Math.imul(qt,rr)|0,v=v+Math.imul(ir,Wt)|0,U=U+Math.imul(ir,rr)|0,P=P+Math.imul(Ut,yr)|0,v=v+Math.imul(Ut,gr)|0,v=v+Math.imul(ar,yr)|0,U=U+Math.imul(ar,gr)|0,P=P+Math.imul(Qt,jr)|0,v=v+Math.imul(Qt,Tt)|0,v=v+Math.imul(Bt,jr)|0,U=U+Math.imul(Bt,Tt)|0,P=P+Math.imul(it,E)|0,v=v+Math.imul(it,A)|0,v=v+Math.imul(Ge,E)|0,U=U+Math.imul(Ge,A)|0,P=P+Math.imul(de,y)|0,v=v+Math.imul(de,R)|0,v=v+Math.imul(Ee,y)|0,U=U+Math.imul(Ee,R)|0;var st=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(st>>>26)|0,st&=67108863,P=Math.imul(w,et),v=Math.imul(w,Qe),v=v+Math.imul(F,et)|0,U=Math.imul(F,Qe),P=P+Math.imul(or,qe)|0,v=v+Math.imul(or,ur)|0,v=v+Math.imul(k,qe)|0,U=U+Math.imul(k,ur)|0,P=P+Math.imul(tr,Sr)|0,v=v+Math.imul(tr,Ar)|0,v=v+Math.imul(sr,Sr)|0,U=U+Math.imul(sr,Ar)|0,P=P+Math.imul(Zt,Wt)|0,v=v+Math.imul(Zt,rr)|0,v=v+Math.imul(er,Wt)|0,U=U+Math.imul(er,rr)|0,P=P+Math.imul(qt,yr)|0,v=v+Math.imul(qt,gr)|0,v=v+Math.imul(ir,yr)|0,U=U+Math.imul(ir,gr)|0,P=P+Math.imul(Ut,jr)|0,v=v+Math.imul(Ut,Tt)|0,v=v+Math.imul(ar,jr)|0,U=U+Math.imul(ar,Tt)|0,P=P+Math.imul(Qt,E)|0,v=v+Math.imul(Qt,A)|0,v=v+Math.imul(Bt,E)|0,U=U+Math.imul(Bt,A)|0,P=P+Math.imul(it,y)|0,v=v+Math.imul(it,R)|0,v=v+Math.imul(Ge,y)|0,U=U+Math.imul(Ge,R)|0,P=P+Math.imul(de,Y)|0,v=v+Math.imul(de,oe)|0,v=v+Math.imul(Ee,Y)|0,U=U+Math.imul(Ee,oe)|0;var nt=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(nt>>>26)|0,nt&=67108863,P=Math.imul(Z,et),v=Math.imul(Z,Qe),v=v+Math.imul(ie,et)|0,U=Math.imul(ie,Qe),P=P+Math.imul(w,qe)|0,v=v+Math.imul(w,ur)|0,v=v+Math.imul(F,qe)|0,U=U+Math.imul(F,ur)|0,P=P+Math.imul(or,Sr)|0,v=v+Math.imul(or,Ar)|0,v=v+Math.imul(k,Sr)|0,U=U+Math.imul(k,Ar)|0,P=P+Math.imul(tr,Wt)|0,v=v+Math.imul(tr,rr)|0,v=v+Math.imul(sr,Wt)|0,U=U+Math.imul(sr,rr)|0,P=P+Math.imul(Zt,yr)|0,v=v+Math.imul(Zt,gr)|0,v=v+Math.imul(er,yr)|0,U=U+Math.imul(er,gr)|0,P=P+Math.imul(qt,jr)|0,v=v+Math.imul(qt,Tt)|0,v=v+Math.imul(ir,jr)|0,U=U+Math.imul(ir,Tt)|0,P=P+Math.imul(Ut,E)|0,v=v+Math.imul(Ut,A)|0,v=v+Math.imul(ar,E)|0,U=U+Math.imul(ar,A)|0,P=P+Math.imul(Qt,y)|0,v=v+Math.imul(Qt,R)|0,v=v+Math.imul(Bt,y)|0,U=U+Math.imul(Bt,R)|0,P=P+Math.imul(it,Y)|0,v=v+Math.imul(it,oe)|0,v=v+Math.imul(Ge,Y)|0,U=U+Math.imul(Ge,oe)|0,P=P+Math.imul(de,Pe)|0,v=v+Math.imul(de,xe)|0,v=v+Math.imul(Ee,Pe)|0,U=U+Math.imul(Ee,xe)|0;var Ne=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,P=Math.imul(Z,qe),v=Math.imul(Z,ur),v=v+Math.imul(ie,qe)|0,U=Math.imul(ie,ur),P=P+Math.imul(w,Sr)|0,v=v+Math.imul(w,Ar)|0,v=v+Math.imul(F,Sr)|0,U=U+Math.imul(F,Ar)|0,P=P+Math.imul(or,Wt)|0,v=v+Math.imul(or,rr)|0,v=v+Math.imul(k,Wt)|0,U=U+Math.imul(k,rr)|0,P=P+Math.imul(tr,yr)|0,v=v+Math.imul(tr,gr)|0,v=v+Math.imul(sr,yr)|0,U=U+Math.imul(sr,gr)|0,P=P+Math.imul(Zt,jr)|0,v=v+Math.imul(Zt,Tt)|0,v=v+Math.imul(er,jr)|0,U=U+Math.imul(er,Tt)|0,P=P+Math.imul(qt,E)|0,v=v+Math.imul(qt,A)|0,v=v+Math.imul(ir,E)|0,U=U+Math.imul(ir,A)|0,P=P+Math.imul(Ut,y)|0,v=v+Math.imul(Ut,R)|0,v=v+Math.imul(ar,y)|0,U=U+Math.imul(ar,R)|0,P=P+Math.imul(Qt,Y)|0,v=v+Math.imul(Qt,oe)|0,v=v+Math.imul(Bt,Y)|0,U=U+Math.imul(Bt,oe)|0,P=P+Math.imul(it,Pe)|0,v=v+Math.imul(it,xe)|0,v=v+Math.imul(Ge,Pe)|0,U=U+Math.imul(Ge,xe)|0;var ze=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(ze>>>26)|0,ze&=67108863,P=Math.imul(Z,Sr),v=Math.imul(Z,Ar),v=v+Math.imul(ie,Sr)|0,U=Math.imul(ie,Ar),P=P+Math.imul(w,Wt)|0,v=v+Math.imul(w,rr)|0,v=v+Math.imul(F,Wt)|0,U=U+Math.imul(F,rr)|0,P=P+Math.imul(or,yr)|0,v=v+Math.imul(or,gr)|0,v=v+Math.imul(k,yr)|0,U=U+Math.imul(k,gr)|0,P=P+Math.imul(tr,jr)|0,v=v+Math.imul(tr,Tt)|0,v=v+Math.imul(sr,jr)|0,U=U+Math.imul(sr,Tt)|0,P=P+Math.imul(Zt,E)|0,v=v+Math.imul(Zt,A)|0,v=v+Math.imul(er,E)|0,U=U+Math.imul(er,A)|0,P=P+Math.imul(qt,y)|0,v=v+Math.imul(qt,R)|0,v=v+Math.imul(ir,y)|0,U=U+Math.imul(ir,R)|0,P=P+Math.imul(Ut,Y)|0,v=v+Math.imul(Ut,oe)|0,v=v+Math.imul(ar,Y)|0,U=U+Math.imul(ar,oe)|0,P=P+Math.imul(Qt,Pe)|0,v=v+Math.imul(Qt,xe)|0,v=v+Math.imul(Bt,Pe)|0,U=U+Math.imul(Bt,xe)|0;var Ae=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,P=Math.imul(Z,Wt),v=Math.imul(Z,rr),v=v+Math.imul(ie,Wt)|0,U=Math.imul(ie,rr),P=P+Math.imul(w,yr)|0,v=v+Math.imul(w,gr)|0,v=v+Math.imul(F,yr)|0,U=U+Math.imul(F,gr)|0,P=P+Math.imul(or,jr)|0,v=v+Math.imul(or,Tt)|0,v=v+Math.imul(k,jr)|0,U=U+Math.imul(k,Tt)|0,P=P+Math.imul(tr,E)|0,v=v+Math.imul(tr,A)|0,v=v+Math.imul(sr,E)|0,U=U+Math.imul(sr,A)|0,P=P+Math.imul(Zt,y)|0,v=v+Math.imul(Zt,R)|0,v=v+Math.imul(er,y)|0,U=U+Math.imul(er,R)|0,P=P+Math.imul(qt,Y)|0,v=v+Math.imul(qt,oe)|0,v=v+Math.imul(ir,Y)|0,U=U+Math.imul(ir,oe)|0,P=P+Math.imul(Ut,Pe)|0,v=v+Math.imul(Ut,xe)|0,v=v+Math.imul(ar,Pe)|0,U=U+Math.imul(ar,xe)|0;var Re=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(Re>>>26)|0,Re&=67108863,P=Math.imul(Z,yr),v=Math.imul(Z,gr),v=v+Math.imul(ie,yr)|0,U=Math.imul(ie,gr),P=P+Math.imul(w,jr)|0,v=v+Math.imul(w,Tt)|0,v=v+Math.imul(F,jr)|0,U=U+Math.imul(F,Tt)|0,P=P+Math.imul(or,E)|0,v=v+Math.imul(or,A)|0,v=v+Math.imul(k,E)|0,U=U+Math.imul(k,A)|0,P=P+Math.imul(tr,y)|0,v=v+Math.imul(tr,R)|0,v=v+Math.imul(sr,y)|0,U=U+Math.imul(sr,R)|0,P=P+Math.imul(Zt,Y)|0,v=v+Math.imul(Zt,oe)|0,v=v+Math.imul(er,Y)|0,U=U+Math.imul(er,oe)|0,P=P+Math.imul(qt,Pe)|0,v=v+Math.imul(qt,xe)|0,v=v+Math.imul(ir,Pe)|0,U=U+Math.imul(ir,xe)|0;var De=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(De>>>26)|0,De&=67108863,P=Math.imul(Z,jr),v=Math.imul(Z,Tt),v=v+Math.imul(ie,jr)|0,U=Math.imul(ie,Tt),P=P+Math.imul(w,E)|0,v=v+Math.imul(w,A)|0,v=v+Math.imul(F,E)|0,U=U+Math.imul(F,A)|0,P=P+Math.imul(or,y)|0,v=v+Math.imul(or,R)|0,v=v+Math.imul(k,y)|0,U=U+Math.imul(k,R)|0,P=P+Math.imul(tr,Y)|0,v=v+Math.imul(tr,oe)|0,v=v+Math.imul(sr,Y)|0,U=U+Math.imul(sr,oe)|0,P=P+Math.imul(Zt,Pe)|0,v=v+Math.imul(Zt,xe)|0,v=v+Math.imul(er,Pe)|0,U=U+Math.imul(er,xe)|0;var ke=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(ke>>>26)|0,ke&=67108863,P=Math.imul(Z,E),v=Math.imul(Z,A),v=v+Math.imul(ie,E)|0,U=Math.imul(ie,A),P=P+Math.imul(w,y)|0,v=v+Math.imul(w,R)|0,v=v+Math.imul(F,y)|0,U=U+Math.imul(F,R)|0,P=P+Math.imul(or,Y)|0,v=v+Math.imul(or,oe)|0,v=v+Math.imul(k,Y)|0,U=U+Math.imul(k,oe)|0,P=P+Math.imul(tr,Pe)|0,v=v+Math.imul(tr,xe)|0,v=v+Math.imul(sr,Pe)|0,U=U+Math.imul(sr,xe)|0;var te=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(te>>>26)|0,te&=67108863,P=Math.imul(Z,y),v=Math.imul(Z,R),v=v+Math.imul(ie,y)|0,U=Math.imul(ie,R),P=P+Math.imul(w,Y)|0,v=v+Math.imul(w,oe)|0,v=v+Math.imul(F,Y)|0,U=U+Math.imul(F,oe)|0,P=P+Math.imul(or,Pe)|0,v=v+Math.imul(or,xe)|0,v=v+Math.imul(k,Pe)|0,U=U+Math.imul(k,xe)|0;var re=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(re>>>26)|0,re&=67108863,P=Math.imul(Z,Y),v=Math.imul(Z,oe),v=v+Math.imul(ie,Y)|0,U=Math.imul(ie,oe),P=P+Math.imul(w,Pe)|0,v=v+Math.imul(w,xe)|0,v=v+Math.imul(F,Pe)|0,U=U+Math.imul(F,xe)|0;var ve=(B+P|0)+((v&8191)<<13)|0;B=(U+(v>>>13)|0)+(ve>>>26)|0,ve&=67108863,P=Math.imul(Z,Pe),v=Math.imul(Z,xe),v=v+Math.imul(ie,Pe)|0,U=Math.imul(ie,xe);var he=(B+P|0)+((v&8191)<<13)|0;return B=(U+(v>>>13)|0)+(he>>>26)|0,he&=67108863,j[0]=St,j[1]=$e,j[2]=Ze,j[3]=tt,j[4]=ht,j[5]=ut,j[6]=rt,j[7]=st,j[8]=nt,j[9]=Ne,j[10]=ze,j[11]=Ae,j[12]=Re,j[13]=De,j[14]=ke,j[15]=te,j[16]=re,j[17]=ve,j[18]=he,B!==0&&(j[19]=B,$.length++),$};Math.imul||(S=_);function O(W,p,T){T.negative=p.negative^W.negative,T.length=W.length+p.length;for(var $=0,L=0,N=0;N>>26)|0,L+=j>>>26,j&=67108863}T.words[N]=B,$=j,j=L}return $!==0?T.words[N]=$:T.length--,T._strip()}function D(W,p,T){return O(W,p,T)}s.prototype.mulTo=function(p,T){var $,L=this.length+p.length;return this.length===10&&p.length===10?$=S(this,p,T):L<63?$=_(this,p,T):L<1024?$=O(this,p,T):$=D(this,p,T),$},s.prototype.mul=function(p){var T=new s(null);return T.words=new Array(this.length+p.length),this.mulTo(p,T)},s.prototype.mulf=function(p){var T=new s(null);return T.words=new Array(this.length+p.length),D(this,p,T)},s.prototype.imul=function(p){return this.clone().mulTo(p,this)},s.prototype.imuln=function(p){var T=p<0;T&&(p=-p),n(typeof p=="number"),n(p<67108864);for(var $=0,L=0;L>=26,$+=N/67108864|0,$+=j>>>26,this.words[L]=j&67108863}return $!==0&&(this.words[L]=$,this.length++),T?this.ineg():this},s.prototype.muln=function(p){return this.clone().imuln(p)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(p){var T=x(p);if(T.length===0)return new s(1);for(var $=this,L=0;L=0);var T=p%26,$=(p-T)/26,L=67108863>>>26-T<<26-T,N;if(T!==0){var j=0;for(N=0;N>>26-T}j&&(this.words[N]=j,this.length++)}if($!==0){for(N=this.length-1;N>=0;N--)this.words[N+$]=this.words[N];for(N=0;N<$;N++)this.words[N]=0;this.length+=$}return this._strip()},s.prototype.ishln=function(p){return n(this.negative===0),this.iushln(p)},s.prototype.iushrn=function(p,T,$){n(typeof p=="number"&&p>=0);var L;T?L=(T-T%26)/26:L=0;var N=p%26,j=Math.min((p-N)/26,this.length),B=67108863^67108863>>>N<j)for(this.length-=j,v=0;v=0&&(U!==0||v>=L);v--){var ue=this.words[v]|0;this.words[v]=U<<26-N|ue>>>N,U=ue&B}return P&&U!==0&&(P.words[P.length++]=U),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(p,T,$){return n(this.negative===0),this.iushrn(p,T,$)},s.prototype.shln=function(p){return this.clone().ishln(p)},s.prototype.ushln=function(p){return this.clone().iushln(p)},s.prototype.shrn=function(p){return this.clone().ishrn(p)},s.prototype.ushrn=function(p){return this.clone().iushrn(p)},s.prototype.testn=function(p){n(typeof p=="number"&&p>=0);var T=p%26,$=(p-T)/26,L=1<=0);var T=p%26,$=(p-T)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=$)return this;if(T!==0&&$++,this.length=Math.min($,this.length),T!==0){var L=67108863^67108863>>>T<=67108864;T++)this.words[T]-=67108864,T===this.length-1?this.words[T+1]=1:this.words[T+1]++;return this.length=Math.max(this.length,T+1),this},s.prototype.isubn=function(p){if(n(typeof p=="number"),n(p<67108864),p<0)return this.iaddn(-p);if(this.negative!==0)return this.negative=0,this.iaddn(p),this.negative=1,this;if(this.words[0]-=p,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var T=0;T>26)-(P/67108864|0),this.words[N+$]=j&67108863}for(;N>26,this.words[N+$]=j&67108863;if(B===0)return this._strip();for(n(B===-1),B=0,N=0;N>26,this.words[N]=j&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(p,T){var $=this.length-p.length,L=this.clone(),N=p,j=N.words[N.length-1]|0,B=this._countBits(j);$=26-B,$!==0&&(N=N.ushln($),L.iushln($),j=N.words[N.length-1]|0);var P=L.length-N.length,v;if(T!=="mod"){v=new s(null),v.length=P+1,v.words=new Array(v.length);for(var U=0;U=0;de--){var Ee=(L.words[N.length+de]|0)*67108864+(L.words[N.length+de-1]|0);for(Ee=Math.min(Ee/j|0,67108863),L._ishlnsubmul(N,Ee,de);L.negative!==0;)Ee--,L.negative=0,L._ishlnsubmul(N,1,de),L.isZero()||(L.negative^=1);v&&(v.words[de]=Ee)}return v&&v._strip(),L._strip(),T!=="div"&&$!==0&&L.iushrn($),{div:v||null,mod:L}},s.prototype.divmod=function(p,T,$){if(n(!p.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var L,N,j;return this.negative!==0&&p.negative===0?(j=this.neg().divmod(p,T),T!=="mod"&&(L=j.div.neg()),T!=="div"&&(N=j.mod.neg(),$&&N.negative!==0&&N.iadd(p)),{div:L,mod:N}):this.negative===0&&p.negative!==0?(j=this.divmod(p.neg(),T),T!=="mod"&&(L=j.div.neg()),{div:L,mod:j.mod}):this.negative&p.negative?(j=this.neg().divmod(p.neg(),T),T!=="div"&&(N=j.mod.neg(),$&&N.negative!==0&&N.isub(p)),{div:j.div,mod:N}):p.length>this.length||this.cmp(p)<0?{div:new s(0),mod:this}:p.length===1?T==="div"?{div:this.divn(p.words[0]),mod:null}:T==="mod"?{div:null,mod:new s(this.modrn(p.words[0]))}:{div:this.divn(p.words[0]),mod:new s(this.modrn(p.words[0]))}:this._wordDiv(p,T)},s.prototype.div=function(p){return this.divmod(p,"div",!1).div},s.prototype.mod=function(p){return this.divmod(p,"mod",!1).mod},s.prototype.umod=function(p){return this.divmod(p,"mod",!0).mod},s.prototype.divRound=function(p){var T=this.divmod(p);if(T.mod.isZero())return T.div;var $=T.div.negative!==0?T.mod.isub(p):T.mod,L=p.ushrn(1),N=p.andln(1),j=$.cmp(L);return j<0||N===1&&j===0?T.div:T.div.negative!==0?T.div.isubn(1):T.div.iaddn(1)},s.prototype.modrn=function(p){var T=p<0;T&&(p=-p),n(p<=67108863);for(var $=(1<<26)%p,L=0,N=this.length-1;N>=0;N--)L=($*L+(this.words[N]|0))%p;return T?-L:L},s.prototype.modn=function(p){return this.modrn(p)},s.prototype.idivn=function(p){var T=p<0;T&&(p=-p),n(p<=67108863);for(var $=0,L=this.length-1;L>=0;L--){var N=(this.words[L]|0)+$*67108864;this.words[L]=N/p|0,$=N%p}return this._strip(),T?this.ineg():this},s.prototype.divn=function(p){return this.clone().idivn(p)},s.prototype.egcd=function(p){n(p.negative===0),n(!p.isZero());var T=this,$=p.clone();T.negative!==0?T=T.umod(p):T=T.clone();for(var L=new s(1),N=new s(0),j=new s(0),B=new s(1),P=0;T.isEven()&&$.isEven();)T.iushrn(1),$.iushrn(1),++P;for(var v=$.clone(),U=T.clone();!T.isZero();){for(var ue=0,de=1;!(T.words[0]&de)&&ue<26;++ue,de<<=1);if(ue>0)for(T.iushrn(ue);ue-- >0;)(L.isOdd()||N.isOdd())&&(L.iadd(v),N.isub(U)),L.iushrn(1),N.iushrn(1);for(var Ee=0,Xe=1;!($.words[0]&Xe)&&Ee<26;++Ee,Xe<<=1);if(Ee>0)for($.iushrn(Ee);Ee-- >0;)(j.isOdd()||B.isOdd())&&(j.iadd(v),B.isub(U)),j.iushrn(1),B.iushrn(1);T.cmp($)>=0?(T.isub($),L.isub(j),N.isub(B)):($.isub(T),j.isub(L),B.isub(N))}return{a:j,b:B,gcd:$.iushln(P)}},s.prototype._invmp=function(p){n(p.negative===0),n(!p.isZero());var T=this,$=p.clone();T.negative!==0?T=T.umod(p):T=T.clone();for(var L=new s(1),N=new s(0),j=$.clone();T.cmpn(1)>0&&$.cmpn(1)>0;){for(var B=0,P=1;!(T.words[0]&P)&&B<26;++B,P<<=1);if(B>0)for(T.iushrn(B);B-- >0;)L.isOdd()&&L.iadd(j),L.iushrn(1);for(var v=0,U=1;!($.words[0]&U)&&v<26;++v,U<<=1);if(v>0)for($.iushrn(v);v-- >0;)N.isOdd()&&N.iadd(j),N.iushrn(1);T.cmp($)>=0?(T.isub($),L.isub(N)):($.isub(T),N.isub(L))}var ue;return T.cmpn(1)===0?ue=L:ue=N,ue.cmpn(0)<0&&ue.iadd(p),ue},s.prototype.gcd=function(p){if(this.isZero())return p.abs();if(p.isZero())return this.abs();var T=this.clone(),$=p.clone();T.negative=0,$.negative=0;for(var L=0;T.isEven()&&$.isEven();L++)T.iushrn(1),$.iushrn(1);do{for(;T.isEven();)T.iushrn(1);for(;$.isEven();)$.iushrn(1);var N=T.cmp($);if(N<0){var j=T;T=$,$=j}else if(N===0||$.cmpn(1)===0)break;T.isub($)}while(!0);return $.iushln(L)},s.prototype.invm=function(p){return this.egcd(p).a.umod(p)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(p){return this.words[0]&p},s.prototype.bincn=function(p){n(typeof p=="number");var T=p%26,$=(p-T)/26,L=1<>>26,B&=67108863,this.words[j]=B}return N!==0&&(this.words[j]=N,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(p){var T=p<0;if(this.negative!==0&&!T)return-1;if(this.negative===0&&T)return 1;this._strip();var $;if(this.length>1)$=1;else{T&&(p=-p),n(p<=67108863,"Number is too big");var L=this.words[0]|0;$=L===p?0:Lp.length)return 1;if(this.length=0;$--){var L=this.words[$]|0,N=p.words[$]|0;if(L!==N){LN&&(T=1);break}}return T},s.prototype.gtn=function(p){return this.cmpn(p)===1},s.prototype.gt=function(p){return this.cmp(p)===1},s.prototype.gten=function(p){return this.cmpn(p)>=0},s.prototype.gte=function(p){return this.cmp(p)>=0},s.prototype.ltn=function(p){return this.cmpn(p)===-1},s.prototype.lt=function(p){return this.cmp(p)===-1},s.prototype.lten=function(p){return this.cmpn(p)<=0},s.prototype.lte=function(p){return this.cmp(p)<=0},s.prototype.eqn=function(p){return this.cmpn(p)===0},s.prototype.eq=function(p){return this.cmp(p)===0},s.red=function(p){return new Oe(p)},s.prototype.toRed=function(p){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),p.convertTo(this)._forceRed(p)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(p){return this.red=p,this},s.prototype.forceRed=function(p){return n(!this.red,"Already a number in reduction context"),this._forceRed(p)},s.prototype.redAdd=function(p){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,p)},s.prototype.redIAdd=function(p){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,p)},s.prototype.redSub=function(p){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,p)},s.prototype.redISub=function(p){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,p)},s.prototype.redShl=function(p){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,p)},s.prototype.redMul=function(p){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.mul(this,p)},s.prototype.redIMul=function(p){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,p),this.red.imul(this,p)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(p){return n(this.red&&!p.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,p)};var z={k256:null,p224:null,p192:null,p25519:null};function G(W,p){this.name=W,this.p=new s(p,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}G.prototype._tmp=function(){var p=new s(null);return p.words=new Array(Math.ceil(this.n/13)),p},G.prototype.ireduce=function(p){var T=p,$;do this.split(T,this.tmp),T=this.imulK(T),T=T.iadd(this.tmp),$=T.bitLength();while($>this.n);var L=$0?T.isub(this.p):T.strip!==void 0?T.strip():T._strip(),T},G.prototype.split=function(p,T){p.iushrn(this.n,0,T)},G.prototype.imulK=function(p){return p.imul(this.k)};function K(){G.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(K,G),K.prototype.split=function(p,T){for(var $=4194303,L=Math.min(p.length,9),N=0;N>>22,j=B}j>>>=22,p.words[N-10]=j,j===0&&p.length>10?p.length-=10:p.length-=9},K.prototype.imulK=function(p){p.words[p.length]=0,p.words[p.length+1]=0,p.length+=2;for(var T=0,$=0;$>>=26,p.words[$]=N,T=L}return T!==0&&(p.words[p.length++]=T),p},s._prime=function(p){if(z[p])return z[p];var T;if(p==="k256")T=new K;else if(p==="p224")T=new J;else if(p==="p192")T=new fe;else if(p==="p25519")T=new pe;else throw new Error("Unknown prime "+p);return z[p]=T,T};function Oe(W){if(typeof W=="string"){var p=s._prime(W);this.m=p.p,this.prime=p}else n(W.gtn(1),"modulus must be greater than 1"),this.m=W,this.prime=null}Oe.prototype._verify1=function(p){n(p.negative===0,"red works only with positives"),n(p.red,"red works only with red numbers")},Oe.prototype._verify2=function(p,T){n((p.negative|T.negative)===0,"red works only with positives"),n(p.red&&p.red===T.red,"red works only with red numbers")},Oe.prototype.imod=function(p){return this.prime?this.prime.ireduce(p)._forceRed(this):(l(p,p.umod(this.m)._forceRed(this)),p)},Oe.prototype.neg=function(p){return p.isZero()?p.clone():this.m.sub(p)._forceRed(this)},Oe.prototype.add=function(p,T){this._verify2(p,T);var $=p.add(T);return $.cmp(this.m)>=0&&$.isub(this.m),$._forceRed(this)},Oe.prototype.iadd=function(p,T){this._verify2(p,T);var $=p.iadd(T);return $.cmp(this.m)>=0&&$.isub(this.m),$},Oe.prototype.sub=function(p,T){this._verify2(p,T);var $=p.sub(T);return $.cmpn(0)<0&&$.iadd(this.m),$._forceRed(this)},Oe.prototype.isub=function(p,T){this._verify2(p,T);var $=p.isub(T);return $.cmpn(0)<0&&$.iadd(this.m),$},Oe.prototype.shl=function(p,T){return this._verify1(p),this.imod(p.ushln(T))},Oe.prototype.imul=function(p,T){return this._verify2(p,T),this.imod(p.imul(T))},Oe.prototype.mul=function(p,T){return this._verify2(p,T),this.imod(p.mul(T))},Oe.prototype.isqr=function(p){return this.imul(p,p.clone())},Oe.prototype.sqr=function(p){return this.mul(p,p)},Oe.prototype.sqrt=function(p){if(p.isZero())return p.clone();var T=this.m.andln(3);if(n(T%2===1),T===3){var $=this.m.add(new s(1)).iushrn(2);return this.pow(p,$)}for(var L=this.m.subn(1),N=0;!L.isZero()&&L.andln(1)===0;)N++,L.iushrn(1);n(!L.isZero());var j=new s(1).toRed(this),B=j.redNeg(),P=this.m.subn(1).iushrn(1),v=this.m.bitLength();for(v=new s(2*v*v).toRed(this);this.pow(v,P).cmp(B)!==0;)v.redIAdd(B);for(var U=this.pow(v,L),ue=this.pow(p,L.addn(1).iushrn(1)),de=this.pow(p,L),Ee=N;de.cmp(j)!==0;){for(var Xe=de,it=0;Xe.cmp(j)!==0;it++)Xe=Xe.redSqr();n(it=0;N--){for(var U=T.words[N],ue=v-1;ue>=0;ue--){var de=U>>ue&1;if(j!==L[0]&&(j=this.sqr(j)),de===0&&B===0){P=0;continue}B<<=1,B|=de,P++,!(P!==$&&(N!==0||ue!==0))&&(j=this.mul(j,L[B]),P=0,B=0)}v=26}return j},Oe.prototype.convertTo=function(p){var T=p.umod(this.m);return T===p?T.clone():T},Oe.prototype.convertFrom=function(p){var T=p.clone();return T.red=null,T},s.mont=function(p){return new Ue(p)};function Ue(W){Oe.call(this,W),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(Ue,Oe),Ue.prototype.convertTo=function(p){return this.imod(p.ushln(this.shift))},Ue.prototype.convertFrom=function(p){var T=this.imod(p.mul(this.rinv));return T.red=null,T},Ue.prototype.imul=function(p,T){if(p.isZero()||T.isZero())return p.words[0]=0,p.length=1,p;var $=p.imul(T),L=$.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),N=$.isub(L).iushrn(this.shift),j=N;return N.cmp(this.m)>=0?j=N.isub(this.m):N.cmpn(0)<0&&(j=N.iadd(this.m)),j._forceRed(this)},Ue.prototype.mul=function(p,T){if(p.isZero()||T.isZero())return new s(0)._forceRed(this);var $=p.mul(T),L=$.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),N=$.isub(L).iushrn(this.shift),j=N;return N.cmp(this.m)>=0?j=N.isub(this.m):N.cmpn(0)<0&&(j=N.iadd(this.m)),j._forceRed(this)},Ue.prototype.invm=function(p){var T=this.imod(p._invmp(this.m).mul(this.r2));return T._forceRed(this)}})(t,ft)})(fE);var Rde=fE.exports,Dde=ft&&ft.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Zs,"__esModule",{value:!0});Zs.parseAccumulatorUpdateData=Zs.sliceAccumulatorUpdateData=Zs.parsePriceFeedMessage=Zs.isAccumulatorUpdateData=void 0;const Vc=Dde(Rde),Bde="504e4155",Ude=1,Fde=0,Y1=20,Lde=0;function dE(t){return t.toString("hex").slice(0,8)===Bde&&t[4]===Ude&&t[5]===Fde}Zs.isAccumulatorUpdateData=dE;function zde(t){let e=0;if(t.readUInt8(e)!==Lde)throw new Error("Not a price feed message");e+=1;const n=t.subarray(e,e+32);e+=32;const i=new Vc.default(t.subarray(e,e+8),"be");e+=8;const s=new Vc.default(t.subarray(e,e+8),"be");e+=8;const o=t.readInt32BE(e);e+=4;const a=new Vc.default(t.subarray(e,e+8),"be");e+=8;const u=new Vc.default(t.subarray(e,e+8),"be");e+=8;const c=new Vc.default(t.subarray(e,e+8),"be");e+=8;const l=new Vc.default(t.subarray(e,e+8),"be");return e+=8,{feedId:n,price:i,confidence:s,exponent:o,publishTime:a,prevPublishTime:u,emaPrice:c,emaConf:l}}Zs.parsePriceFeedMessage=zde;function Vde(t,e,r){if(!dE(t))throw new Error("Invalid accumulator message");let n=6;const i=t.readUint8(n);n+=1+i,n+=1;const s=t.readUint16BE(n);n+=2,n+=s;const o=n,a=[],u=t.readUInt8(n);n+=1;for(let l=0;la))return u}getEmaPriceNoOlderThan(a){const u=this.getEmaPriceUnchecked(),c=Math.floor(Date.now()/1e3);if(!(Math.abs(c-u.publishTime)>a))return u}getMetadata(){return this.metadata}getVAA(){return this.vaa}};t.PriceFeed=s})(lE);var hE={exports:{}},Ti={},nD={exports:{}};(function(t){function e(r){return r&&r.__esModule?r:{default:r}}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports})(nD);var Hde=nD.exports,gb={exports:{}},vb={exports:{}},uT;function Wg(){return uT||(uT=1,function(t){function e(r){"@babel/helpers - typeof";return t.exports=e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports}(vb)),vb.exports}var cT;function Gde(){return cT||(cT=1,function(t){var e=Wg().default;function r(){t.exports=r=function(){return i},t.exports.__esModule=!0,t.exports.default=t.exports;var n,i={},s=Object.prototype,o=s.hasOwnProperty,a=Object.defineProperty||function(j,B,P){j[B]=P.value},u=typeof Symbol=="function"?Symbol:{},c=u.iterator||"@@iterator",l=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function d(j,B,P){return Object.defineProperty(j,B,{value:P,enumerable:!0,configurable:!0,writable:!0}),j[B]}try{d({},"")}catch{d=function(P,v,U){return P[v]=U}}function h(j,B,P,v){var U=B&&B.prototype instanceof D?B:D,ue=Object.create(U.prototype),de=new L(v||[]);return a(ue,"_invoke",{value:W(j,P,de)}),ue}function m(j,B,P){try{return{type:"normal",arg:j.call(B,P)}}catch(v){return{type:"throw",arg:v}}}i.wrap=h;var g="suspendedStart",x="suspendedYield",_="executing",S="completed",O={};function D(){}function z(){}function G(){}var K={};d(K,c,function(){return this});var J=Object.getPrototypeOf,fe=J&&J(J(N([])));fe&&fe!==s&&o.call(fe,c)&&(K=fe);var pe=G.prototype=D.prototype=Object.create(K);function Oe(j){["next","throw","return"].forEach(function(B){d(j,B,function(P){return this._invoke(B,P)})})}function Ue(j,B){function P(U,ue,de,Ee){var Xe=m(j[U],j,ue);if(Xe.type!=="throw"){var it=Xe.arg,Ge=it.value;return Ge&&e(Ge)=="object"&&o.call(Ge,"__await")?B.resolve(Ge.__await).then(function(mr){P("next",mr,de,Ee)},function(mr){P("throw",mr,de,Ee)}):B.resolve(Ge).then(function(mr){it.value=mr,de(it)},function(mr){return P("throw",mr,de,Ee)})}Ee(Xe.arg)}var v;a(this,"_invoke",{value:function(ue,de){function Ee(){return new B(function(Xe,it){P(ue,de,Xe,it)})}return v=v?v.then(Ee,Ee):Ee()}})}function W(j,B,P){var v=g;return function(U,ue){if(v===_)throw Error("Generator is already running");if(v===S){if(U==="throw")throw ue;return{value:n,done:!0}}for(P.method=U,P.arg=ue;;){var de=P.delegate;if(de){var Ee=p(de,P);if(Ee){if(Ee===O)continue;return Ee}}if(P.method==="next")P.sent=P._sent=P.arg;else if(P.method==="throw"){if(v===g)throw v=S,P.arg;P.dispatchException(P.arg)}else P.method==="return"&&P.abrupt("return",P.arg);v=_;var Xe=m(j,B,P);if(Xe.type==="normal"){if(v=P.done?S:x,Xe.arg===O)continue;return{value:Xe.arg,done:P.done}}Xe.type==="throw"&&(v=S,P.method="throw",P.arg=Xe.arg)}}}function p(j,B){var P=B.method,v=j.iterator[P];if(v===n)return B.delegate=null,P==="throw"&&j.iterator.return&&(B.method="return",B.arg=n,p(j,B),B.method==="throw")||P!=="return"&&(B.method="throw",B.arg=new TypeError("The iterator does not provide a '"+P+"' method")),O;var U=m(v,j.iterator,B.arg);if(U.type==="throw")return B.method="throw",B.arg=U.arg,B.delegate=null,O;var ue=U.arg;return ue?ue.done?(B[j.resultName]=ue.value,B.next=j.nextLoc,B.method!=="return"&&(B.method="next",B.arg=n),B.delegate=null,O):ue:(B.method="throw",B.arg=new TypeError("iterator result is not an object"),B.delegate=null,O)}function T(j){var B={tryLoc:j[0]};1 in j&&(B.catchLoc=j[1]),2 in j&&(B.finallyLoc=j[2],B.afterLoc=j[3]),this.tryEntries.push(B)}function $(j){var B=j.completion||{};B.type="normal",delete B.arg,j.completion=B}function L(j){this.tryEntries=[{tryLoc:"root"}],j.forEach(T,this),this.reset(!0)}function N(j){if(j||j===""){var B=j[c];if(B)return B.call(j);if(typeof j.next=="function")return j;if(!isNaN(j.length)){var P=-1,v=function U(){for(;++P=0;--U){var ue=this.tryEntries[U],de=ue.completion;if(ue.tryLoc==="root")return v("end");if(ue.tryLoc<=this.prev){var Ee=o.call(ue,"catchLoc"),Xe=o.call(ue,"finallyLoc");if(Ee&&Xe){if(this.prev=0;--v){var U=this.tryEntries[v];if(U.tryLoc<=this.prev&&o.call(U,"finallyLoc")&&this.prev=0;--P){var v=this.tryEntries[P];if(v.finallyLoc===B)return this.complete(v.completion,v.afterLoc),$(v),O}},catch:function(B){for(var P=this.tryEntries.length-1;P>=0;--P){var v=this.tryEntries[P];if(v.tryLoc===B){var U=v.completion;if(U.type==="throw"){var ue=U.arg;$(v)}return ue}}throw Error("illegal catch attempt")},delegateYield:function(B,P,v){return this.delegate={iterator:N(B),resultName:P,nextLoc:v},this.method==="next"&&(this.arg=n),O}},i}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports}(gb)),gb.exports}var bb,lT;function qde(){if(lT)return bb;lT=1;var t=Gde()();bb=t;try{regeneratorRuntime=t}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}return bb}var wb={exports:{}},fT;function Kde(){return fT||(fT=1,function(t){function e(n,i,s,o,a,u,c){try{var l=n[u](c),f=l.value}catch(d){return void s(d)}l.done?i(f):Promise.resolve(f).then(o,a)}function r(n){return function(){var i=this,s=arguments;return new Promise(function(o,a){var u=n.apply(i,s);function c(f){e(u,o,a,c,l,"next",f)}function l(f){e(u,o,a,c,l,"throw",f)}c(void 0)})}}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports}(wb)),wb.exports}var _b={exports:{}},xb={exports:{}},Sb={exports:{}},dT;function Xde(){return dT||(dT=1,function(t){var e=Wg().default;function r(n,i){if(e(n)!="object"||!n)return n;var s=n[Symbol.toPrimitive];if(s!==void 0){var o=s.call(n,i||"default");if(e(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(n)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports}(Sb)),Sb.exports}var hT;function Jde(){return hT||(hT=1,function(t){var e=Wg().default,r=Xde();function n(i){var s=r(i,"string");return e(s)=="symbol"?s:s+""}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports}(xb)),xb.exports}var pT;function Yde(){return pT||(pT=1,function(t){var e=Jde();function r(n,i,s){return(i=e(i))in n?Object.defineProperty(n,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[i]=s,n}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports}(_b)),_b.exports}var Eb,mT;function Qde(){if(mT)return Eb;mT=1;const t=new Set(["ENOTFOUND","ENETUNREACH","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","OUT_OF_MEM","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","PATH_LENGTH_EXCEEDED","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED","HOSTNAME_MISMATCH"]);return Eb=e=>!t.has(e&&e.code),Eb}var Ip=Hde;Object.defineProperty(Ti,"__esModule",{value:!0});Ti.isNetworkError=mE;Ti.isRetryableError=Hg;Ti.isSafeRequestError=oD;Ti.isIdempotentRequestError=yE;Ti.isNetworkOrIdempotentRequestError=gE;Ti.exponentialDelay=aD;Ti.default=Pc;Ti.DEFAULT_OPTIONS=Ti.namespace=void 0;var $y=Ip(qde()),Zde=Ip(Wg()),iD=Ip(Kde()),ehe=Ip(Yde()),the=Ip(Qde());function yT(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function Ob(t){for(var e=1;e=500&&t.response.status<=599)}function oD(t){return t.config?Hg(t)&&sD.indexOf(t.config.method)!==-1:!1}function yE(t){return t.config?Hg(t)&&rhe.indexOf(t.config.method)!==-1:!1}function gE(t){return mE(t)||yE(t)}function nhe(){return 0}function aD(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:100,r=Math.pow(2,t)*e,n=r*.2*Math.random();return r+n}var uD={retries:3,retryCondition:gE,retryDelay:nhe,shouldResetTimeout:!1,onRetry:function(){}};Ti.DEFAULT_OPTIONS=uD;function ihe(t,e){return Ob(Ob(Ob({},uD),e),t[pE])}function gT(t,e){var r=ihe(t,e);return r.retryCount=r.retryCount||0,t[pE]=r,r}function she(t,e){t.defaults.agent===e.agent&&delete e.agent,t.defaults.httpAgent===e.httpAgent&&delete e.httpAgent,t.defaults.httpsAgent===e.httpsAgent&&delete e.httpsAgent}function ohe(t,e){return Q1.apply(this,arguments)}function Q1(){return Q1=(0,iD.default)($y.default.mark(function t(e,r){var n,i,s,o;return $y.default.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:if(n=e.retries,i=e.retryCondition,s=e.retryCount{var i;(i=this.logger)==null||i.error(n)},this.wsUserClosed=!0,this.onMessage=()=>{},this.onReconnect=()=>{}}async send(e){var r,n,i;(r=this.logger)==null||r.info(`Sending ${e}`),await this.waitForMaybeReadyWebSocket(),this.wsClient===void 0?(n=this.logger)==null||n.error("Couldn't connect to the websocket server. Error callback is called."):(i=this.wsClient)==null||i.send(e)}async startWebSocket(){var e;this.wsClient===void 0&&((e=this.logger)==null||e.info("Creating Web Socket client"),this.wsClient=new lhe.default(this.endpoint),this.wsUserClosed=!1,this.wsClient.onopen=()=>{this.wsFailedAttempts=0,this.wsClient.on!==void 0&&this.heartbeat()},this.wsClient.onerror=r=>{this.onError(r.error)},this.wsClient.onmessage=r=>{this.onMessage(r.data)},this.wsClient.onclose=async()=>{var r,n;if(this.pingTimeout!==void 0&&clearInterval(this.pingTimeout),this.wsUserClosed===!1){this.wsFailedAttempts+=1,this.wsClient=void 0;const i=hhe(this.wsFailedAttempts);(r=this.logger)==null||r.error(`Connection closed unexpectedly or because of timeout. Reconnecting after ${i}ms.`),await vT(i),this.restartUnexpectedClosedWebsocket()}else(n=this.logger)==null||n.info("The connection has been closed successfully.")},this.wsClient.on!==void 0&&this.wsClient.on("ping",this.heartbeat.bind(this)))}heartbeat(){var e;(e=this.logger)==null||e.info("Heartbeat"),this.pingTimeout!==void 0&&clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var r,n;(r=this.logger)==null||r.warn("Connection timed out. Reconnecting..."),(n=this.wsClient)==null||n.terminate(),this.restartUnexpectedClosedWebsocket()},fhe)}async waitForMaybeReadyWebSocket(){let e=0;for(;this.wsClient!==void 0&&this.wsClient.readyState!==this.wsClient.OPEN;)if(e>5e3){this.wsClient.close();return}else e+=10,await vT(10)}async restartUnexpectedClosedWebsocket(){var e;if(this.wsUserClosed!==!0){if(await this.startWebSocket(),await this.waitForMaybeReadyWebSocket(),this.wsClient===void 0){(e=this.logger)==null||e.error("Couldn't reconnect to websocket. Error callback is called.");return}this.onReconnect()}}closeWebSocket(){if(this.wsClient!==void 0){const e=this.wsClient;this.wsClient=void 0,e.close()}this.wsUserClosed=!0}}Gg.ResilientWebSocket=dhe;async function vT(t){return new Promise(e=>setTimeout(e,t))}function hhe(t){return 2**t*100}var xf={};Object.defineProperty(xf,"__esModule",{value:!0});xf.removeLeading0xIfExists=xf.makeWebsocketUrl=void 0;function phe(t){const e=new URL("ws",t),r=e.protocol==="https:";return e.protocol=r?"wss:":"ws:",e.toString()}xf.makeWebsocketUrl=phe;function mhe(t){return t.startsWith("0x")?t.substring(2):t}xf.removeLeading0xIfExists=mhe;var lD=ft&&ft.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(zg,"__esModule",{value:!0});zg.PriceServiceConnection=void 0;const Cb=lE,yhe=lD(gS),bT=lD(ahe),ghe=Gg,Tb=xf;class vhe{constructor(e,r){Fe(this,"httpClient");Fe(this,"priceFeedCallbacks");Fe(this,"wsClient");Fe(this,"wsEndpoint");Fe(this,"logger");Fe(this,"priceFeedRequestConfig");Fe(this,"onWsError");var n,i,s;this.httpClient=yhe.default.create({baseURL:e,timeout:(r==null?void 0:r.timeout)||5e3}),(0,bT.default)(this.httpClient,{retries:(r==null?void 0:r.httpRetries)||3,retryDelay:bT.default.exponentialDelay}),this.priceFeedRequestConfig={binary:(n=r==null?void 0:r.priceFeedRequestConfig)==null?void 0:n.binary,verbose:((i=r==null?void 0:r.priceFeedRequestConfig)==null?void 0:i.verbose)??(r==null?void 0:r.verbose),allowOutOfOrder:(s=r==null?void 0:r.priceFeedRequestConfig)==null?void 0:s.allowOutOfOrder},this.priceFeedCallbacks=new Map,this.logger=(r==null?void 0:r.logger)||{trace:()=>{},debug:()=>{},info:()=>{},warn:console.warn,error:console.error},this.onWsError=o=>{this.logger.error(o),typeof process<"u"&&typeof process.exit=="function"?(this.logger.error("Halting the process due to the websocket error"),process.exit(1)):this.logger.error("Cannot halt process. Please handle the websocket error.")},this.wsEndpoint=(0,Tb.makeWebsocketUrl)(e)}async getLatestPriceFeeds(e){return e.length===0?[]:(await this.httpClient.get("/api/latest_price_feeds",{params:{ids:e,verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary}})).data.map(i=>Cb.PriceFeed.fromJson(i))}async getLatestVaas(e){return(await this.httpClient.get("/api/latest_vaas",{params:{ids:e}})).data}async getVaa(e,r){const n=await this.httpClient.get("/api/get_vaa",{params:{id:e,publish_time:r}});return[n.data.vaa,n.data.publishTime]}async getPriceFeed(e,r){const n=await this.httpClient.get("/api/get_price_feed",{params:{id:e,publish_time:r,verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary}});return Cb.PriceFeed.fromJson(n.data)}async getPriceFeedIds(){return(await this.httpClient.get("/api/price_feed_ids")).data}async subscribePriceFeedUpdates(e,r){var s;this.wsClient===void 0&&await this.startWebSocket(),e=e.map(o=>(0,Tb.removeLeading0xIfExists)(o));const n=[];for(const o of e)this.priceFeedCallbacks.has(o)||(this.priceFeedCallbacks.set(o,new Set),n.push(o)),this.priceFeedCallbacks.get(o).add(r);const i={ids:n,type:"subscribe",verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary,allow_out_of_order:this.priceFeedRequestConfig.allowOutOfOrder};await((s=this.wsClient)==null?void 0:s.send(JSON.stringify(i)))}async unsubscribePriceFeedUpdates(e,r){var s;this.wsClient===void 0&&await this.startWebSocket(),e=e.map(o=>(0,Tb.removeLeading0xIfExists)(o));const n=[];for(const o of e)if(this.priceFeedCallbacks.has(o)){let a=!1;r===void 0?(this.priceFeedCallbacks.delete(o),a=!0):(this.priceFeedCallbacks.get(o).delete(r),this.priceFeedCallbacks.get(o).size===0&&(this.priceFeedCallbacks.delete(o),a=!0)),a&&n.push(o)}const i={ids:n,type:"unsubscribe"};await((s=this.wsClient)==null?void 0:s.send(JSON.stringify(i))),this.priceFeedCallbacks.size===0&&this.closeWebSocket()}async startWebSocket(){if(this.wsEndpoint===void 0)throw new Error("Websocket endpoint is undefined.");this.wsClient=new ghe.ResilientWebSocket(this.wsEndpoint,this.logger),this.wsClient.onError=this.onWsError,this.wsClient.onReconnect=()=>{var e;if(this.priceFeedCallbacks.size>0){const r={ids:Array.from(this.priceFeedCallbacks.keys()),type:"subscribe",verbose:this.priceFeedRequestConfig.verbose,binary:this.priceFeedRequestConfig.binary,allow_out_of_order:this.priceFeedRequestConfig.allowOutOfOrder};this.logger.info("Resubscribing to existing price feeds."),(e=this.wsClient)==null||e.send(JSON.stringify(r))}},this.wsClient.onMessage=e=>{this.logger.info(`Received message ${e.toString()}`);let r;try{r=JSON.parse(e.toString())}catch(n){this.logger.error(`Error parsing message ${e.toString()} as JSON.`),this.logger.error(n),this.onWsError(n);return}if(r.type==="response")r.status==="error"&&(this.logger.error(`Error response from the websocket server ${r.error}.`),this.onWsError(new Error(r.error)));else if(r.type==="price_update"){let n;try{n=Cb.PriceFeed.fromJson(r.price_feed)}catch(i){this.logger.error(`Error parsing price feeds from message ${e.toString()}.`),this.logger.error(i),this.onWsError(i);return}if(this.priceFeedCallbacks.has(n.id))for(const i of this.priceFeedCallbacks.get(n.id))i(n)}else this.logger.warn(`Ignoring unsupported server response ${e.toString()}.`)},await this.wsClient.startWebSocket()}closeWebSocket(){var e;(e=this.wsClient)==null||e.closeWebSocket(),this.wsClient=void 0,this.priceFeedCallbacks.clear()}}zg.PriceServiceConnection=vhe;(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.parseAccumulatorUpdateData=t.isAccumulatorUpdateData=t.Price=t.PriceFeed=t.PriceFeedMetadata=t.PriceServiceConnection=void 0;var e=zg;Object.defineProperty(t,"PriceServiceConnection",{enumerable:!0,get:function(){return e.PriceServiceConnection}});var r=lE;Object.defineProperty(t,"PriceFeedMetadata",{enumerable:!0,get:function(){return r.PriceFeedMetadata}}),Object.defineProperty(t,"PriceFeed",{enumerable:!0,get:function(){return r.PriceFeed}}),Object.defineProperty(t,"Price",{enumerable:!0,get:function(){return r.Price}}),Object.defineProperty(t,"isAccumulatorUpdateData",{enumerable:!0,get:function(){return r.isAccumulatorUpdateData}}),Object.defineProperty(t,"parseAccumulatorUpdateData",{enumerable:!0,get:function(){return r.parseAccumulatorUpdateData}})})(cE);var vE={},qg={};qg.byteLength=_he;qg.toByteArray=She;qg.fromByteArray=Che;var Qs=[],ji=[],bhe=typeof Uint8Array<"u"?Uint8Array:Array,Pb="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Wc=0,whe=Pb.length;Wc0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function _he(t){var e=fD(t),r=e[0],n=e[1];return(r+n)*3/4-n}function xhe(t,e,r){return(e+r)*3/4-r}function She(t){var e,r=fD(t),n=r[0],i=r[1],s=new bhe(xhe(t,n,i)),o=0,a=i>0?n-4:n,u;for(u=0;u>16&255,s[o++]=e>>8&255,s[o++]=e&255;return i===2&&(e=ji[t.charCodeAt(u)]<<2|ji[t.charCodeAt(u+1)]>>4,s[o++]=e&255),i===1&&(e=ji[t.charCodeAt(u)]<<10|ji[t.charCodeAt(u+1)]<<4|ji[t.charCodeAt(u+2)]>>2,s[o++]=e>>8&255,s[o++]=e&255),s}function Ehe(t){return Qs[t>>18&63]+Qs[t>>12&63]+Qs[t>>6&63]+Qs[t&63]}function Ohe(t,e,r){for(var n,i=[],s=e;sa?a:o+s));return n===1?(e=t[r-1],i.push(Qs[e>>2]+Qs[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(Qs[e>>10]+Qs[e>>4&63]+Qs[e<<2&63]+"=")),i.join("")}var bE={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */bE.read=function(t,e,r,n,i){var s,o,a=i*8-n-1,u=(1<>1,l=-7,f=r?i-1:0,d=r?-1:1,h=t[e+f];for(f+=d,s=h&(1<<-l)-1,h>>=-l,l+=a;l>0;s=s*256+t[e+f],f+=d,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=n;l>0;o=o*256+t[e+f],f+=d,l-=8);if(s===0)s=1-c;else{if(s===u)return o?NaN:(h?-1:1)*(1/0);o=o+Math.pow(2,n),s=s-c}return(h?-1:1)*o*Math.pow(2,s-n)};bE.write=function(t,e,r,n,i,s){var o,a,u,c=s*8-i-1,l=(1<>1,d=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:s-1,m=n?1:-1,g=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=l):(o=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-o))<1&&(o--,u*=2),o+f>=1?e+=d/u:e+=d*Math.pow(2,1-f),e*u>=2&&(o++,u/=2),o+f>=l?(a=0,o=l):o+f>=1?(a=(e*u-1)*Math.pow(2,i),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+h]=a&255,h+=m,a/=256,i-=8);for(o=o<0;t[r+h]=o&255,h+=m,o/=256,c-=8);t[r+h-m]|=g*128};/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */(function(t){const e=qg,r=bE,n=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=a,t.SlowBuffer=S,t.INSPECT_MAX_BYTES=50;const i=2147483647;t.kMaxLength=i,a.TYPED_ARRAY_SUPPORT=s(),!a.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function s(){try{const k=new Uint8Array(1),b={foo:function(){return 42}};return Object.setPrototypeOf(b,Uint8Array.prototype),Object.setPrototypeOf(k,b),k.foo()===42}catch{return!1}}Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}});function o(k){if(k>i)throw new RangeError('The value "'+k+'" is invalid for option "size"');const b=new Uint8Array(k);return Object.setPrototypeOf(b,a.prototype),b}function a(k,b,w){if(typeof k=="number"){if(typeof b=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return f(k)}return u(k,b,w)}a.poolSize=8192;function u(k,b,w){if(typeof k=="string")return d(k,b);if(ArrayBuffer.isView(k))return m(k);if(k==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof k);if(wn(k,ArrayBuffer)||k&&wn(k.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(wn(k,SharedArrayBuffer)||k&&wn(k.buffer,SharedArrayBuffer)))return g(k,b,w);if(typeof k=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const F=k.valueOf&&k.valueOf();if(F!=null&&F!==k)return a.from(F,b,w);const X=x(k);if(X)return X;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof k[Symbol.toPrimitive]=="function")return a.from(k[Symbol.toPrimitive]("string"),b,w);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof k)}a.from=function(k,b,w){return u(k,b,w)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array);function c(k){if(typeof k!="number")throw new TypeError('"size" argument must be of type number');if(k<0)throw new RangeError('The value "'+k+'" is invalid for option "size"')}function l(k,b,w){return c(k),k<=0?o(k):b!==void 0?typeof w=="string"?o(k).fill(b,w):o(k).fill(b):o(k)}a.alloc=function(k,b,w){return l(k,b,w)};function f(k){return c(k),o(k<0?0:_(k)|0)}a.allocUnsafe=function(k){return f(k)},a.allocUnsafeSlow=function(k){return f(k)};function d(k,b){if((typeof b!="string"||b==="")&&(b="utf8"),!a.isEncoding(b))throw new TypeError("Unknown encoding: "+b);const w=O(k,b)|0;let F=o(w);const X=F.write(k,b);return X!==w&&(F=F.slice(0,X)),F}function h(k){const b=k.length<0?0:_(k.length)|0,w=o(b);for(let F=0;F=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return k|0}function S(k){return+k!=k&&(k=0),a.alloc(+k)}a.isBuffer=function(b){return b!=null&&b._isBuffer===!0&&b!==a.prototype},a.compare=function(b,w){if(wn(b,Uint8Array)&&(b=a.from(b,b.offset,b.byteLength)),wn(w,Uint8Array)&&(w=a.from(w,w.offset,w.byteLength)),!a.isBuffer(b)||!a.isBuffer(w))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(b===w)return 0;let F=b.length,X=w.length;for(let Z=0,ie=Math.min(F,X);ZX.length?(a.isBuffer(ie)||(ie=a.from(ie)),ie.copy(X,Z)):Uint8Array.prototype.set.call(X,ie,Z);else if(a.isBuffer(ie))ie.copy(X,Z);else throw new TypeError('"list" argument must be an Array of Buffers');Z+=ie.length}return X};function O(k,b){if(a.isBuffer(k))return k.length;if(ArrayBuffer.isView(k)||wn(k,ArrayBuffer))return k.byteLength;if(typeof k!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof k);const w=k.length,F=arguments.length>2&&arguments[2]===!0;if(!F&&w===0)return 0;let X=!1;for(;;)switch(b){case"ascii":case"latin1":case"binary":return w;case"utf8":case"utf-8":return qt(k).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w*2;case"hex":return w>>>1;case"base64":return Zt(k).length;default:if(X)return F?-1:qt(k).length;b=(""+b).toLowerCase(),X=!0}}a.byteLength=O;function D(k,b,w){let F=!1;if((b===void 0||b<0)&&(b=0),b>this.length||((w===void 0||w>this.length)&&(w=this.length),w<=0)||(w>>>=0,b>>>=0,w<=b))return"";for(k||(k="utf8");;)switch(k){case"hex":return j(this,b,w);case"utf8":case"utf-8":return p(this,b,w);case"ascii":return L(this,b,w);case"latin1":case"binary":return N(this,b,w);case"base64":return W(this,b,w);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,b,w);default:if(F)throw new TypeError("Unknown encoding: "+k);k=(k+"").toLowerCase(),F=!0}}a.prototype._isBuffer=!0;function z(k,b,w){const F=k[b];k[b]=k[w],k[w]=F}a.prototype.swap16=function(){const b=this.length;if(b%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let w=0;ww&&(b+=" ... "),""},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(b,w,F,X,Z){if(wn(b,Uint8Array)&&(b=a.from(b,b.offset,b.byteLength)),!a.isBuffer(b))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof b);if(w===void 0&&(w=0),F===void 0&&(F=b?b.length:0),X===void 0&&(X=0),Z===void 0&&(Z=this.length),w<0||F>b.length||X<0||Z>this.length)throw new RangeError("out of range index");if(X>=Z&&w>=F)return 0;if(X>=Z)return-1;if(w>=F)return 1;if(w>>>=0,F>>>=0,X>>>=0,Z>>>=0,this===b)return 0;let ie=Z-X,dt=F-w;const et=Math.min(ie,dt),Qe=this.slice(X,Z),Vt=b.slice(w,F);for(let qe=0;qe2147483647?w=2147483647:w<-2147483648&&(w=-2147483648),w=+w,tr(w)&&(w=X?0:k.length-1),w<0&&(w=k.length+w),w>=k.length){if(X)return-1;w=k.length-1}else if(w<0)if(X)w=0;else return-1;if(typeof b=="string"&&(b=a.from(b,F)),a.isBuffer(b))return b.length===0?-1:K(k,b,w,F,X);if(typeof b=="number")return b=b&255,typeof Uint8Array.prototype.indexOf=="function"?X?Uint8Array.prototype.indexOf.call(k,b,w):Uint8Array.prototype.lastIndexOf.call(k,b,w):K(k,[b],w,F,X);throw new TypeError("val must be string, number or Buffer")}function K(k,b,w,F,X){let Z=1,ie=k.length,dt=b.length;if(F!==void 0&&(F=String(F).toLowerCase(),F==="ucs2"||F==="ucs-2"||F==="utf16le"||F==="utf-16le")){if(k.length<2||b.length<2)return-1;Z=2,ie/=2,dt/=2,w/=2}function et(Vt,qe){return Z===1?Vt[qe]:Vt.readUInt16BE(qe*Z)}let Qe;if(X){let Vt=-1;for(Qe=w;Qeie&&(w=ie-dt),Qe=w;Qe>=0;Qe--){let Vt=!0;for(let qe=0;qeX&&(F=X)):F=X;const Z=b.length;F>Z/2&&(F=Z/2);let ie;for(ie=0;ie>>0,isFinite(F)?(F=F>>>0,X===void 0&&(X="utf8")):(X=F,F=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const Z=this.length-w;if((F===void 0||F>Z)&&(F=Z),b.length>0&&(F<0||w<0)||w>this.length)throw new RangeError("Attempt to write outside buffer bounds");X||(X="utf8");let ie=!1;for(;;)switch(X){case"hex":return J(this,b,w,F);case"utf8":case"utf-8":return fe(this,b,w,F);case"ascii":case"latin1":case"binary":return pe(this,b,w,F);case"base64":return Oe(this,b,w,F);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ue(this,b,w,F);default:if(ie)throw new TypeError("Unknown encoding: "+X);X=(""+X).toLowerCase(),ie=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function W(k,b,w){return b===0&&w===k.length?e.fromByteArray(k):e.fromByteArray(k.slice(b,w))}function p(k,b,w){w=Math.min(k.length,w);const F=[];let X=b;for(;X239?4:Z>223?3:Z>191?2:1;if(X+dt<=w){let et,Qe,Vt,qe;switch(dt){case 1:Z<128&&(ie=Z);break;case 2:et=k[X+1],(et&192)===128&&(qe=(Z&31)<<6|et&63,qe>127&&(ie=qe));break;case 3:et=k[X+1],Qe=k[X+2],(et&192)===128&&(Qe&192)===128&&(qe=(Z&15)<<12|(et&63)<<6|Qe&63,qe>2047&&(qe<55296||qe>57343)&&(ie=qe));break;case 4:et=k[X+1],Qe=k[X+2],Vt=k[X+3],(et&192)===128&&(Qe&192)===128&&(Vt&192)===128&&(qe=(Z&15)<<18|(et&63)<<12|(Qe&63)<<6|Vt&63,qe>65535&&qe<1114112&&(ie=qe))}}ie===null?(ie=65533,dt=1):ie>65535&&(ie-=65536,F.push(ie>>>10&1023|55296),ie=56320|ie&1023),F.push(ie),X+=dt}return $(F)}const T=4096;function $(k){const b=k.length;if(b<=T)return String.fromCharCode.apply(String,k);let w="",F=0;for(;FF)&&(w=F);let X="";for(let Z=b;ZF&&(b=F),w<0?(w+=F,w<0&&(w=0)):w>F&&(w=F),ww)throw new RangeError("Trying to access beyond buffer length")}a.prototype.readUintLE=a.prototype.readUIntLE=function(b,w,F){b=b>>>0,w=w>>>0,F||P(b,w,this.length);let X=this[b],Z=1,ie=0;for(;++ie>>0,w=w>>>0,F||P(b,w,this.length);let X=this[b+--w],Z=1;for(;w>0&&(Z*=256);)X+=this[b+--w]*Z;return X},a.prototype.readUint8=a.prototype.readUInt8=function(b,w){return b=b>>>0,w||P(b,1,this.length),this[b]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(b,w){return b=b>>>0,w||P(b,2,this.length),this[b]|this[b+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(b,w){return b=b>>>0,w||P(b,2,this.length),this[b]<<8|this[b+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(b,w){return b=b>>>0,w||P(b,4,this.length),(this[b]|this[b+1]<<8|this[b+2]<<16)+this[b+3]*16777216},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(b,w){return b=b>>>0,w||P(b,4,this.length),this[b]*16777216+(this[b+1]<<16|this[b+2]<<8|this[b+3])},a.prototype.readBigUInt64LE=Un(function(b){b=b>>>0,ln(b,"offset");const w=this[b],F=this[b+7];(w===void 0||F===void 0)&&Ut(b,this.length-8);const X=w+this[++b]*2**8+this[++b]*2**16+this[++b]*2**24,Z=this[++b]+this[++b]*2**8+this[++b]*2**16+F*2**24;return BigInt(X)+(BigInt(Z)<>>0,ln(b,"offset");const w=this[b],F=this[b+7];(w===void 0||F===void 0)&&Ut(b,this.length-8);const X=w*2**24+this[++b]*2**16+this[++b]*2**8+this[++b],Z=this[++b]*2**24+this[++b]*2**16+this[++b]*2**8+F;return(BigInt(X)<>>0,w=w>>>0,F||P(b,w,this.length);let X=this[b],Z=1,ie=0;for(;++ie=Z&&(X-=Math.pow(2,8*w)),X},a.prototype.readIntBE=function(b,w,F){b=b>>>0,w=w>>>0,F||P(b,w,this.length);let X=w,Z=1,ie=this[b+--X];for(;X>0&&(Z*=256);)ie+=this[b+--X]*Z;return Z*=128,ie>=Z&&(ie-=Math.pow(2,8*w)),ie},a.prototype.readInt8=function(b,w){return b=b>>>0,w||P(b,1,this.length),this[b]&128?(255-this[b]+1)*-1:this[b]},a.prototype.readInt16LE=function(b,w){b=b>>>0,w||P(b,2,this.length);const F=this[b]|this[b+1]<<8;return F&32768?F|4294901760:F},a.prototype.readInt16BE=function(b,w){b=b>>>0,w||P(b,2,this.length);const F=this[b+1]|this[b]<<8;return F&32768?F|4294901760:F},a.prototype.readInt32LE=function(b,w){return b=b>>>0,w||P(b,4,this.length),this[b]|this[b+1]<<8|this[b+2]<<16|this[b+3]<<24},a.prototype.readInt32BE=function(b,w){return b=b>>>0,w||P(b,4,this.length),this[b]<<24|this[b+1]<<16|this[b+2]<<8|this[b+3]},a.prototype.readBigInt64LE=Un(function(b){b=b>>>0,ln(b,"offset");const w=this[b],F=this[b+7];(w===void 0||F===void 0)&&Ut(b,this.length-8);const X=this[b+4]+this[b+5]*2**8+this[b+6]*2**16+(F<<24);return(BigInt(X)<>>0,ln(b,"offset");const w=this[b],F=this[b+7];(w===void 0||F===void 0)&&Ut(b,this.length-8);const X=(w<<24)+this[++b]*2**16+this[++b]*2**8+this[++b];return(BigInt(X)<>>0,w||P(b,4,this.length),r.read(this,b,!0,23,4)},a.prototype.readFloatBE=function(b,w){return b=b>>>0,w||P(b,4,this.length),r.read(this,b,!1,23,4)},a.prototype.readDoubleLE=function(b,w){return b=b>>>0,w||P(b,8,this.length),r.read(this,b,!0,52,8)},a.prototype.readDoubleBE=function(b,w){return b=b>>>0,w||P(b,8,this.length),r.read(this,b,!1,52,8)};function v(k,b,w,F,X,Z){if(!a.isBuffer(k))throw new TypeError('"buffer" argument must be a Buffer instance');if(b>X||bk.length)throw new RangeError("Index out of range")}a.prototype.writeUintLE=a.prototype.writeUIntLE=function(b,w,F,X){if(b=+b,w=w>>>0,F=F>>>0,!X){const dt=Math.pow(2,8*F)-1;v(this,b,w,F,dt,0)}let Z=1,ie=0;for(this[w]=b&255;++ie>>0,F=F>>>0,!X){const dt=Math.pow(2,8*F)-1;v(this,b,w,F,dt,0)}let Z=F-1,ie=1;for(this[w+Z]=b&255;--Z>=0&&(ie*=256);)this[w+Z]=b/ie&255;return w+F},a.prototype.writeUint8=a.prototype.writeUInt8=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,1,255,0),this[w]=b&255,w+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,2,65535,0),this[w]=b&255,this[w+1]=b>>>8,w+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,2,65535,0),this[w]=b>>>8,this[w+1]=b&255,w+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,4,4294967295,0),this[w+3]=b>>>24,this[w+2]=b>>>16,this[w+1]=b>>>8,this[w]=b&255,w+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,4,4294967295,0),this[w]=b>>>24,this[w+1]=b>>>16,this[w+2]=b>>>8,this[w+3]=b&255,w+4};function U(k,b,w,F,X){Bt(b,F,X,k,w,7);let Z=Number(b&BigInt(4294967295));k[w++]=Z,Z=Z>>8,k[w++]=Z,Z=Z>>8,k[w++]=Z,Z=Z>>8,k[w++]=Z;let ie=Number(b>>BigInt(32)&BigInt(4294967295));return k[w++]=ie,ie=ie>>8,k[w++]=ie,ie=ie>>8,k[w++]=ie,ie=ie>>8,k[w++]=ie,w}function ue(k,b,w,F,X){Bt(b,F,X,k,w,7);let Z=Number(b&BigInt(4294967295));k[w+7]=Z,Z=Z>>8,k[w+6]=Z,Z=Z>>8,k[w+5]=Z,Z=Z>>8,k[w+4]=Z;let ie=Number(b>>BigInt(32)&BigInt(4294967295));return k[w+3]=ie,ie=ie>>8,k[w+2]=ie,ie=ie>>8,k[w+1]=ie,ie=ie>>8,k[w]=ie,w+8}a.prototype.writeBigUInt64LE=Un(function(b,w=0){return U(this,b,w,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=Un(function(b,w=0){return ue(this,b,w,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(b,w,F,X){if(b=+b,w=w>>>0,!X){const et=Math.pow(2,8*F-1);v(this,b,w,F,et-1,-et)}let Z=0,ie=1,dt=0;for(this[w]=b&255;++Z>0)-dt&255;return w+F},a.prototype.writeIntBE=function(b,w,F,X){if(b=+b,w=w>>>0,!X){const et=Math.pow(2,8*F-1);v(this,b,w,F,et-1,-et)}let Z=F-1,ie=1,dt=0;for(this[w+Z]=b&255;--Z>=0&&(ie*=256);)b<0&&dt===0&&this[w+Z+1]!==0&&(dt=1),this[w+Z]=(b/ie>>0)-dt&255;return w+F},a.prototype.writeInt8=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,1,127,-128),b<0&&(b=255+b+1),this[w]=b&255,w+1},a.prototype.writeInt16LE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,2,32767,-32768),this[w]=b&255,this[w+1]=b>>>8,w+2},a.prototype.writeInt16BE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,2,32767,-32768),this[w]=b>>>8,this[w+1]=b&255,w+2},a.prototype.writeInt32LE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,4,2147483647,-2147483648),this[w]=b&255,this[w+1]=b>>>8,this[w+2]=b>>>16,this[w+3]=b>>>24,w+4},a.prototype.writeInt32BE=function(b,w,F){return b=+b,w=w>>>0,F||v(this,b,w,4,2147483647,-2147483648),b<0&&(b=4294967295+b+1),this[w]=b>>>24,this[w+1]=b>>>16,this[w+2]=b>>>8,this[w+3]=b&255,w+4},a.prototype.writeBigInt64LE=Un(function(b,w=0){return U(this,b,w,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=Un(function(b,w=0){return ue(this,b,w,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function de(k,b,w,F,X,Z){if(w+F>k.length)throw new RangeError("Index out of range");if(w<0)throw new RangeError("Index out of range")}function Ee(k,b,w,F,X){return b=+b,w=w>>>0,X||de(k,b,w,4),r.write(k,b,w,F,23,4),w+4}a.prototype.writeFloatLE=function(b,w,F){return Ee(this,b,w,!0,F)},a.prototype.writeFloatBE=function(b,w,F){return Ee(this,b,w,!1,F)};function Xe(k,b,w,F,X){return b=+b,w=w>>>0,X||de(k,b,w,8),r.write(k,b,w,F,52,8),w+8}a.prototype.writeDoubleLE=function(b,w,F){return Xe(this,b,w,!0,F)},a.prototype.writeDoubleBE=function(b,w,F){return Xe(this,b,w,!1,F)},a.prototype.copy=function(b,w,F,X){if(!a.isBuffer(b))throw new TypeError("argument should be a Buffer");if(F||(F=0),!X&&X!==0&&(X=this.length),w>=b.length&&(w=b.length),w||(w=0),X>0&&X=this.length)throw new RangeError("Index out of range");if(X<0)throw new RangeError("sourceEnd out of bounds");X>this.length&&(X=this.length),b.length-w>>0,F=F===void 0?this.length:F>>>0,b||(b=0);let Z;if(typeof b=="number")for(Z=w;Z2**32?X=mr(String(w)):typeof w=="bigint"&&(X=String(w),(w>BigInt(2)**BigInt(32)||w<-(BigInt(2)**BigInt(32)))&&(X=mr(X)),X+="n"),F+=` It must be ${b}. Received ${X}`,F},RangeError);function mr(k){let b="",w=k.length;const F=k[0]==="-"?1:0;for(;w>=F+4;w-=3)b=`_${k.slice(w-3,w)}${b}`;return`${k.slice(0,w)}${b}`}function Qt(k,b,w){ln(b,"offset"),(k[b]===void 0||k[b+w]===void 0)&&Ut(b,k.length-(w+1))}function Bt(k,b,w,F,X,Z){if(k>w||k= 0${ie} and < 2${ie} ** ${(Z+1)*8}${ie}`:dt=`>= -(2${ie} ** ${(Z+1)*8-1}${ie}) and < 2 ** ${(Z+1)*8-1}${ie}`,new it.ERR_OUT_OF_RANGE("value",dt,k)}Qt(F,X,Z)}function ln(k,b){if(typeof k!="number")throw new it.ERR_INVALID_ARG_TYPE(b,"number",k)}function Ut(k,b,w){throw Math.floor(k)!==k?(ln(k,w),new it.ERR_OUT_OF_RANGE("offset","an integer",k)):b<0?new it.ERR_BUFFER_OUT_OF_BOUNDS:new it.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${b}`,k)}const ar=/[^+/0-9A-Za-z-_]/g;function Yo(k){if(k=k.split("=")[0],k=k.trim().replace(ar,""),k.length<2)return"";for(;k.length%4!==0;)k=k+"=";return k}function qt(k,b){b=b||1/0;let w;const F=k.length;let X=null;const Z=[];for(let ie=0;ie55295&&w<57344){if(!X){if(w>56319){(b-=3)>-1&&Z.push(239,191,189);continue}else if(ie+1===F){(b-=3)>-1&&Z.push(239,191,189);continue}X=w;continue}if(w<56320){(b-=3)>-1&&Z.push(239,191,189),X=w;continue}w=(X-55296<<10|w-56320)+65536}else X&&(b-=3)>-1&&Z.push(239,191,189);if(X=null,w<128){if((b-=1)<0)break;Z.push(w)}else if(w<2048){if((b-=2)<0)break;Z.push(w>>6|192,w&63|128)}else if(w<65536){if((b-=3)<0)break;Z.push(w>>12|224,w>>6&63|128,w&63|128)}else if(w<1114112){if((b-=4)<0)break;Z.push(w>>18|240,w>>12&63|128,w>>6&63|128,w&63|128)}else throw new Error("Invalid code point")}return Z}function ir(k){const b=[];for(let w=0;w>8,X=w%256,Z.push(X),Z.push(F);return Z}function Zt(k){return e.toByteArray(Yo(k))}function er(k,b,w,F){let X;for(X=0;X=b.length||X>=k.length);++X)b[X+w]=k[X];return X}function wn(k,b){return k instanceof b||k!=null&&k.constructor!=null&&k.constructor.name!=null&&k.constructor.name===b.name}function tr(k){return k!==k}const sr=function(){const k="0123456789abcdef",b=new Array(256);for(let w=0;w<16;++w){const F=w*16;for(let X=0;X<16;++X)b[F+X]=k[w]+k[X]}return b}();function Un(k){return typeof BigInt>"u"?or:k}function or(){throw new Error("BigInt not supported")}})(vE);Object.defineProperty(Lg,"__esModule",{value:!0});Lg.SuiPriceServiceConnection=void 0;const The=cE,Phe=vE;class Ihe extends The.PriceServiceConnection{async getPriceFeedsUpdateData(e){return(await this.getLatestVaas(e)).map(n=>Phe.Buffer.from(n,"base64"))}}Lg.SuiPriceServiceConnection=Ihe;var Kg={};Object.defineProperty(Kg,"__esModule",{value:!0});Kg.SuiPythClient=void 0;const y0=HS,Hc=$s,khe=vE,Ib=16*1024;class Ahe{constructor(e,r,n){Fe(this,"provider");Fe(this,"pythStateId");Fe(this,"wormholeStateId");Fe(this,"pythPackageId");Fe(this,"wormholePackageId");Fe(this,"priceTableInfo");Fe(this,"priceFeedObjectIdCache",new Map);Fe(this,"baseUpdateFee");this.provider=e,this.pythStateId=r,this.wormholeStateId=n,this.pythPackageId=void 0,this.wormholePackageId=void 0}async getBaseUpdateFee(){if(this.baseUpdateFee===void 0){const e=await this.provider.getObject({id:this.pythStateId,options:{showContent:!0}});if(!e.data||!e.data.content||e.data.content.dataType!=="moveObject")throw new Error("Unable to fetch pyth state object");this.baseUpdateFee=e.data.content.fields.base_update_fee}return this.baseUpdateFee}async getPackageId(e){const r=await this.provider.getObject({id:e,options:{showContent:!0}}).then(n=>{var i,s,o;if(((s=(i=n.data)==null?void 0:i.content)==null?void 0:s.dataType)=="moveObject")return n.data.content.fields;throw console.log((o=n.data)==null?void 0:o.content),new Error(`Cannot fetch package id for object ${e}`)});if("upgrade_cap"in r)return r.upgrade_cap.fields.package;throw new Error("upgrade_cap not found")}async verifyVaas(e,r){const n=await this.getWormholePackageId(),i=[];for(const s of e){const[o]=r.moveCall({target:`${n}::vaa::parse_and_verify`,arguments:[r.object(this.wormholeStateId),r.pure(Hc.bcs.vector(Hc.bcs.U8).serialize(Array.from(s),{maxSize:Ib}).toBytes()),r.object(y0.SUI_CLOCK_OBJECT_ID)]});i.push(o)}return i}async updatePriceFeeds(e,r,n){const i=await this.getPythPackageId();let s;if(r.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");const o=this.extractVaaBytesFromAccumulatorMessage(r[0]),a=await this.verifyVaas([o],e);[s]=e.moveCall({target:`${i}::pyth::create_authenticated_price_infos_using_accumulator`,arguments:[e.object(this.pythStateId),e.pure(Hc.bcs.vector(Hc.bcs.U8).serialize(Array.from(r[0]),{maxSize:Ib}).toBytes()),a[0],e.object(y0.SUI_CLOCK_OBJECT_ID)]});const u=[],c=await this.getBaseUpdateFee(),l=e.splitCoins(e.gas,n.map(()=>e.pure.u64(c)));let f=0;for(const d of n){const h=await this.getPriceFeedObjectId(d);if(!h)throw new Error(`Price feed ${d} not found, please create it first`);u.push(h),[s]=e.moveCall({target:`${i}::pyth::update_single_price_feed`,arguments:[e.object(this.pythStateId),s,e.object(h),l[f],e.object(y0.SUI_CLOCK_OBJECT_ID)]}),f++}return e.moveCall({target:`${i}::hot_potato_vector::destroy`,arguments:[s],typeArguments:[`${i}::price_info::PriceInfo`]}),u}async createPriceFeed(e,r){const n=await this.getPythPackageId();if(r.length>1)throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");const i=this.extractVaaBytesFromAccumulatorMessage(r[0]),s=await this.verifyVaas([i],e);e.moveCall({target:`${n}::pyth::create_price_feeds_using_accumulator`,arguments:[e.object(this.pythStateId),e.pure(Hc.bcs.vector(Hc.bcs.U8).serialize(Array.from(r[0]),{maxSize:Ib}).toBytes()),s[0],e.object(y0.SUI_CLOCK_OBJECT_ID)]})}async getWormholePackageId(){return this.wormholePackageId||(this.wormholePackageId=await this.getPackageId(this.wormholeStateId)),this.wormholePackageId}async getPythPackageId(){return this.pythPackageId||(this.pythPackageId=await this.getPackageId(this.pythStateId)),this.pythPackageId}async getPriceFeedObjectId(e){const r=e.replace("0x","");if(!this.priceFeedObjectIdCache.has(r)){const{id:n,fieldType:i}=await this.getPriceTableInfo(),s=await this.provider.getDynamicFieldObject({parentId:n,name:{type:`${i}::price_identifier::PriceIdentifier`,value:{bytes:Array.from(khe.Buffer.from(r,"hex"))}}});if(!s.data||!s.data.content)return;if(s.data.content.dataType!=="moveObject")throw new Error("Price feed type mismatch");this.priceFeedObjectIdCache.set(r,s.data.content.fields.value)}return this.priceFeedObjectIdCache.get(r)}async getPriceTableInfo(){if(this.priceTableInfo===void 0){const e=await this.provider.getDynamicFieldObject({parentId:this.pythStateId,name:{type:"vector",value:"price_info"}});if(!e.data||!e.data.type)throw new Error("Price Table not found, contract may not be initialized");let r=e.data.type.replace("0x2::table::Table<","");r=r.replace("::price_identifier::PriceIdentifier, 0x2::object::ID>",""),this.priceTableInfo={id:e.data.objectId,fieldType:r}}return this.priceTableInfo}extractVaaBytesFromAccumulatorMessage(e){const n=7+e.readUint8(6)+1,i=e.readUint16BE(n),s=n+2;return e.subarray(s,s+i)}}Kg.SuiPythClient=Ahe;(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.PriceFeed=t.Price=t.SuiPythClient=t.SuiPriceServiceConnection=void 0;var e=Lg;Object.defineProperty(t,"SuiPriceServiceConnection",{enumerable:!0,get:function(){return e.SuiPriceServiceConnection}});var r=Kg;Object.defineProperty(t,"SuiPythClient",{enumerable:!0,get:function(){return r.SuiPythClient}});var n=cE;Object.defineProperty(t,"Price",{enumerable:!0,get:function(){return n.Price}}),Object.defineProperty(t,"PriceFeed",{enumerable:!0,get:function(){return n.PriceFeed}})})(tD);var Qr=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(kr,"__esModule",{value:!0});kr.depositCoin=Mhe;kr.depositCoinWithAccountCap=$he;kr.withdrawCoin=Nhe;kr.withdrawCoinWithAccountCap=Rhe;kr.borrowCoin=Dhe;kr.repayDebt=Bhe;kr.getHealthFactor=Uhe;kr.returnMergedCoins=Fhe;kr.flashloan=Lhe;kr.repayFlashLoan=zhe;kr.liquidateFunction=Vhe;kr.claimRewardFunction=Z1;kr.SignAndSubmitTXB=Whe;kr.stakeTovSuiPTB=Hhe;kr.unstakeTovSui=Ghe;kr.getIncentivePools=pD;kr.getAvailableRewards=e_;kr.claimAllRewardsPTB=qhe;kr.updateOraclePTB=Jhe;kr.registerStructs=yD;const dD=yR,lt=Jh(),yd=XR,jhe=Pp,hD=tD;function Mhe(t,e,r,n){return Qr(this,void 0,void 0,function*(){const i=yield(0,lt.getConfig)();let s;return typeof n=="number"?s=t.pure.u64(n):s=n,t.moveCall({target:`${i.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[t.object("0x06"),t.object(i.StorageId),t.object(e.poolId),t.pure.u8(e.assetId),r,s,t.object(i.Incentive),t.object(i.IncentiveV2)],typeArguments:[e.type]}),t})}function $he(t,e,r,n){return Qr(this,void 0,void 0,function*(){const i=yield(0,lt.getConfig)();return t.moveCall({target:`${i.ProtocolPackage}::incentive_v2::deposit_with_account_cap`,arguments:[t.object("0x06"),t.object(i.StorageId),t.object(e.poolId),t.pure.u8(e.assetId),r,t.object(i.Incentive),t.object(i.IncentiveV2),t.object(n)],typeArguments:[e.type]}),t})}function Nhe(t,e,r){return Qr(this,void 0,void 0,function*(){const n=yield(0,lt.getConfig)(),[i]=t.moveCall({target:`${n.ProtocolPackage}::incentive_v2::withdraw`,arguments:[t.object("0x06"),t.object(n.PriceOracle),t.object(n.StorageId),t.object(e.poolId),t.pure.u8(e.assetId),t.pure.u64(r),t.object(n.Incentive),t.object(n.IncentiveV2)],typeArguments:[e.type]}),[s]=t.moveCall({target:"0x2::coin::from_balance",arguments:[i],typeArguments:[e.type]});return[s]})}function Rhe(t,e,r,n,i){return Qr(this,void 0,void 0,function*(){const s=yield(0,lt.getConfig)(),[o]=t.moveCall({target:`${s.ProtocolPackage}::incentive_v2::withdraw_with_account_cap`,arguments:[t.sharedObjectRef({objectId:"0x06",initialSharedVersion:1,mutable:!1}),t.object(s.PriceOracle),t.object(s.StorageId),t.object(e.poolId),t.pure.u8(e.assetId),t.pure.u64(n),t.object(s.Incentive),t.object(s.IncentiveV2),t.object(r)],typeArguments:[e.type]}),[a]=t.moveCall({target:"0x2::coin::from_balance",arguments:[t.object(o)],typeArguments:[e.type]});return[a]})}function Dhe(t,e,r){return Qr(this,void 0,void 0,function*(){const n=yield(0,lt.getConfig)(),[i]=t.moveCall({target:`${n.ProtocolPackage}::incentive_v2::borrow`,arguments:[t.object("0x06"),t.object(n.PriceOracle),t.object(n.StorageId),t.object(e.poolId),t.pure.u8(e.assetId),t.pure.u64(r),t.object(n.IncentiveV2)],typeArguments:[e.type]}),[s]=t.moveCall({target:"0x2::coin::from_balance",arguments:[t.object(i)],typeArguments:[e.type]});return[s]})}function Bhe(t,e,r,n){return Qr(this,void 0,void 0,function*(){const i=yield(0,lt.getConfig)();return t.moveCall({target:`${i.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[t.object("0x06"),t.object(i.PriceOracle),t.object(i.StorageId),t.object(e.poolId),t.pure.u8(e.assetId),r,t.pure.u64(n),t.object(i.IncentiveV2)],typeArguments:[e.type]}),t})}function Uhe(t,e){return Qr(this,void 0,void 0,function*(){const r=yield(0,lt.getConfig)();return t.moveCall({target:`${r.ProtocolPackage}::logic::user_health_factor`,arguments:[t.object("0x06"),t.object(r.StorageId),t.object(r.PriceOracle),t.pure.address(e)]})})}function Fhe(t,e){if(e.data.length>=2){let n=e.data[0].coinObjectId,i=e.data.slice(1).map(s=>s.coinObjectId);t.mergeCoins(n,i)}return t.object(e.data[0].coinObjectId)}function Lhe(t,e,r){return Qr(this,void 0,void 0,function*(){const n=yield(0,lt.getConfig)(),[i,s]=t.moveCall({target:`${n.ProtocolPackage}::lending::flash_loan_with_ctx`,arguments:[t.object(lt.flashloanConfig.id),t.object(e.poolId),t.pure.u64(r)],typeArguments:[e.type]});return[i,s]})}function zhe(t,e,r,n){return Qr(this,void 0,void 0,function*(){const i=yield(0,lt.getConfig)(),[s]=t.moveCall({target:`${i.ProtocolPackage}::lending::flash_repay_with_ctx`,arguments:[t.object("0x06"),t.object(i.StorageId),t.object(e.poolId),r,n],typeArguments:[e.type]});return[s]})}function Vhe(t,e,r,n,i,s){return Qr(this,void 0,void 0,function*(){const o=lt.pool[e.symbol],a=lt.pool[n.symbol],u=yield(0,lt.getConfig)(),[c,l]=t.moveCall({target:`${u.ProtocolPackage}::incentive_v2::liquidation`,arguments:[t.object("0x06"),t.object(u.PriceOracle),t.object(u.StorageId),t.pure.u8(o.assetId),t.object(o.poolId),r,t.pure.u8(a.assetId),t.object(a.poolId),t.pure.address(i),t.object(u.Incentive),t.object(u.IncentiveV2)],typeArguments:[o.type,a.type]});return[c,l]})}function Z1(t,e,r,n){return Qr(this,void 0,void 0,function*(){const i=yield(0,lt.getConfig)(),s={f975bc2d4cca10e3ace8887e20afd77b46c383b4465eac694c4688344955dea4:{coinType:"0x2::sui::SUI",oracleId:0},e2b5ada45273676e0da8ae10f8fe079a7cec3d0f59187d3d20b1549c275b07ea:{coinType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",oracleId:5},a20e18085ce04be8aa722fbe85423f1ad6b1ae3b1be81ffac00a30f1d6d6ab51:{coinType:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",oracleId:6},"9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09":{coinType:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",oracleId:7}};t.moveCall({target:`${i.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[t.object("0x06"),t.object(i.IncentiveV2),t.object(`0x${e}`),t.object(i.StorageId),t.pure.u8(Number(r)),t.pure.u8(n)],typeArguments:[s[e].coinType]})})}function Whe(t,e,r){return Qr(this,void 0,void 0,function*(){return yield e.signAndExecuteTransaction({transaction:t,signer:r,requestType:"WaitForLocalExecution",options:{showEffects:!0}})})}function Hhe(t,e){return Qr(this,void 0,void 0,function*(){const[r]=t.moveCall({target:`${lt.vSuiConfig.ProtocolPackage}::native_pool::stake_non_entry`,arguments:[t.object(lt.vSuiConfig.pool),t.object(lt.vSuiConfig.metadata),t.object(lt.vSuiConfig.wrapper),e],typeArguments:[]});return r})}function Ghe(t,e){return Qr(this,void 0,void 0,function*(){const[r]=t.moveCall({target:`${lt.vSuiConfig.ProtocolPackage}::native_pool::unstake`,arguments:[t.object(lt.vSuiConfig.pool),t.object(lt.vSuiConfig.metadata),t.object(lt.vSuiConfig.wrapper),e],typeArguments:[]});return r})}function pD(t,e,r,n){return Qr(this,void 0,void 0,function*(){const i=yield(0,lt.getConfig)(),s=new dD.Transaction;return(yield(0,jhe.moveInspect)(s,t,n,`${i.uiGetter}::incentive_getter::get_incentive_pools`,[s.object("0x06"),s.object(i.IncentiveV2),s.object(i.StorageId),s.pure.u8(e),s.pure.u8(r),s.pure.address(n)],[],"vector"))[0]})}function e_(t,e){return Qr(this,arguments,void 0,function*(r,n,i=1,s=!0){yD();const o=Array.from({length:Number(Object.keys(lt.pool).length)},(a,u)=>u);try{const l=(yield Promise.all(o.map(f=>pD(r,f,i,n)))).flat().filter(f=>f.available.trim()!="0").reduce((f,d)=>{let h=d.asset_id.toString();h=="0"&&d.funds=="9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09"&&(h="0extra"),h=="5"&&d.funds=="9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09"&&(h="5extra"),h=="10"&&d.funds=="9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09"&&(h="10extra"),h=="13"&&d.funds=="bc14736bbe4ac59a4e3af6835a98765c15c5f7dbf9e7ba9b36679ce7ff00dc19"&&(h="13extra");const m=(BigInt(d.available)/BigInt(Math.pow(10,27))).toString();let g=(Number(m)/Math.pow(10,9)).toFixed(5);return h=="13extra"&&(g=(Number(m)/Math.pow(10,6)).toFixed(5)),f[h]?f[h].available=(parseFloat(f[h].available)+parseFloat(g)).toFixed(5):(f[h]={asset_id:h,funds:d.funds,available:g},h=="0extra"&&(f[h]={asset_id:"0",funds:d.funds,available:g}),h=="5extra"&&(f[h]={asset_id:"5",funds:d.funds,available:g}),h=="10extra"&&(f[h]={asset_id:"10",funds:d.funds,available:g}),h=="13extra"&&(f[h]={asset_id:"13",funds:d.funds,available:g})),f},{});if(s){const f={0:"Sui","0extra":"Sui",1:"wUSDC",2:"USDT",3:"WETH",4:"CETUS",5:"vSui","5extra":"vSui",6:"haSui",7:"NAVX",8:"WBTC",9:"AUSD",10:"nUSDC","10extra":"nUSDC",11:"ETH",12:"USDY",13:"NS","13extra":"NS"};console.log(n," available rewards:"),Object.keys(l).forEach(d=>{d=="0extra"||d=="5extra"||d=="10extra"||d=="13extra"||d=="7"?console.log(`${f[d]}: ${l[d].available} NAVX`):d=="13extra"?console.log(`${f[d]}: ${l[d].available} NS`):console.log(`${f[d]}: ${l[d].available} vSui`)})}return l}catch(a){throw console.error("Failed to get available rewards:",a),a}})}function qhe(t,e,r){return Qr(this,void 0,void 0,function*(){let n=r||new dD.Transaction;const i=yield e_(t,e,1,!1),s=Object.values(i);for(const u of s)yield Z1(n,u.funds,u.asset_id,1);const o=yield e_(t,e,3,!1),a=Object.values(o);for(const u of a)yield Z1(n,u.funds,u.asset_id,3);return n})}const mD=new hD.SuiPriceServiceConnection("https://hermes.pyth.network",{timeout:2e4});function Khe(t){return Qr(this,void 0,void 0,function*(){try{const e=[],r=yield mD.getLatestPriceFeeds(t);if(!r)return e;const n=Math.floor(new Date().valueOf()/1e3);for(const i of r){const s=i.getPriceUnchecked();if(s.publishTime>n){console.warn(`pyth price feed is invalid, id: ${i.id}, publish time: ${s.publishTime}, current timestamp: ${n}`);continue}n-i.getPriceUnchecked().publishTime>30&&(console.info(`stale price feed, id: ${i.id}, publish time: ${s.publishTime}, current timestamp: ${n}`),e.push(i.id))}return e}catch(e){throw new Error(`failed to get pyth stale price feed id, msg: ${e.message}`)}})}function Fn(t,e){t.moveCall({target:`${lt.OracleProConfig.PackageId}::oracle_pro::update_single_price`,arguments:[t.object("0x6"),t.object(lt.OracleProConfig.OracleConfig),t.object(lt.OracleProConfig.PriceOracle),t.object(lt.OracleProConfig.SupraOracleHolder),t.object(e.pythPriceInfoObject),t.pure.address(e.feedId)]})}function Xhe(t,e,r){return Qr(this,void 0,void 0,function*(){try{const n=yield mD.getPriceFeedsUpdateData(r);return yield new hD.SuiPythClient(t,lt.OracleProConfig.PythStateId,lt.OracleProConfig.WormholeStateId).updatePriceFeeds(e,n,r)}catch(n){throw new Error(`failed to update pyth price feeds, msg: ${n.message}`)}})}function Jhe(t,e){return Qr(this,void 0,void 0,function*(){const r=Object.keys(lt.PriceFeedConfig).map(i=>lt.PriceFeedConfig[i].pythPriceFeedId),n=yield Khe(r);n.length>0&&(yield Xhe(t,e,n),console.info(`request update pyth price feed, ids: ${n}`)),Fn(e,lt.PriceFeedConfig.SUI),Fn(e,lt.PriceFeedConfig.wUSDC),Fn(e,lt.PriceFeedConfig.USDT),Fn(e,lt.PriceFeedConfig.WETH),Fn(e,lt.PriceFeedConfig.CETUS),Fn(e,lt.PriceFeedConfig.CERT),Fn(e,lt.PriceFeedConfig.HASUI),Fn(e,lt.PriceFeedConfig.NAVX),Fn(e,lt.PriceFeedConfig.WBTC),Fn(e,lt.PriceFeedConfig.AUSD),Fn(e,lt.PriceFeedConfig.NUSDC),Fn(e,lt.PriceFeedConfig.ETH),Fn(e,lt.PriceFeedConfig.USDY),Fn(e,lt.PriceFeedConfig.NS),Fn(e,lt.PriceFeedConfig.LorenzoBTC)})}function yD(){yd.bcs.registerStructType("IncentiveAPYInfo",{asset_id:"u8",apy:"u256",coin_types:"vector"}),yd.bcs.registerStructType("IncentivePoolInfo",{pool_id:"address",funds:"address",phase:"u64",start_at:"u64",end_at:"u64",closed_at:"u64",total_supply:"u64",asset_id:"u8",option:"u8",factor:"u256",distributed:"u64",available:"u256",total:"u256"}),yd.bcs.registerStructType("IncentivePoolInfoByPhase",{phase:"u64",pools:"vector"}),yd.bcs.registerStructType("UserStateInfo",{asset_id:"u8",borrow_balance:"u256",supply_balance:"u256"}),yd.bcs.registerStructType("ReserveDataInfo",{id:"u8",oracle_id:"u8",coin_type:"string",supply_cap:"u256",borrow_cap:"u256",supply_rate:"u256",borrow_rate:"u256",supply_index:"u256",borrow_index:"u256",total_supply:"u256",total_borrow:"u256",last_update_at:"u64",ltv:"u256",treasury_factor:"u256",treasury_balance:"u256",base_rate:"u256",multiplier:"u256",jump_rate_multiplier:"u256",reserve_factor:"u256",optimal_utilization:"u256",liquidation_ratio:"u256",liquidation_bonus:"u256",liquidation_threshold:"u256"})}var gD={},Xg={},co={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.AggregatorConfig=void 0,t.updateConfig=e,t.AggregatorConfig={aggregatorBaseUrl:"https://open-aggregator-api.naviprotocol.io/find_routes",aggregatorContract:"0x88dfe5e893bc9fa984d121e4d0d5b2e873dc70ae430cf5b3228ae6cb199cb32b",cetusPackageId:"0x70968826ad1b4ba895753f634b0aea68d0672908ca1075a2abdf0fc9e0b2fc6a",cetusConfigId:"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",turbosPackageId:"0x1a3c42ded7b75cdf4ebc7c7b7da9d1e1db49f16fcdca934fac003f35f39ecad9",kriyaV3Version:"0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",kriyaV3PackageId:"0xbd8d4489782042c6fafad4de4bc6a5e0b84a43c6c00647ffd7062d1e2bb7549e",kriyaV2PackageId:"0xa0eba10b173538c8fecca1dff298e488402cc9ff374f8a12ca7758eebe830b66",clockAddress:"0x6",aftermathPackageId:"0xc4049b2d1cc0f6e017fda8260e4377cecd236bd7f56a54fee120816e72e2e0dd",aftermathPoolRegistry:"0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",aftermathFeeVault:"0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",aftermathTreasury:"0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",aftermathInsuranceFund:"0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",aftermathReferralVault:"0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278",deepbookPackageId:"0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809",deepTokenAddress:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP"};function e(r){Object.assign(t.AggregatorConfig,r)}})(co);var Yhe=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})},Qhe=ft&&ft.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Xg,"__esModule",{value:!0});Xg.getQuote=epe;const Zhe=Qhe(gS),wT=co;function epe(t,e,r,n){return Yhe(this,arguments,void 0,function*(i,s,o,a,u={baseUrl:void 0,dexList:[],byAmountIn:!0,depth:3}){let c=wT.AggregatorConfig.aggregatorBaseUrl;u.baseUrl&&(c=u.baseUrl);const l=new URLSearchParams({from:i,target:s,amount:(typeof o=="bigint"?Number(o):o).toString(),by_amount_in:(u==null?void 0:u.byAmountIn)!==void 0?u.byAmountIn.toString():"true",depth:(u==null?void 0:u.depth)!==void 0?u.depth.toString():"3"}).toString();let f="";u!=null&&u.dexList&&u.dexList.length>0&&(f=u.dexList.map(h=>`providers=${h}`).join("&"));const d=f?`${l}&${f}`:l;try{const h=a?{headers:{"x-navi-token":a}}:{},{data:m}=yield Zhe.default.get(`${c}?${d}`,h);if(!m)throw new Error("No data returned from the API.");return m.data.from=i,m.data.target=s,m.data}catch(h){throw console.error(`Error fetching routes from ${wT.AggregatorConfig.aggregatorBaseUrl} with params ${JSON.stringify(l)}:`,h.message),h}})}var Vf={},wE={},tpe=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(wE,"__esModule",{value:!0});wE.makeCETUSPTB=rpe;const oa=co;function rpe(t,e,r,n,i,s,o){return tpe(this,void 0,void 0,function*(){let a=o[0],u=o[1];const c=BigInt(s?"4295048016":"79226673515401279992447579055"),[l,f,d]=t.moveCall({target:`${oa.AggregatorConfig.cetusPackageId}::pool::flash_swap`,arguments:[t.object(oa.AggregatorConfig.cetusConfigId),t.object(e),t.pure.bool(s),t.pure.bool(r),i,t.pure.u128(c),t.object(oa.AggregatorConfig.clockAddress)],typeArguments:[a,u]});if(t.moveCall({target:`${oa.AggregatorConfig.cetusPackageId}::pool::swap_pay_amount`,arguments:[d],typeArguments:[a,u]}),s){const x=t.moveCall({target:"0x2::balance::zero",typeArguments:[u]});t.moveCall({target:`${oa.AggregatorConfig.cetusPackageId}::pool::repay_flash_swap`,arguments:[t.object(oa.AggregatorConfig.cetusConfigId),t.object(e),n,x,d],typeArguments:[a,u]});const _=t.moveCall({target:"0x2::coin::from_balance",arguments:[l],typeArguments:[a]});return{receiveCoin:t.moveCall({target:"0x2::coin::from_balance",arguments:[f],typeArguments:[u]}),leftCoin:_}}const[h]=t.moveCall({target:"0x2::balance::zero",typeArguments:[a]});t.moveCall({target:`${oa.AggregatorConfig.cetusPackageId}::pool::repay_flash_swap`,arguments:[t.object(oa.AggregatorConfig.cetusConfigId),t.object(e),h,n,d],typeArguments:[a,u]});const m=t.moveCall({target:"0x2::coin::from_balance",arguments:[f],typeArguments:[u]});return{receiveCoin:t.moveCall({target:"0x2::coin::from_balance",arguments:[l],typeArguments:[a]}),leftCoin:m}})}var vD={};(function(t){var e=ft&&ft.__awaiter||function(i,s,o,a){function u(c){return c instanceof o?c:new o(function(l){l(c)})}return new(o||(o=Promise))(function(c,l){function f(m){try{h(a.next(m))}catch(g){l(g)}}function d(m){try{h(a.throw(m))}catch(g){l(g)}}function h(m){m.done?c(m.value):u(m.value).then(f,d)}h((a=a.apply(i,s||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0}),t.MIN_TICK_INDEX_X64=t.MAX_TICK_INDEX_X64=t.MIN_TICK_INDEX=t.MAX_TICK_INDEX=void 0,t.makeTurbosPTB=n;const r=co;t.MAX_TICK_INDEX=443636,t.MIN_TICK_INDEX=-443636,t.MAX_TICK_INDEX_X64="79226673515401279992447579055",t.MIN_TICK_INDEX_X64="4295048016";function n(i,s,o,a,u,c,l,f,d){return e(this,void 0,void 0,function*(){const[m,g]=i.moveCall({target:`${r.AggregatorConfig.turbosPackageId}::swap_router::swap_${c?"a_b":"b_a"}_with_return_`,arguments:[i.object(s),a,u,i.pure.u64(0),i.pure.u128(c?t.MIN_TICK_INDEX_X64:t.MAX_TICK_INDEX_X64),i.pure.bool(o),i.pure.address(f),i.pure.u64(Date.now()+18e4),i.object(r.AggregatorConfig.clockAddress),i.object(d)],typeArguments:l});return{turbosCoinB:m,turbosCoinA:g}})}})(vD);var _E={},npe=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(_E,"__esModule",{value:!0});_E.makeKriyaV3PTB=ipe;const vu=co;function ipe(t,e,r,n,i,s,o){return npe(this,void 0,void 0,function*(){const a=BigInt(s?"4295048016":"79226673515401279992447579055"),u=[t.object(e),t.pure.bool(s),t.pure.bool(r),typeof i=="number"?t.pure.u64(i):i,t.pure.u128(a),t.object(vu.AggregatorConfig.clockAddress),t.object(vu.AggregatorConfig.kriyaV3Version)],[c,l,f]=t.moveCall({target:`${vu.AggregatorConfig.kriyaV3PackageId}::trade::flash_swap`,typeArguments:o,arguments:u});if(s){t.moveCall({target:"0x2::balance::destroy_zero",arguments:[c],typeArguments:[o[0]]});let g=t.moveCall({target:"0x2::coin::into_balance",arguments:[n],typeArguments:[o[0]]});const[x]=t.moveCall({target:"0x2::balance::zero",typeArguments:[o[1]]});return t.moveCall({target:`${vu.AggregatorConfig.kriyaV3PackageId}::trade::repay_flash_swap`,arguments:[t.object(e),f,g,x,t.object(vu.AggregatorConfig.kriyaV3Version)],typeArguments:o}),t.moveCall({target:"0x2::coin::from_balance",arguments:[l],typeArguments:[o[1]]})}t.moveCall({target:"0x2::balance::destroy_zero",arguments:[l],typeArguments:[o[1]]});let d=t.moveCall({target:"0x2::coin::into_balance",arguments:[n],typeArguments:[o[1]]});const[h]=t.moveCall({target:"0x2::balance::zero",typeArguments:[o[0]]});return t.moveCall({target:`${vu.AggregatorConfig.kriyaV3PackageId}::trade::repay_flash_swap`,arguments:[t.object(e),f,h,d,t.object(vu.AggregatorConfig.kriyaV3Version)],typeArguments:o}),t.moveCall({target:"0x2::coin::from_balance",arguments:[c],typeArguments:[o[0]]})})}var xE={},spe=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(xE,"__esModule",{value:!0});xE.makeAftermathPTB=ope;const Gc=co;function ope(t,e,r,n,i,s){return spe(this,void 0,void 0,function*(){const o=[t.object(e),t.object(Gc.AggregatorConfig.aftermathPoolRegistry),t.object(Gc.AggregatorConfig.aftermathFeeVault),t.object(Gc.AggregatorConfig.aftermathTreasury),t.object(Gc.AggregatorConfig.aftermathInsuranceFund),t.object(Gc.AggregatorConfig.aftermathReferralVault),r,t.pure.u64(n),t.pure.u64("800000000000000000")];return t.moveCall({target:`${Gc.AggregatorConfig.aftermathPackageId}::swap::swap_exact_in`,typeArguments:s,arguments:o})})}var SE={},ape=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(SE,"__esModule",{value:!0});SE.makeKriyaV2PTB=cpe;const upe=co;function cpe(t,e,r,n,i,s,o){return ape(this,void 0,void 0,function*(){const a=s?"swap_token_x":"swap_token_y",u=[t.object(e),n,typeof i=="number"?t.pure.u64(i):i,t.pure.u64(0)],[c]=t.moveCall({target:`${upe.AggregatorConfig.kriyaV2PackageId}::spot_dex::${a}`,typeArguments:o,arguments:u});return c})}var EE={},lpe=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(EE,"__esModule",{value:!0});EE.makeDeepbookPTB=fpe;const kb=co;function fpe(t,e,r,n,i,s){return lpe(this,void 0,void 0,function*(){let o,a;const u=t.moveCall({target:"0x2::coin::zero",typeArguments:[kb.AggregatorConfig.deepTokenAddress]});i?(o=r,a=t.moveCall({target:"0x2::coin::zero",typeArguments:[s[1]]})):(o=t.moveCall({target:"0x2::coin::zero",typeArguments:[s[0]]}),a=r);const[c,l,f]=t.moveCall({target:`${kb.AggregatorConfig.deepbookPackageId}::pool::swap_exact_quantity`,arguments:[t.object(e),o,a,u,t.pure.u64(n),t.object(kb.AggregatorConfig.clockAddress)],typeArguments:s});return{baseCoinOut:c,quoteCoinOut:l,deepCoinOut:f}})}var Jg=ft&&ft.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(f){o(f)}}function u(l){try{c(n.throw(l))}catch(f){o(f)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(t,e||[])).next())})};Object.defineProperty(Vf,"__esModule",{value:!0});Vf.getCoins=bD;Vf.getCoinPTB=wpe;Vf.buildSwapPTBFromQuote=wD;Vf.swapPTB=_pe;const dpe=co,hpe=kr,ppe=wE,mpe=vD,ype=_E,gpe=xE,vpe=SE,_T=EE,bpe=Xg;function bD(t,e){return Jg(this,arguments,void 0,function*(r,n,i="0x2::sui::SUI"){const s=i.address?i.address:i;return yield r.getCoins({owner:n,coinType:s})})}function wpe(t,e,r,n,i){return Jg(this,void 0,void 0,function*(){let s;if(e==="0x2::sui::SUI")s=n.splitCoins(n.gas,[n.pure.u64(r)]);else{const o=yield bD(i,t,e);if(!o.data[0])throw new Error("Insufficient balance for this coin");const a=(0,hpe.returnMergedCoins)(n,o);s=n.splitCoins(a,[n.pure.u64(r)])}return s})}function wD(t,e,r,n,i){return Jg(this,arguments,void 0,function*(s,o,a,u,c,l=0){if(!c.routes||c.routes.length===0)throw new Error("No routes found in data");const f=c.from,d=c.target,h=JSON.parse(JSON.stringify(c.routes));if(console.log(`tokenA: ${f}, tokenB: ${d}`),Number(c.amount_in)!==c.routes.reduce((g,x)=>g+Number(x.amount_in),0))throw new Error("Outer amount_in does not match the sum of route amount_in values");const m=o.moveCall({target:"0x2::coin::zero",typeArguments:[d]});for(let g=0;g{const a=new Date,u=a.getMonth()+1,c=a.getDate(),l=a.getHours(),f=parseFloat(`0.${u.toString().padStart(2,"0")}${c.toString().padStart(2,"0")}${l.toString().padStart(2,"0")}`)*10**md.wUSDC.decimal;console.log("borrow_amount: "+f);const d=new kh;d.setSender(t.address);const h=md.pool[md.Sui.symbol],[m]=d.splitCoins(d.gas,[1e9]);await bm.depositCoin(d,h,m,1e9),console.log("deposit_amount count",m.NestedResult),console.log("borrow count",f);const g=md.pool[md.wUSDC.symbol],[x]=await bm.borrowCoin(d,g,f);await bm.depositCoin(d,g,x,f),console.log("signAndExecuteTransaction"),await e({transaction:d,chain:"sui:mainnet"},{onSuccess:_=>{console.log("executed transaction success",_),n(_.digest)},onError:_=>{console.log("executed transaction error",_),s(_.message)}})};return V.jsx(zh,{children:V.jsxs(Ss,{gap:"3",direction:"column",children:[V.jsx(h8,{onClick:o,children:"Deposit and Borrow Sui"}),V.jsx(nc,{children:r?`Transaction submitted: ${r}`:i})]})})}function Spe(){return V.jsxs(V.Fragment,{children:[V.jsxs(Ss,{position:"sticky",px:"4",py:"2",justify:"between",style:{borderBottom:"1px solid var(--gray-a2)"},children:[V.jsx(M1,{children:V.jsx(Eg,{children:"dApp Starter Template"})}),V.jsx(M1,{children:V.jsx(xY,{})})]}),V.jsxs(zh,{children:[V.jsx(zh,{mt:"5",pt:"2",px:"4",style:{background:"var(--gray-a2)",minHeight:500},children:V.jsx(oZ,{})}),V.jsx(xpe,{})]})]})}const{networkConfig:Epe,useNetworkVariable:Xpe,useNetworkVariables:Jpe}=LY({devnet:{url:W0("devnet")},testnet:{url:W0("testnet")},mainnet:{url:W0("mainnet")}}),Ope=new LU;Ab.createRoot(document.getElementById("root")).render(V.jsx(Ws.StrictMode,{children:V.jsx(c8,{appearance:"dark",children:V.jsx(GU,{client:Ope,children:V.jsx(aY,{networks:Epe,defaultNetwork:"testnet",children:V.jsx(UY,{autoConnect:!0,children:V.jsx(Spe,{})})})})})})); diff --git a/mover/janrone/code/my-first-sui-dapp/dist/assets/index-DtuJxWbU.css b/mover/janrone/code/my-first-sui-dapp/dist/assets/index-DtuJxWbU.css new file mode 100644 index 000000000..c5da061a4 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/dist/assets/index-DtuJxWbU.css @@ -0,0 +1 @@ +[data-dapp-kit]:where(*),[data-dapp-kit] :where(*){box-sizing:border-box;color:var(--dapp-kit-colors-body);font-family:var(--dapp-kit-typography-fontFamily);font-size:var(--dapp-kit-fontWeights-normal);font-style:var(--dapp-kit-typography-fontStyle);font-weight:var(--dapp-kit-fontWeights-normal);line-height:var(--dapp-kit-typography-lineHeight);letter-spacing:var(--dapp-kit-typography-letterSpacing)}[data-dapp-kit]:where(button),[data-dapp-kit] :where(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;border:0;padding:0;margin:0}[data-dapp-kit]:where(a),[data-dapp-kit] :where(a){text-decoration:none;color:inherit;outline:none}[data-dapp-kit]:where(ol,ul),[data-dapp-kit] :where(ol,ul){list-style:none;margin:0;padding:0}[data-dapp-kit]:where(h1,h2,h3,h4,h5,h6),[data-dapp-kit] :where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit;margin:0}[data-dapp-kit].Heading_headingVariants_size_sm__1aa835k1,[data-dapp-kit] .Heading_headingVariants_size_sm__1aa835k1{font-size:var(--dapp-kit-fontSizes-small)}[data-dapp-kit].Heading_headingVariants_size_md__1aa835k2,[data-dapp-kit] .Heading_headingVariants_size_md__1aa835k2{font-size:var(--dapp-kit-fontSizes-medium)}[data-dapp-kit].Heading_headingVariants_size_lg__1aa835k3,[data-dapp-kit] .Heading_headingVariants_size_lg__1aa835k3{font-size:var(--dapp-kit-fontSizes-large)}[data-dapp-kit].Heading_headingVariants_size_xl__1aa835k4,[data-dapp-kit] .Heading_headingVariants_size_xl__1aa835k4{font-size:var(--dapp-kit-fontSizes-xlarge)}[data-dapp-kit].Heading_headingVariants_weight_normal__1aa835k5,[data-dapp-kit] .Heading_headingVariants_weight_normal__1aa835k5{font-weight:var(--dapp-kit-fontWeights-normal)}[data-dapp-kit].Heading_headingVariants_weight_bold__1aa835k6,[data-dapp-kit] .Heading_headingVariants_weight_bold__1aa835k6{font-weight:var(--dapp-kit-fontWeights-bold)}[data-dapp-kit].Heading_headingVariants_truncate_true__1aa835k7,[data-dapp-kit] .Heading_headingVariants_truncate_true__1aa835k7{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-dapp-kit].IconButton_container__s6n7bq0,[data-dapp-kit] .IconButton_container__s6n7bq0{border-radius:9999px;padding:8px;color:var(--dapp-kit-colors-iconButton);background-color:var(--dapp-kit-backgroundColors-iconButton)}[data-dapp-kit].IconButton_container__s6n7bq0:hover,[data-dapp-kit] .IconButton_container__s6n7bq0:hover{background-color:var(--dapp-kit-backgroundColors-iconButtonHover)}[data-dapp-kit].ConnectModal_overlay__gz8z90,[data-dapp-kit] .ConnectModal_overlay__gz8z90{background-color:var(--dapp-kit-backgroundColors-modalOverlay);-webkit-backdrop-filter:var(--dapp-kit-blurs-modalOverlay);backdrop-filter:var(--dapp-kit-blurs-modalOverlay);position:fixed;top:0;right:0;bottom:0;left:0;z-index:999999999}[data-dapp-kit].ConnectModal_title__gz8z91,[data-dapp-kit] .ConnectModal_title__gz8z91{padding-left:8px}[data-dapp-kit].ConnectModal_content__gz8z92,[data-dapp-kit] .ConnectModal_content__gz8z92{background-color:var(--dapp-kit-backgroundColors-modalPrimary);border-radius:var(--dapp-kit-radii-xlarge);color:var(--dapp-kit-colors-body);position:fixed;bottom:16px;left:16px;right:16px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;min-height:50vh;max-height:85vh;max-width:700px}[data-dapp-kit].ConnectModal_whatIsAWalletButton__gz8z93,[data-dapp-kit] .ConnectModal_whatIsAWalletButton__gz8z93{background-color:var(--dapp-kit-backgroundColors-modalSecondary);padding:16px}[data-dapp-kit].ConnectModal_viewContainer__gz8z94,[data-dapp-kit] .ConnectModal_viewContainer__gz8z94{display:none;padding:20px;flex-grow:1}[data-dapp-kit].ConnectModal_selectedViewContainer__gz8z95,[data-dapp-kit] .ConnectModal_selectedViewContainer__gz8z95{display:flex}[data-dapp-kit].ConnectModal_backButtonContainer__gz8z96,[data-dapp-kit] .ConnectModal_backButtonContainer__gz8z96{position:absolute;top:20px;left:20px}[data-dapp-kit].ConnectModal_closeButtonContainer__gz8z97,[data-dapp-kit] .ConnectModal_closeButtonContainer__gz8z97{position:absolute;top:16px;right:16px}[data-dapp-kit].ConnectModal_walletListContent__gz8z98,[data-dapp-kit] .ConnectModal_walletListContent__gz8z98{display:flex;flex-direction:column;flex-grow:1;gap:24px;padding:20px;background-color:var(--dapp-kit-backgroundColors-modalPrimary)}[data-dapp-kit].ConnectModal_walletListContainer__gz8z99,[data-dapp-kit] .ConnectModal_walletListContainer__gz8z99{display:flex;justify-content:space-between;flex-direction:column;flex-grow:1}[data-dapp-kit].ConnectModal_walletListContainerWithViewSelected__gz8z9a,[data-dapp-kit] .ConnectModal_walletListContainerWithViewSelected__gz8z9a{display:none}@media screen and (min-width: 768px){[data-dapp-kit].ConnectModal_content__gz8z92,[data-dapp-kit] .ConnectModal_content__gz8z92{flex-direction:row;width:100%;top:50%;left:50%;transform:translate(-50%,-50%)}[data-dapp-kit].ConnectModal_whatIsAWalletButton__gz8z93,[data-dapp-kit] .ConnectModal_whatIsAWalletButton__gz8z93{display:none}[data-dapp-kit].ConnectModal_viewContainer__gz8z94,[data-dapp-kit] .ConnectModal_viewContainer__gz8z94{display:flex}[data-dapp-kit].ConnectModal_backButtonContainer__gz8z96,[data-dapp-kit] .ConnectModal_backButtonContainer__gz8z96{display:none}[data-dapp-kit].ConnectModal_walletListContent__gz8z98,[data-dapp-kit] .ConnectModal_walletListContent__gz8z98{background-color:var(--dapp-kit-backgroundColors-modalSecondary)}[data-dapp-kit].ConnectModal_walletListContainer__gz8z99,[data-dapp-kit] .ConnectModal_walletListContainer__gz8z99{flex-direction:row;flex-basis:240px;flex-grow:0;flex-shrink:0}[data-dapp-kit].ConnectModal_walletListContainerWithViewSelected__gz8z9a,[data-dapp-kit] .ConnectModal_walletListContainerWithViewSelected__gz8z9a{display:flex}}[data-dapp-kit].Button_buttonVariants__x1s81q0,[data-dapp-kit] .Button_buttonVariants__x1s81q0{display:inline-flex;align-items:center;justify-content:center;font-weight:var(--dapp-kit-fontWeights-medium)}[data-dapp-kit].Button_buttonVariants__x1s81q0:disabled,[data-dapp-kit] .Button_buttonVariants__x1s81q0:disabled{opacity:.5}[data-dapp-kit].Button_buttonVariants_variant_primary__x1s81q1,[data-dapp-kit] .Button_buttonVariants_variant_primary__x1s81q1{background-color:var(--dapp-kit-backgroundColors-primaryButton);color:var(--dapp-kit-colors-primaryButton);box-shadow:var(--dapp-kit-shadows-primaryButton)}[data-dapp-kit].Button_buttonVariants_variant_primary__x1s81q1:hover,[data-dapp-kit] .Button_buttonVariants_variant_primary__x1s81q1:hover{background-color:var(--dapp-kit-backgroundColors-primaryButtonHover)}[data-dapp-kit].Button_buttonVariants_variant_outline__x1s81q2,[data-dapp-kit] .Button_buttonVariants_variant_outline__x1s81q2{border-width:1px;border-style:solid;border-color:var(--dapp-kit-borderColors-outlineButton);color:var(--dapp-kit-colors-outlineButton)}[data-dapp-kit].Button_buttonVariants_variant_outline__x1s81q2:hover,[data-dapp-kit] .Button_buttonVariants_variant_outline__x1s81q2:hover{background-color:var(--dapp-kit-backgroundColors-outlineButtonHover)}[data-dapp-kit].Button_buttonVariants_size_md__x1s81q3,[data-dapp-kit] .Button_buttonVariants_size_md__x1s81q3{border-radius:var(--dapp-kit-radii-medium);padding:8px 16px}[data-dapp-kit].Button_buttonVariants_size_lg__x1s81q4,[data-dapp-kit] .Button_buttonVariants_size_lg__x1s81q4{border-radius:var(--dapp-kit-radii-large);padding:16px 24px}[data-dapp-kit].Text_textVariants_size_sm__2bv1ur1,[data-dapp-kit] .Text_textVariants_size_sm__2bv1ur1{font-size:var(--dapp-kit-fontSizes-small)}[data-dapp-kit].Text_textVariants_weight_normal__2bv1ur2,[data-dapp-kit] .Text_textVariants_weight_normal__2bv1ur2{font-weight:var(--dapp-kit-fontWeights-normal)}[data-dapp-kit].Text_textVariants_weight_medium__2bv1ur3,[data-dapp-kit] .Text_textVariants_weight_medium__2bv1ur3{font-weight:var(--dapp-kit-fontWeights-medium)}[data-dapp-kit].Text_textVariants_weight_bold__2bv1ur4,[data-dapp-kit] .Text_textVariants_weight_bold__2bv1ur4{font-weight:var(--dapp-kit-fontWeights-bold)}[data-dapp-kit].Text_textVariants_color_muted__2bv1ur5,[data-dapp-kit] .Text_textVariants_color_muted__2bv1ur5{color:var(--dapp-kit-colors-bodyMuted)}[data-dapp-kit].Text_textVariants_color_danger__2bv1ur6,[data-dapp-kit] .Text_textVariants_color_danger__2bv1ur6{color:var(--dapp-kit-colors-bodyDanger)}[data-dapp-kit].Text_textVariants_mono_true__2bv1ur7,[data-dapp-kit] .Text_textVariants_mono_true__2bv1ur7{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}[data-dapp-kit].ConnectionStatus_container__nckm2d0,[data-dapp-kit] .ConnectionStatus_container__nckm2d0{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}[data-dapp-kit].ConnectionStatus_walletIcon__nckm2d1,[data-dapp-kit] .ConnectionStatus_walletIcon__nckm2d1{-o-object-fit:cover;object-fit:cover;width:72px;height:72px;border-radius:var(--dapp-kit-radii-large)}[data-dapp-kit].ConnectionStatus_title__nckm2d2,[data-dapp-kit] .ConnectionStatus_title__nckm2d2{margin-top:12px}[data-dapp-kit].ConnectionStatus_connectionStatus__nckm2d3,[data-dapp-kit] .ConnectionStatus_connectionStatus__nckm2d3{margin-top:4px}[data-dapp-kit].ConnectionStatus_retryButtonContainer__nckm2d4,[data-dapp-kit] .ConnectionStatus_retryButtonContainer__nckm2d4{position:absolute;bottom:20px;right:20px}[data-dapp-kit].InfoSection_container__1wtioi70,[data-dapp-kit] .InfoSection_container__1wtioi70{display:flex;flex-direction:column;gap:4px}[data-dapp-kit].GettingStarted_container__1fp07e10,[data-dapp-kit] .GettingStarted_container__1fp07e10{display:flex;flex-direction:column;align-items:center}[data-dapp-kit].GettingStarted_content__1fp07e11,[data-dapp-kit] .GettingStarted_content__1fp07e11{display:flex;flex-direction:column;justify-content:center;flex-grow:1;gap:20px;padding:40px}[data-dapp-kit].GettingStarted_installButtonContainer__1fp07e12,[data-dapp-kit] .GettingStarted_installButtonContainer__1fp07e12{position:absolute;bottom:20px;right:20px}[data-dapp-kit].WhatIsAWallet_container__1ktpkq90,[data-dapp-kit] .WhatIsAWallet_container__1ktpkq90{display:flex;flex-direction:column;align-items:center}[data-dapp-kit].WhatIsAWallet_content__1ktpkq91,[data-dapp-kit] .WhatIsAWallet_content__1ktpkq91{display:flex;flex-direction:column;justify-content:center;flex-grow:1;gap:20px;padding:40px}[data-dapp-kit].WalletList_container__1v2s6cz0,[data-dapp-kit] .WalletList_container__1v2s6cz0{display:flex;flex-direction:column;gap:4px}[data-dapp-kit].WalletListItem_container__1dqqtqs0,[data-dapp-kit] .WalletListItem_container__1dqqtqs0{display:flex}[data-dapp-kit].WalletListItem_walletItem__1dqqtqs1,[data-dapp-kit] .WalletListItem_walletItem__1dqqtqs1{display:flex;align-items:center;flex-grow:1;padding:8px;gap:8px;border-radius:var(--dapp-kit-radii-large)}[data-dapp-kit].WalletListItem_walletItem__1dqqtqs1:hover,[data-dapp-kit] .WalletListItem_walletItem__1dqqtqs1:hover{background-color:var(--dapp-kit-backgroundColors-walletItemHover)}[data-dapp-kit].WalletListItem_selectedWalletItem__1dqqtqs2,[data-dapp-kit] .WalletListItem_selectedWalletItem__1dqqtqs2{background-color:var(--dapp-kit-backgroundColors-walletItemSelected);box-shadow:0 2px 6px #0000000d}[data-dapp-kit].WalletListItem_walletIcon__1dqqtqs3,[data-dapp-kit] .WalletListItem_walletIcon__1dqqtqs3{width:28px;height:28px;flex-shrink:0;-o-object-fit:cover;object-fit:cover;border-radius:var(--dapp-kit-radii-small)}[data-dapp-kit].AccountDropdownMenu_connectedAccount__div2ql0,[data-dapp-kit] .AccountDropdownMenu_connectedAccount__div2ql0{gap:8px}[data-dapp-kit].AccountDropdownMenu_menuContainer__div2ql1,[data-dapp-kit] .AccountDropdownMenu_menuContainer__div2ql1{z-index:999999999}[data-dapp-kit].AccountDropdownMenu_menuContent__div2ql2,[data-dapp-kit] .AccountDropdownMenu_menuContent__div2ql2{display:flex;flex-direction:column;width:180px;max-height:200px;margin-top:4px;padding:8px;gap:8px;border-radius:var(--dapp-kit-radii-large);background-color:var(--dapp-kit-backgroundColors-dropdownMenu)}[data-dapp-kit].AccountDropdownMenu_menuItem__div2ql3,[data-dapp-kit] .AccountDropdownMenu_menuItem__div2ql3{padding:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;display:flex;align-items:center;border-radius:var(--dapp-kit-radii-large)}[data-dapp-kit].AccountDropdownMenu_menuItem__div2ql3[data-highlighted],[data-dapp-kit] .AccountDropdownMenu_menuItem__div2ql3[data-highlighted]{background-color:var(--dapp-kit-backgroundColors-primaryButton)}[data-dapp-kit].AccountDropdownMenu_switchAccountMenuItem__div2ql4,[data-dapp-kit] .AccountDropdownMenu_switchAccountMenuItem__div2ql4{display:flex;justify-content:space-between;align-items:center}[data-dapp-kit].AccountDropdownMenu_separator__div2ql5,[data-dapp-kit] .AccountDropdownMenu_separator__div2ql5{height:1px;flex-shrink:0;background-color:var(--dapp-kit-backgroundColors-dropdownMenuSeparator)}:root,.light,.light-theme{--gray-1: #fcfcfc;--gray-2: #f9f9f9;--gray-3: #f0f0f0;--gray-4: #e8e8e8;--gray-5: #e0e0e0;--gray-6: #d9d9d9;--gray-7: #cecece;--gray-8: #bbbbbb;--gray-9: #8d8d8d;--gray-10: #838383;--gray-11: #646464;--gray-12: #202020;--gray-a1: #00000003;--gray-a2: #00000006;--gray-a3: #0000000f;--gray-a4: #00000017;--gray-a5: #0000001f;--gray-a6: #00000026;--gray-a7: #00000031;--gray-a8: #00000044;--gray-a9: #00000072;--gray-a10: #0000007c;--gray-a11: #0000009b;--gray-a12: #000000df;--mauve-1: #fdfcfd;--mauve-2: #faf9fb;--mauve-3: #f2eff3;--mauve-4: #eae7ec;--mauve-5: #e3dfe6;--mauve-6: #dbd8e0;--mauve-7: #d0cdd7;--mauve-8: #bcbac7;--mauve-9: #8e8c99;--mauve-10: #84828e;--mauve-11: #65636d;--mauve-12: #211f26;--mauve-a1: #55005503;--mauve-a2: #2b005506;--mauve-a3: #30004010;--mauve-a4: #20003618;--mauve-a5: #20003820;--mauve-a6: #14003527;--mauve-a7: #10003332;--mauve-a8: #08003145;--mauve-a9: #05001d73;--mauve-a10: #0500197d;--mauve-a11: #0400119c;--mauve-a12: #020008e0;--slate-1: #fcfcfd;--slate-2: #f9f9fb;--slate-3: #f0f0f3;--slate-4: #e8e8ec;--slate-5: #e0e1e6;--slate-6: #d9d9e0;--slate-7: #cdced6;--slate-8: #b9bbc6;--slate-9: #8b8d98;--slate-10: #80838d;--slate-11: #60646c;--slate-12: #1c2024;--slate-a1: #00005503;--slate-a2: #00005506;--slate-a3: #0000330f;--slate-a4: #00002d17;--slate-a5: #0009321f;--slate-a6: #00002f26;--slate-a7: #00062e32;--slate-a8: #00083046;--slate-a9: #00051d74;--slate-a10: #00071b7f;--slate-a11: #0007149f;--slate-a12: #000509e3;--sage-1: #fbfdfc;--sage-2: #f7f9f8;--sage-3: #eef1f0;--sage-4: #e6e9e8;--sage-5: #dfe2e0;--sage-6: #d7dad9;--sage-7: #cbcfcd;--sage-8: #b8bcba;--sage-9: #868e8b;--sage-10: #7c8481;--sage-11: #5f6563;--sage-12: #1a211e;--sage-a1: #00804004;--sage-a2: #00402008;--sage-a3: #002d1e11;--sage-a4: #001f1519;--sage-a5: #00180820;--sage-a6: #00140d28;--sage-a7: #00140a34;--sage-a8: #000f0847;--sage-a9: #00110b79;--sage-a10: #00100a83;--sage-a11: #000a07a0;--sage-a12: #000805e5;--olive-1: #fcfdfc;--olive-2: #f8faf8;--olive-3: #eff1ef;--olive-4: #e7e9e7;--olive-5: #dfe2df;--olive-6: #d7dad7;--olive-7: #cccfcc;--olive-8: #b9bcb8;--olive-9: #898e87;--olive-10: #7f847d;--olive-11: #60655f;--olive-12: #1d211c;--olive-a1: #00550003;--olive-a2: #00490007;--olive-a3: #00200010;--olive-a4: #00160018;--olive-a5: #00180020;--olive-a6: #00140028;--olive-a7: #000f0033;--olive-a8: #040f0047;--olive-a9: #050f0078;--olive-a10: #040e0082;--olive-a11: #020a00a0;--olive-a12: #010600e3;--sand-1: #fdfdfc;--sand-2: #f9f9f8;--sand-3: #f1f0ef;--sand-4: #e9e8e6;--sand-5: #e2e1de;--sand-6: #dad9d6;--sand-7: #cfceca;--sand-8: #bcbbb5;--sand-9: #8d8d86;--sand-10: #82827c;--sand-11: #63635e;--sand-12: #21201c;--sand-a1: #55550003;--sand-a2: #25250007;--sand-a3: #20100010;--sand-a4: #1f150019;--sand-a5: #1f180021;--sand-a6: #19130029;--sand-a7: #19140035;--sand-a8: #1915014a;--sand-a9: #0f0f0079;--sand-a10: #0c0c0083;--sand-a11: #080800a1;--sand-a12: #060500e3;--amber-1: #fefdfb;--amber-2: #fefbe9;--amber-3: #fff7c2;--amber-4: #ffee9c;--amber-5: #fbe577;--amber-6: #f3d673;--amber-7: #e9c162;--amber-8: #e2a336;--amber-9: #ffc53d;--amber-10: #ffba18;--amber-11: #ab6400;--amber-12: #4f3422;--amber-a1: #c0800004;--amber-a2: #f4d10016;--amber-a3: #ffde003d;--amber-a4: #ffd40063;--amber-a5: #f8cf0088;--amber-a6: #eab5008c;--amber-a7: #dc9b009d;--amber-a8: #da8a00c9;--amber-a9: #ffb300c2;--amber-a10: #ffb300e7;--amber-a11: #ab6400;--amber-a12: #341500dd;--blue-1: #fbfdff;--blue-2: #f4faff;--blue-3: #e6f4fe;--blue-4: #d5efff;--blue-5: #c2e5ff;--blue-6: #acd8fc;--blue-7: #8ec8f6;--blue-8: #5eb1ef;--blue-9: #0090ff;--blue-10: #0588f0;--blue-11: #0d74ce;--blue-12: #113264;--blue-a1: #0080ff04;--blue-a2: #008cff0b;--blue-a3: #008ff519;--blue-a4: #009eff2a;--blue-a5: #0093ff3d;--blue-a6: #0088f653;--blue-a7: #0083eb71;--blue-a8: #0084e6a1;--blue-a9: #0090ff;--blue-a10: #0086f0fa;--blue-a11: #006dcbf2;--blue-a12: #002359ee;--bronze-1: #fdfcfc;--bronze-2: #fdf7f5;--bronze-3: #f6edea;--bronze-4: #efe4df;--bronze-5: #e7d9d3;--bronze-6: #dfcdc5;--bronze-7: #d3bcb3;--bronze-8: #c2a499;--bronze-9: #a18072;--bronze-10: #957468;--bronze-11: #7d5e54;--bronze-12: #43302b;--bronze-a1: #55000003;--bronze-a2: #cc33000a;--bronze-a3: #92250015;--bronze-a4: #80280020;--bronze-a5: #7423002c;--bronze-a6: #7324003a;--bronze-a7: #6c1f004c;--bronze-a8: #671c0066;--bronze-a9: #551a008d;--bronze-a10: #4c150097;--bronze-a11: #3d0f00ab;--bronze-a12: #1d0600d4;--brown-1: #fefdfc;--brown-2: #fcf9f6;--brown-3: #f6eee7;--brown-4: #f0e4d9;--brown-5: #ebdaca;--brown-6: #e4cdb7;--brown-7: #dcbc9f;--brown-8: #cea37e;--brown-9: #ad7f58;--brown-10: #a07553;--brown-11: #815e46;--brown-12: #3e332e;--brown-a1: #aa550003;--brown-a2: #aa550009;--brown-a3: #a04b0018;--brown-a4: #9b4a0026;--brown-a5: #9f4d0035;--brown-a6: #a04e0048;--brown-a7: #a34e0060;--brown-a8: #9f4a0081;--brown-a9: #823c00a7;--brown-a10: #723300ac;--brown-a11: #522100b9;--brown-a12: #140600d1;--crimson-1: #fffcfd;--crimson-2: #fef7f9;--crimson-3: #ffe9f0;--crimson-4: #fedce7;--crimson-5: #facedd;--crimson-6: #f3bed1;--crimson-7: #eaacc3;--crimson-8: #e093b2;--crimson-9: #e93d82;--crimson-10: #df3478;--crimson-11: #cb1d63;--crimson-12: #621639;--crimson-a1: #ff005503;--crimson-a2: #e0004008;--crimson-a3: #ff005216;--crimson-a4: #f8005123;--crimson-a5: #e5004f31;--crimson-a6: #d0004b41;--crimson-a7: #bf004753;--crimson-a8: #b6004a6c;--crimson-a9: #e2005bc2;--crimson-a10: #d70056cb;--crimson-a11: #c4004fe2;--crimson-a12: #530026e9;--cyan-1: #fafdfe;--cyan-2: #f2fafb;--cyan-3: #def7f9;--cyan-4: #caf1f6;--cyan-5: #b5e9f0;--cyan-6: #9ddde7;--cyan-7: #7dcedc;--cyan-8: #3db9cf;--cyan-9: #00a2c7;--cyan-10: #0797b9;--cyan-11: #107d98;--cyan-12: #0d3c48;--cyan-a1: #0099cc05;--cyan-a2: #009db10d;--cyan-a3: #00c2d121;--cyan-a4: #00bcd435;--cyan-a5: #01b4cc4a;--cyan-a6: #00a7c162;--cyan-a7: #009fbb82;--cyan-a8: #00a3c0c2;--cyan-a9: #00a2c7;--cyan-a10: #0094b7f8;--cyan-a11: #007491ef;--cyan-a12: #00323ef2;--gold-1: #fdfdfc;--gold-2: #faf9f2;--gold-3: #f2f0e7;--gold-4: #eae6db;--gold-5: #e1dccf;--gold-6: #d8d0bf;--gold-7: #cbc0aa;--gold-8: #b9a88d;--gold-9: #978365;--gold-10: #8c7a5e;--gold-11: #71624b;--gold-12: #3b352b;--gold-a1: #55550003;--gold-a2: #9d8a000d;--gold-a3: #75600018;--gold-a4: #6b4e0024;--gold-a5: #60460030;--gold-a6: #64440040;--gold-a7: #63420055;--gold-a8: #633d0072;--gold-a9: #5332009a;--gold-a10: #492d00a1;--gold-a11: #362100b4;--gold-a12: #130c00d4;--grass-1: #fbfefb;--grass-2: #f5fbf5;--grass-3: #e9f6e9;--grass-4: #daf1db;--grass-5: #c9e8ca;--grass-6: #b2ddb5;--grass-7: #94ce9a;--grass-8: #65ba74;--grass-9: #46a758;--grass-10: #3e9b4f;--grass-11: #2a7e3b;--grass-12: #203c25;--grass-a1: #00c00004;--grass-a2: #0099000a;--grass-a3: #00970016;--grass-a4: #009f0725;--grass-a5: #00930536;--grass-a6: #008f0a4d;--grass-a7: #018b0f6b;--grass-a8: #008d199a;--grass-a9: #008619b9;--grass-a10: #007b17c1;--grass-a11: #006514d5;--grass-a12: #002006df;--green-1: #fbfefc;--green-2: #f4fbf6;--green-3: #e6f6eb;--green-4: #d6f1df;--green-5: #c4e8d1;--green-6: #adddc0;--green-7: #8eceaa;--green-8: #5bb98b;--green-9: #30a46c;--green-10: #2b9a66;--green-11: #218358;--green-12: #193b2d;--green-a1: #00c04004;--green-a2: #00a32f0b;--green-a3: #00a43319;--green-a4: #00a83829;--green-a5: #019c393b;--green-a6: #00963c52;--green-a7: #00914071;--green-a8: #00924ba4;--green-a9: #008f4acf;--green-a10: #008647d4;--green-a11: #00713fde;--green-a12: #002616e6;--indigo-1: #fdfdfe;--indigo-2: #f7f9ff;--indigo-3: #edf2fe;--indigo-4: #e1e9ff;--indigo-5: #d2deff;--indigo-6: #c1d0ff;--indigo-7: #abbdf9;--indigo-8: #8da4ef;--indigo-9: #3e63dd;--indigo-10: #3358d4;--indigo-11: #3a5bc7;--indigo-12: #1f2d5c;--indigo-a1: #00008002;--indigo-a2: #0040ff08;--indigo-a3: #0047f112;--indigo-a4: #0044ff1e;--indigo-a5: #0044ff2d;--indigo-a6: #003eff3e;--indigo-a7: #0037ed54;--indigo-a8: #0034dc72;--indigo-a9: #0031d2c1;--indigo-a10: #002ec9cc;--indigo-a11: #002bb7c5;--indigo-a12: #001046e0;--iris-1: #fdfdff;--iris-2: #f8f8ff;--iris-3: #f0f1fe;--iris-4: #e6e7ff;--iris-5: #dadcff;--iris-6: #cbcdff;--iris-7: #b8baf8;--iris-8: #9b9ef0;--iris-9: #5b5bd6;--iris-10: #5151cd;--iris-11: #5753c6;--iris-12: #272962;--iris-a1: #0000ff02;--iris-a2: #0000ff07;--iris-a3: #0011ee0f;--iris-a4: #000bff19;--iris-a5: #000eff25;--iris-a6: #000aff34;--iris-a7: #0008e647;--iris-a8: #0008d964;--iris-a9: #0000c0a4;--iris-a10: #0000b6ae;--iris-a11: #0600abac;--iris-a12: #000246d8;--jade-1: #fbfefd;--jade-2: #f4fbf7;--jade-3: #e6f7ed;--jade-4: #d6f1e3;--jade-5: #c3e9d7;--jade-6: #acdec8;--jade-7: #8bceb6;--jade-8: #56ba9f;--jade-9: #29a383;--jade-10: #26997b;--jade-11: #208368;--jade-12: #1d3b31;--jade-a1: #00c08004;--jade-a2: #00a3460b;--jade-a3: #00ae4819;--jade-a4: #00a85129;--jade-a5: #00a2553c;--jade-a6: #009a5753;--jade-a7: #00945f74;--jade-a8: #00976ea9;--jade-a9: #00916bd6;--jade-a10: #008764d9;--jade-a11: #007152df;--jade-a12: #002217e2;--lime-1: #fcfdfa;--lime-2: #f8faf3;--lime-3: #eef6d6;--lime-4: #e2f0bd;--lime-5: #d3e7a6;--lime-6: #c2da91;--lime-7: #abc978;--lime-8: #8db654;--lime-9: #bdee63;--lime-10: #b0e64c;--lime-11: #5c7c2f;--lime-12: #37401c;--lime-a1: #66990005;--lime-a2: #6b95000c;--lime-a3: #96c80029;--lime-a4: #8fc60042;--lime-a5: #81bb0059;--lime-a6: #72aa006e;--lime-a7: #61990087;--lime-a8: #559200ab;--lime-a9: #93e4009c;--lime-a10: #8fdc00b3;--lime-a11: #375f00d0;--lime-a12: #1e2900e3;--mint-1: #f9fefd;--mint-2: #f2fbf9;--mint-3: #ddf9f2;--mint-4: #c8f4e9;--mint-5: #b3ecde;--mint-6: #9ce0d0;--mint-7: #7ecfbd;--mint-8: #4cbba5;--mint-9: #86ead4;--mint-10: #7de0cb;--mint-11: #027864;--mint-12: #16433c;--mint-a1: #00d5aa06;--mint-a2: #00b18a0d;--mint-a3: #00d29e22;--mint-a4: #00cc9937;--mint-a5: #00c0914c;--mint-a6: #00b08663;--mint-a7: #00a17d81;--mint-a8: #009e7fb3;--mint-a9: #00d3a579;--mint-a10: #00c39982;--mint-a11: #007763fd;--mint-a12: #00312ae9;--orange-1: #fefcfb;--orange-2: #fff7ed;--orange-3: #ffefd6;--orange-4: #ffdfb5;--orange-5: #ffd19a;--orange-6: #ffc182;--orange-7: #f5ae73;--orange-8: #ec9455;--orange-9: #f76b15;--orange-10: #ef5f00;--orange-11: #cc4e00;--orange-12: #582d1d;--orange-a1: #c0400004;--orange-a2: #ff8e0012;--orange-a3: #ff9c0029;--orange-a4: #ff91014a;--orange-a5: #ff8b0065;--orange-a6: #ff81007d;--orange-a7: #ed6c008c;--orange-a8: #e35f00aa;--orange-a9: #f65e00ea;--orange-a10: #ef5f00;--orange-a11: #cc4e00;--orange-a12: #431200e2;--pink-1: #fffcfe;--pink-2: #fef7fb;--pink-3: #fee9f5;--pink-4: #fbdcef;--pink-5: #f6cee7;--pink-6: #efbfdd;--pink-7: #e7acd0;--pink-8: #dd93c2;--pink-9: #d6409f;--pink-10: #cf3897;--pink-11: #c2298a;--pink-12: #651249;--pink-a1: #ff00aa03;--pink-a2: #e0008008;--pink-a3: #f4008c16;--pink-a4: #e2008b23;--pink-a5: #d1008331;--pink-a6: #c0007840;--pink-a7: #b6006f53;--pink-a8: #af006f6c;--pink-a9: #c8007fbf;--pink-a10: #c2007ac7;--pink-a11: #b60074d6;--pink-a12: #59003bed;--plum-1: #fefcff;--plum-2: #fdf7fd;--plum-3: #fbebfb;--plum-4: #f7def8;--plum-5: #f2d1f3;--plum-6: #e9c2ec;--plum-7: #deade3;--plum-8: #cf91d8;--plum-9: #ab4aba;--plum-10: #a144af;--plum-11: #953ea3;--plum-12: #53195d;--plum-a1: #aa00ff03;--plum-a2: #c000c008;--plum-a3: #cc00cc14;--plum-a4: #c200c921;--plum-a5: #b700bd2e;--plum-a6: #a400b03d;--plum-a7: #9900a852;--plum-a8: #9000a56e;--plum-a9: #89009eb5;--plum-a10: #7f0092bb;--plum-a11: #730086c1;--plum-a12: #40004be6;--purple-1: #fefcfe;--purple-2: #fbf7fe;--purple-3: #f7edfe;--purple-4: #f2e2fc;--purple-5: #ead5f9;--purple-6: #e0c4f4;--purple-7: #d1afec;--purple-8: #be93e4;--purple-9: #8e4ec6;--purple-10: #8347b9;--purple-11: #8145b5;--purple-12: #402060;--purple-a1: #aa00aa03;--purple-a2: #8000e008;--purple-a3: #8e00f112;--purple-a4: #8d00e51d;--purple-a5: #8000db2a;--purple-a6: #7a01d03b;--purple-a7: #6d00c350;--purple-a8: #6600c06c;--purple-a9: #5c00adb1;--purple-a10: #53009eb8;--purple-a11: #52009aba;--purple-a12: #250049df;--red-1: #fffcfc;--red-2: #fff7f7;--red-3: #feebec;--red-4: #ffdbdc;--red-5: #ffcdce;--red-6: #fdbdbe;--red-7: #f4a9aa;--red-8: #eb8e90;--red-9: #e5484d;--red-10: #dc3e42;--red-11: #ce2c31;--red-12: #641723;--red-a1: #ff000003;--red-a2: #ff000008;--red-a3: #f3000d14;--red-a4: #ff000824;--red-a5: #ff000632;--red-a6: #f8000442;--red-a7: #df000356;--red-a8: #d2000571;--red-a9: #db0007b7;--red-a10: #d10005c1;--red-a11: #c40006d3;--red-a12: #55000de8;--ruby-1: #fffcfd;--ruby-2: #fff7f8;--ruby-3: #feeaed;--ruby-4: #ffdce1;--ruby-5: #ffced6;--ruby-6: #f8bfc8;--ruby-7: #efacb8;--ruby-8: #e592a3;--ruby-9: #e54666;--ruby-10: #dc3b5d;--ruby-11: #ca244d;--ruby-12: #64172b;--ruby-a1: #ff005503;--ruby-a2: #ff002008;--ruby-a3: #f3002515;--ruby-a4: #ff002523;--ruby-a5: #ff002a31;--ruby-a6: #e4002440;--ruby-a7: #ce002553;--ruby-a8: #c300286d;--ruby-a9: #db002cb9;--ruby-a10: #d2002cc4;--ruby-a11: #c10030db;--ruby-a12: #550016e8;--sky-1: #f9feff;--sky-2: #f1fafd;--sky-3: #e1f6fd;--sky-4: #d1f0fa;--sky-5: #bee7f5;--sky-6: #a9daed;--sky-7: #8dcae3;--sky-8: #60b3d7;--sky-9: #7ce2fe;--sky-10: #74daf8;--sky-11: #00749e;--sky-12: #1d3e56;--sky-a1: #00d5ff06;--sky-a2: #00a4db0e;--sky-a3: #00b3ee1e;--sky-a4: #00ace42e;--sky-a5: #00a1d841;--sky-a6: #0092ca56;--sky-a7: #0089c172;--sky-a8: #0085bf9f;--sky-a9: #00c7fe83;--sky-a10: #00bcf38b;--sky-a11: #00749e;--sky-a12: #002540e2;--teal-1: #fafefd;--teal-2: #f3fbf9;--teal-3: #e0f8f3;--teal-4: #ccf3ea;--teal-5: #b8eae0;--teal-6: #a1ded2;--teal-7: #83cdc1;--teal-8: #53b9ab;--teal-9: #12a594;--teal-10: #0d9b8a;--teal-11: #008573;--teal-12: #0d3d38;--teal-a1: #00cc9905;--teal-a2: #00aa800c;--teal-a3: #00c69d1f;--teal-a4: #00c39633;--teal-a5: #00b49047;--teal-a6: #00a6855e;--teal-a7: #0099807c;--teal-a8: #009783ac;--teal-a9: #009e8ced;--teal-a10: #009684f2;--teal-a11: #008573;--teal-a12: #00332df2;--tomato-1: #fffcfc;--tomato-2: #fff8f7;--tomato-3: #feebe7;--tomato-4: #ffdcd3;--tomato-5: #ffcdc2;--tomato-6: #fdbdaf;--tomato-7: #f5a898;--tomato-8: #ec8e7b;--tomato-9: #e54d2e;--tomato-10: #dd4425;--tomato-11: #d13415;--tomato-12: #5c271f;--tomato-a1: #ff000003;--tomato-a2: #ff200008;--tomato-a3: #f52b0018;--tomato-a4: #ff35002c;--tomato-a5: #ff2e003d;--tomato-a6: #f92d0050;--tomato-a7: #e7280067;--tomato-a8: #db250084;--tomato-a9: #df2600d1;--tomato-a10: #d72400da;--tomato-a11: #cd2200ea;--tomato-a12: #460900e0;--violet-1: #fdfcfe;--violet-2: #faf8ff;--violet-3: #f4f0fe;--violet-4: #ebe4ff;--violet-5: #e1d9ff;--violet-6: #d4cafe;--violet-7: #c2b5f5;--violet-8: #aa99ec;--violet-9: #6e56cf;--violet-10: #654dc4;--violet-11: #6550b9;--violet-12: #2f265f;--violet-a1: #5500aa03;--violet-a2: #4900ff07;--violet-a3: #4400ee0f;--violet-a4: #4300ff1b;--violet-a5: #3600ff26;--violet-a6: #3100fb35;--violet-a7: #2d01dd4a;--violet-a8: #2b00d066;--violet-a9: #2400b7a9;--violet-a10: #2300abb2;--violet-a11: #1f0099af;--violet-a12: #0b0043d9;--yellow-1: #fdfdf9;--yellow-2: #fefce9;--yellow-3: #fffab8;--yellow-4: #fff394;--yellow-5: #ffe770;--yellow-6: #f3d768;--yellow-7: #e4c767;--yellow-8: #d5ae39;--yellow-9: #ffe629;--yellow-10: #ffdc00;--yellow-11: #9e6c00;--yellow-12: #473b1f;--yellow-a1: #aaaa0006;--yellow-a2: #f4dd0016;--yellow-a3: #ffee0047;--yellow-a4: #ffe3016b;--yellow-a5: #ffd5008f;--yellow-a6: #ebbc0097;--yellow-a7: #d2a10098;--yellow-a8: #c99700c6;--yellow-a9: #ffe100d6;--yellow-a10: #ffdc00;--yellow-a11: #9e6c00;--yellow-a12: #2e2000e0;--gray-surface: #ffffffcc;--gray-indicator: var(--gray-9);--gray-track: var(--gray-9);--mauve-surface: #ffffffcc;--mauve-indicator: var(--mauve-9);--mauve-track: var(--mauve-9);--slate-surface: #ffffffcc;--slate-indicator: var(--slate-9);--slate-track: var(--slate-9);--sage-surface: #ffffffcc;--sage-indicator: var(--sage-9);--sage-track: var(--sage-9);--olive-surface: #ffffffcc;--olive-indicator: var(--olive-9);--olive-track: var(--olive-9);--sand-surface: #ffffffcc;--sand-indicator: var(--sand-9);--sand-track: var(--sand-9);--amber-surface: #fefae4cc;--amber-indicator: var(--amber-9);--amber-track: var(--amber-9);--blue-surface: #f1f9ffcc;--blue-indicator: var(--blue-9);--blue-track: var(--blue-9);--bronze-surface: #fdf5f3cc;--bronze-indicator: var(--bronze-9);--bronze-track: var(--bronze-9);--brown-surface: #fbf8f4cc;--brown-indicator: var(--brown-9);--brown-track: var(--brown-9);--crimson-surface: #fef5f8cc;--crimson-indicator: var(--crimson-9);--crimson-track: var(--crimson-9);--cyan-surface: #eff9facc;--cyan-indicator: var(--cyan-9);--cyan-track: var(--cyan-9);--gold-surface: #f9f8efcc;--gold-indicator: var(--gold-9);--gold-track: var(--gold-9);--grass-surface: #f3faf3cc;--grass-indicator: var(--grass-9);--grass-track: var(--grass-9);--green-surface: #f1faf4cc;--green-indicator: var(--green-9);--green-track: var(--green-9);--indigo-surface: #f5f8ffcc;--indigo-indicator: var(--indigo-9);--indigo-track: var(--indigo-9);--iris-surface: #f6f6ffcc;--iris-indicator: var(--iris-9);--iris-track: var(--iris-9);--jade-surface: #f1faf5cc;--jade-indicator: var(--jade-9);--jade-track: var(--jade-9);--lime-surface: #f6f9f0cc;--lime-indicator: var(--lime-9);--lime-track: var(--lime-9);--mint-surface: #effaf8cc;--mint-indicator: var(--mint-9);--mint-track: var(--mint-9);--orange-surface: #fff5e9cc;--orange-indicator: var(--orange-9);--orange-track: var(--orange-9);--pink-surface: #fef5facc;--pink-indicator: var(--pink-9);--pink-track: var(--pink-9);--plum-surface: #fdf5fdcc;--plum-indicator: var(--plum-9);--plum-track: var(--plum-9);--purple-surface: #faf5fecc;--purple-indicator: var(--purple-9);--purple-track: var(--purple-9);--red-surface: #fff5f5cc;--red-indicator: var(--red-9);--red-track: var(--red-9);--ruby-surface: #fff5f6cc;--ruby-indicator: var(--ruby-9);--ruby-track: var(--ruby-9);--sky-surface: #eef9fdcc;--sky-indicator: var(--sky-9);--sky-track: var(--sky-9);--teal-surface: #f0faf8cc;--teal-indicator: var(--teal-9);--teal-track: var(--teal-9);--tomato-surface: #fff6f5cc;--tomato-indicator: var(--tomato-9);--tomato-track: var(--tomato-9);--violet-surface: #f9f6ffcc;--violet-indicator: var(--violet-9);--violet-track: var(--violet-9);--yellow-surface: #fefbe4cc;--yellow-indicator: var(--yellow-10);--yellow-track: var(--yellow-10)}@supports (color: color(display-p3 1 1 1)){@media (color-gamut: p3){:root,.light,.light-theme{--gray-1: color(display-p3 .988 .988 .988);--gray-2: color(display-p3 .975 .975 .975);--gray-3: color(display-p3 .939 .939 .939);--gray-4: color(display-p3 .908 .908 .908);--gray-5: color(display-p3 .88 .88 .88);--gray-6: color(display-p3 .849 .849 .849);--gray-7: color(display-p3 .807 .807 .807);--gray-8: color(display-p3 .732 .732 .732);--gray-9: color(display-p3 .553 .553 .553);--gray-10: color(display-p3 .512 .512 .512);--gray-11: color(display-p3 .392 .392 .392);--gray-12: color(display-p3 .125 .125 .125);--gray-a1: color(display-p3 0 0 0 / .012);--gray-a2: color(display-p3 0 0 0 / .024);--gray-a3: color(display-p3 0 0 0 / .063);--gray-a4: color(display-p3 0 0 0 / .09);--gray-a5: color(display-p3 0 0 0 / .122);--gray-a6: color(display-p3 0 0 0 / .153);--gray-a7: color(display-p3 0 0 0 / .192);--gray-a8: color(display-p3 0 0 0 / .267);--gray-a9: color(display-p3 0 0 0 / .447);--gray-a10: color(display-p3 0 0 0 / .486);--gray-a11: color(display-p3 0 0 0 / .608);--gray-a12: color(display-p3 0 0 0 / .875);--mauve-1: color(display-p3 .991 .988 .992);--mauve-2: color(display-p3 .98 .976 .984);--mauve-3: color(display-p3 .946 .938 .952);--mauve-4: color(display-p3 .915 .906 .925);--mauve-5: color(display-p3 .886 .876 .901);--mauve-6: color(display-p3 .856 .846 .875);--mauve-7: color(display-p3 .814 .804 .84);--mauve-8: color(display-p3 .735 .728 .777);--mauve-9: color(display-p3 .555 .549 .596);--mauve-10: color(display-p3 .514 .508 .552);--mauve-11: color(display-p3 .395 .388 .424);--mauve-12: color(display-p3 .128 .122 .147);--mauve-a1: color(display-p3 .349 .024 .349 / .012);--mauve-a2: color(display-p3 .184 .024 .349 / .024);--mauve-a3: color(display-p3 .129 .008 .255 / .063);--mauve-a4: color(display-p3 .094 .012 .216 / .095);--mauve-a5: color(display-p3 .098 .008 .224 / .126);--mauve-a6: color(display-p3 .055 .004 .18 / .153);--mauve-a7: color(display-p3 .067 .008 .184 / .197);--mauve-a8: color(display-p3 .02 .004 .176 / .271);--mauve-a9: color(display-p3 .02 .004 .106 / .451);--mauve-a10: color(display-p3 .012 .004 .09 / .491);--mauve-a11: color(display-p3 .016 0 .059 / .612);--mauve-a12: color(display-p3 .008 0 .027 / .879);--slate-1: color(display-p3 .988 .988 .992);--slate-2: color(display-p3 .976 .976 .984);--slate-3: color(display-p3 .94 .941 .953);--slate-4: color(display-p3 .908 .909 .925);--slate-5: color(display-p3 .88 .881 .901);--slate-6: color(display-p3 .85 .852 .876);--slate-7: color(display-p3 .805 .808 .838);--slate-8: color(display-p3 .727 .733 .773);--slate-9: color(display-p3 .547 .553 .592);--slate-10: color(display-p3 .503 .512 .549);--slate-11: color(display-p3 .379 .392 .421);--slate-12: color(display-p3 .113 .125 .14);--slate-a1: color(display-p3 .024 .024 .349 / .012);--slate-a2: color(display-p3 .024 .024 .349 / .024);--slate-a3: color(display-p3 .004 .004 .204 / .059);--slate-a4: color(display-p3 .012 .012 .184 / .091);--slate-a5: color(display-p3 .004 .039 .2 / .122);--slate-a6: color(display-p3 .008 .008 .165 / .15);--slate-a7: color(display-p3 .008 .027 .184 / .197);--slate-a8: color(display-p3 .004 .031 .176 / .275);--slate-a9: color(display-p3 .004 .02 .106 / .455);--slate-a10: color(display-p3 .004 .027 .098 / .499);--slate-a11: color(display-p3 0 .02 .063 / .62);--slate-a12: color(display-p3 0 .012 .031 / .887);--sage-1: color(display-p3 .986 .992 .988);--sage-2: color(display-p3 .97 .977 .974);--sage-3: color(display-p3 .935 .944 .94);--sage-4: color(display-p3 .904 .913 .909);--sage-5: color(display-p3 .875 .885 .88);--sage-6: color(display-p3 .844 .854 .849);--sage-7: color(display-p3 .8 .811 .806);--sage-8: color(display-p3 .725 .738 .732);--sage-9: color(display-p3 .531 .556 .546);--sage-10: color(display-p3 .492 .515 .506);--sage-11: color(display-p3 .377 .395 .389);--sage-12: color(display-p3 .107 .129 .118);--sage-a1: color(display-p3 .024 .514 .267 / .016);--sage-a2: color(display-p3 .02 .267 .145 / .032);--sage-a3: color(display-p3 .008 .184 .125 / .067);--sage-a4: color(display-p3 .012 .094 .051 / .095);--sage-a5: color(display-p3 .008 .098 .035 / .126);--sage-a6: color(display-p3 .004 .078 .027 / .157);--sage-a7: color(display-p3 0 .059 .039 / .2);--sage-a8: color(display-p3 .004 .047 .031 / .275);--sage-a9: color(display-p3 .004 .059 .035 / .471);--sage-a10: color(display-p3 0 .047 .031 / .51);--sage-a11: color(display-p3 0 .031 .02 / .624);--sage-a12: color(display-p3 0 .027 .012 / .895);--olive-1: color(display-p3 .989 .992 .989);--olive-2: color(display-p3 .974 .98 .973);--olive-3: color(display-p3 .939 .945 .937);--olive-4: color(display-p3 .907 .914 .905);--olive-5: color(display-p3 .878 .885 .875);--olive-6: color(display-p3 .846 .855 .843);--olive-7: color(display-p3 .803 .812 .8);--olive-8: color(display-p3 .727 .738 .723);--olive-9: color(display-p3 .541 .556 .532);--olive-10: color(display-p3 .5 .515 .491);--olive-11: color(display-p3 .38 .395 .374);--olive-12: color(display-p3 .117 .129 .111);--olive-a1: color(display-p3 .024 .349 .024 / .012);--olive-a2: color(display-p3 .024 .302 .024 / .028);--olive-a3: color(display-p3 .008 .129 .008 / .063);--olive-a4: color(display-p3 .012 .094 .012 / .095);--olive-a5: color(display-p3 .035 .098 .008 / .126);--olive-a6: color(display-p3 .027 .078 .004 / .157);--olive-a7: color(display-p3 .02 .059 0 / .2);--olive-a8: color(display-p3 .02 .059 .004 / .279);--olive-a9: color(display-p3 .02 .051 .004 / .467);--olive-a10: color(display-p3 .024 .047 0 / .51);--olive-a11: color(display-p3 .012 .039 0 / .628);--olive-a12: color(display-p3 .008 .024 0 / .891);--sand-1: color(display-p3 .992 .992 .989);--sand-2: color(display-p3 .977 .977 .973);--sand-3: color(display-p3 .943 .942 .936);--sand-4: color(display-p3 .913 .912 .903);--sand-5: color(display-p3 .885 .883 .873);--sand-6: color(display-p3 .854 .852 .839);--sand-7: color(display-p3 .813 .81 .794);--sand-8: color(display-p3 .738 .734 .713);--sand-9: color(display-p3 .553 .553 .528);--sand-10: color(display-p3 .511 .511 .488);--sand-11: color(display-p3 .388 .388 .37);--sand-12: color(display-p3 .129 .126 .111);--sand-a1: color(display-p3 .349 .349 .024 / .012);--sand-a2: color(display-p3 .161 .161 .024 / .028);--sand-a3: color(display-p3 .067 .067 .008 / .063);--sand-a4: color(display-p3 .129 .129 .012 / .099);--sand-a5: color(display-p3 .098 .067 .008 / .126);--sand-a6: color(display-p3 .102 .075 .004 / .161);--sand-a7: color(display-p3 .098 .098 .004 / .208);--sand-a8: color(display-p3 .086 .075 .004 / .287);--sand-a9: color(display-p3 .051 .051 .004 / .471);--sand-a10: color(display-p3 .047 .047 0 / .514);--sand-a11: color(display-p3 .031 .031 0 / .632);--sand-a12: color(display-p3 .024 .02 0 / .891);--amber-1: color(display-p3 .995 .992 .985);--amber-2: color(display-p3 .994 .986 .921);--amber-3: color(display-p3 .994 .969 .782);--amber-4: color(display-p3 .989 .937 .65);--amber-5: color(display-p3 .97 .902 .527);--amber-6: color(display-p3 .936 .844 .506);--amber-7: color(display-p3 .89 .762 .443);--amber-8: color(display-p3 .85 .65 .3);--amber-9: color(display-p3 1 .77 .26);--amber-10: color(display-p3 .959 .741 .274);--amber-11: color(display-p3 .64 .4 0);--amber-12: color(display-p3 .294 .208 .145);--amber-a1: color(display-p3 .757 .514 .024 / .016);--amber-a2: color(display-p3 .902 .804 .008 / .079);--amber-a3: color(display-p3 .965 .859 .004 / .22);--amber-a4: color(display-p3 .969 .82 .004 / .35);--amber-a5: color(display-p3 .933 .796 .004 / .475);--amber-a6: color(display-p3 .875 .682 .004 / .495);--amber-a7: color(display-p3 .804 .573 0 / .557);--amber-a8: color(display-p3 .788 .502 0 / .699);--amber-a9: color(display-p3 1 .686 0 / .742);--amber-a10: color(display-p3 .945 .643 0 / .726);--amber-a11: color(display-p3 .64 .4 0);--amber-a12: color(display-p3 .294 .208 .145);--blue-1: color(display-p3 .986 .992 .999);--blue-2: color(display-p3 .96 .979 .998);--blue-3: color(display-p3 .912 .956 .991);--blue-4: color(display-p3 .853 .932 1);--blue-5: color(display-p3 .788 .894 .998);--blue-6: color(display-p3 .709 .843 .976);--blue-7: color(display-p3 .606 .777 .947);--blue-8: color(display-p3 .451 .688 .917);--blue-9: color(display-p3 .247 .556 .969);--blue-10: color(display-p3 .234 .523 .912);--blue-11: color(display-p3 .15 .44 .84);--blue-12: color(display-p3 .102 .193 .379);--blue-a1: color(display-p3 .024 .514 1 / .016);--blue-a2: color(display-p3 .024 .514 .906 / .04);--blue-a3: color(display-p3 .012 .506 .914 / .087);--blue-a4: color(display-p3 .008 .545 1 / .146);--blue-a5: color(display-p3 .004 .502 .984 / .212);--blue-a6: color(display-p3 .004 .463 .922 / .291);--blue-a7: color(display-p3 .004 .431 .863 / .393);--blue-a8: color(display-p3 0 .427 .851 / .55);--blue-a9: color(display-p3 0 .412 .961 / .753);--blue-a10: color(display-p3 0 .376 .886 / .765);--blue-a11: color(display-p3 .15 .44 .84);--blue-a12: color(display-p3 .102 .193 .379);--bronze-1: color(display-p3 .991 .988 .988);--bronze-2: color(display-p3 .989 .97 .961);--bronze-3: color(display-p3 .958 .932 .919);--bronze-4: color(display-p3 .929 .894 .877);--bronze-5: color(display-p3 .898 .853 .832);--bronze-6: color(display-p3 .861 .805 .778);--bronze-7: color(display-p3 .812 .739 .706);--bronze-8: color(display-p3 .741 .647 .606);--bronze-9: color(display-p3 .611 .507 .455);--bronze-10: color(display-p3 .563 .461 .414);--bronze-11: color(display-p3 .471 .373 .336);--bronze-12: color(display-p3 .251 .191 .172);--bronze-a1: color(display-p3 .349 .024 .024 / .012);--bronze-a2: color(display-p3 .71 .22 .024 / .04);--bronze-a3: color(display-p3 .482 .2 .008 / .083);--bronze-a4: color(display-p3 .424 .133 .004 / .122);--bronze-a5: color(display-p3 .4 .145 .004 / .169);--bronze-a6: color(display-p3 .388 .125 .004 / .224);--bronze-a7: color(display-p3 .365 .11 .004 / .295);--bronze-a8: color(display-p3 .341 .102 .004 / .393);--bronze-a9: color(display-p3 .29 .094 0 / .546);--bronze-a10: color(display-p3 .255 .082 0 / .585);--bronze-a11: color(display-p3 .471 .373 .336);--bronze-a12: color(display-p3 .251 .191 .172);--brown-1: color(display-p3 .995 .992 .989);--brown-2: color(display-p3 .987 .976 .964);--brown-3: color(display-p3 .959 .936 .909);--brown-4: color(display-p3 .934 .897 .855);--brown-5: color(display-p3 .909 .856 .798);--brown-6: color(display-p3 .88 .808 .73);--brown-7: color(display-p3 .841 .742 .639);--brown-8: color(display-p3 .782 .647 .514);--brown-9: color(display-p3 .651 .505 .368);--brown-10: color(display-p3 .601 .465 .344);--brown-11: color(display-p3 .485 .374 .288);--brown-12: color(display-p3 .236 .202 .183);--brown-a1: color(display-p3 .675 .349 .024 / .012);--brown-a2: color(display-p3 .675 .349 .024 / .036);--brown-a3: color(display-p3 .573 .314 .012 / .091);--brown-a4: color(display-p3 .545 .302 .008 / .146);--brown-a5: color(display-p3 .561 .29 .004 / .204);--brown-a6: color(display-p3 .553 .294 .004 / .271);--brown-a7: color(display-p3 .557 .286 .004 / .361);--brown-a8: color(display-p3 .549 .275 .004 / .487);--brown-a9: color(display-p3 .447 .22 0 / .632);--brown-a10: color(display-p3 .388 .188 0 / .655);--brown-a11: color(display-p3 .485 .374 .288);--brown-a12: color(display-p3 .236 .202 .183);--crimson-1: color(display-p3 .998 .989 .992);--crimson-2: color(display-p3 .991 .969 .976);--crimson-3: color(display-p3 .987 .917 .941);--crimson-4: color(display-p3 .975 .866 .904);--crimson-5: color(display-p3 .953 .813 .864);--crimson-6: color(display-p3 .921 .755 .817);--crimson-7: color(display-p3 .88 .683 .761);--crimson-8: color(display-p3 .834 .592 .694);--crimson-9: color(display-p3 .843 .298 .507);--crimson-10: color(display-p3 .807 .266 .468);--crimson-11: color(display-p3 .731 .195 .388);--crimson-12: color(display-p3 .352 .111 .221);--crimson-a1: color(display-p3 .675 .024 .349 / .012);--crimson-a2: color(display-p3 .757 .02 .267 / .032);--crimson-a3: color(display-p3 .859 .008 .294 / .083);--crimson-a4: color(display-p3 .827 .008 .298 / .134);--crimson-a5: color(display-p3 .753 .008 .275 / .189);--crimson-a6: color(display-p3 .682 .004 .247 / .244);--crimson-a7: color(display-p3 .62 .004 .251 / .318);--crimson-a8: color(display-p3 .6 .004 .251 / .408);--crimson-a9: color(display-p3 .776 0 .298 / .702);--crimson-a10: color(display-p3 .737 0 .275 / .734);--crimson-a11: color(display-p3 .731 .195 .388);--crimson-a12: color(display-p3 .352 .111 .221);--cyan-1: color(display-p3 .982 .992 .996);--cyan-2: color(display-p3 .955 .981 .984);--cyan-3: color(display-p3 .888 .965 .975);--cyan-4: color(display-p3 .821 .941 .959);--cyan-5: color(display-p3 .751 .907 .935);--cyan-6: color(display-p3 .671 .862 .9);--cyan-7: color(display-p3 .564 .8 .854);--cyan-8: color(display-p3 .388 .715 .798);--cyan-9: color(display-p3 .282 .627 .765);--cyan-10: color(display-p3 .264 .583 .71);--cyan-11: color(display-p3 .08 .48 .63);--cyan-12: color(display-p3 .108 .232 .277);--cyan-a1: color(display-p3 .02 .608 .804 / .02);--cyan-a2: color(display-p3 .02 .557 .647 / .044);--cyan-a3: color(display-p3 .004 .694 .796 / .114);--cyan-a4: color(display-p3 .004 .678 .784 / .181);--cyan-a5: color(display-p3 .004 .624 .733 / .248);--cyan-a6: color(display-p3 .004 .584 .706 / .33);--cyan-a7: color(display-p3 .004 .541 .667 / .436);--cyan-a8: color(display-p3 0 .533 .667 / .612);--cyan-a9: color(display-p3 0 .482 .675 / .718);--cyan-a10: color(display-p3 0 .435 .608 / .738);--cyan-a11: color(display-p3 .08 .48 .63);--cyan-a12: color(display-p3 .108 .232 .277);--gold-1: color(display-p3 .992 .992 .989);--gold-2: color(display-p3 .98 .976 .953);--gold-3: color(display-p3 .947 .94 .909);--gold-4: color(display-p3 .914 .904 .865);--gold-5: color(display-p3 .88 .865 .816);--gold-6: color(display-p3 .84 .818 .756);--gold-7: color(display-p3 .788 .753 .677);--gold-8: color(display-p3 .715 .66 .565);--gold-9: color(display-p3 .579 .517 .41);--gold-10: color(display-p3 .538 .479 .38);--gold-11: color(display-p3 .433 .386 .305);--gold-12: color(display-p3 .227 .209 .173);--gold-a1: color(display-p3 .349 .349 .024 / .012);--gold-a2: color(display-p3 .592 .514 .024 / .048);--gold-a3: color(display-p3 .4 .357 .012 / .091);--gold-a4: color(display-p3 .357 .298 .008 / .134);--gold-a5: color(display-p3 .345 .282 .004 / .185);--gold-a6: color(display-p3 .341 .263 .004 / .244);--gold-a7: color(display-p3 .345 .235 .004 / .322);--gold-a8: color(display-p3 .345 .22 .004 / .436);--gold-a9: color(display-p3 .286 .18 0 / .589);--gold-a10: color(display-p3 .255 .161 0 / .62);--gold-a11: color(display-p3 .433 .386 .305);--gold-a12: color(display-p3 .227 .209 .173);--grass-1: color(display-p3 .986 .996 .985);--grass-2: color(display-p3 .966 .983 .964);--grass-3: color(display-p3 .923 .965 .917);--grass-4: color(display-p3 .872 .94 .865);--grass-5: color(display-p3 .811 .908 .802);--grass-6: color(display-p3 .733 .864 .724);--grass-7: color(display-p3 .628 .803 .622);--grass-8: color(display-p3 .477 .72 .482);--grass-9: color(display-p3 .38 .647 .378);--grass-10: color(display-p3 .344 .598 .342);--grass-11: color(display-p3 .263 .488 .261);--grass-12: color(display-p3 .151 .233 .153);--grass-a1: color(display-p3 .024 .757 .024 / .016);--grass-a2: color(display-p3 .024 .565 .024 / .036);--grass-a3: color(display-p3 .059 .576 .008 / .083);--grass-a4: color(display-p3 .035 .565 .008 / .134);--grass-a5: color(display-p3 .047 .545 .008 / .197);--grass-a6: color(display-p3 .031 .502 .004 / .275);--grass-a7: color(display-p3 .012 .482 .004 / .377);--grass-a8: color(display-p3 0 .467 .008 / .522);--grass-a9: color(display-p3 .008 .435 0 / .624);--grass-a10: color(display-p3 .008 .388 0 / .659);--grass-a11: color(display-p3 .263 .488 .261);--grass-a12: color(display-p3 .151 .233 .153);--green-1: color(display-p3 .986 .996 .989);--green-2: color(display-p3 .963 .983 .967);--green-3: color(display-p3 .913 .964 .925);--green-4: color(display-p3 .859 .94 .879);--green-5: color(display-p3 .796 .907 .826);--green-6: color(display-p3 .718 .863 .761);--green-7: color(display-p3 .61 .801 .675);--green-8: color(display-p3 .451 .715 .559);--green-9: color(display-p3 .332 .634 .442);--green-10: color(display-p3 .308 .595 .417);--green-11: color(display-p3 .19 .5 .32);--green-12: color(display-p3 .132 .228 .18);--green-a1: color(display-p3 .024 .757 .267 / .016);--green-a2: color(display-p3 .024 .565 .129 / .036);--green-a3: color(display-p3 .012 .596 .145 / .087);--green-a4: color(display-p3 .008 .588 .145 / .142);--green-a5: color(display-p3 .004 .541 .157 / .204);--green-a6: color(display-p3 .004 .518 .157 / .283);--green-a7: color(display-p3 .004 .486 .165 / .389);--green-a8: color(display-p3 0 .478 .2 / .55);--green-a9: color(display-p3 0 .455 .165 / .667);--green-a10: color(display-p3 0 .416 .153 / .691);--green-a11: color(display-p3 .19 .5 .32);--green-a12: color(display-p3 .132 .228 .18);--indigo-1: color(display-p3 .992 .992 .996);--indigo-2: color(display-p3 .971 .977 .998);--indigo-3: color(display-p3 .933 .948 .992);--indigo-4: color(display-p3 .885 .914 1);--indigo-5: color(display-p3 .831 .87 1);--indigo-6: color(display-p3 .767 .814 .995);--indigo-7: color(display-p3 .685 .74 .957);--indigo-8: color(display-p3 .569 .639 .916);--indigo-9: color(display-p3 .276 .384 .837);--indigo-10: color(display-p3 .234 .343 .801);--indigo-11: color(display-p3 .256 .354 .755);--indigo-12: color(display-p3 .133 .175 .348);--indigo-a1: color(display-p3 .02 .02 .51 / .008);--indigo-a2: color(display-p3 .024 .161 .863 / .028);--indigo-a3: color(display-p3 .008 .239 .886 / .067);--indigo-a4: color(display-p3 .004 .247 1 / .114);--indigo-a5: color(display-p3 .004 .235 1 / .169);--indigo-a6: color(display-p3 .004 .208 .984 / .232);--indigo-a7: color(display-p3 .004 .176 .863 / .314);--indigo-a8: color(display-p3 .004 .165 .812 / .432);--indigo-a9: color(display-p3 0 .153 .773 / .726);--indigo-a10: color(display-p3 0 .137 .737 / .765);--indigo-a11: color(display-p3 .256 .354 .755);--indigo-a12: color(display-p3 .133 .175 .348);--iris-1: color(display-p3 .992 .992 .999);--iris-2: color(display-p3 .972 .973 .998);--iris-3: color(display-p3 .943 .945 .992);--iris-4: color(display-p3 .902 .906 1);--iris-5: color(display-p3 .857 .861 1);--iris-6: color(display-p3 .799 .805 .987);--iris-7: color(display-p3 .721 .727 .955);--iris-8: color(display-p3 .61 .619 .918);--iris-9: color(display-p3 .357 .357 .81);--iris-10: color(display-p3 .318 .318 .774);--iris-11: color(display-p3 .337 .326 .748);--iris-12: color(display-p3 .154 .161 .371);--iris-a1: color(display-p3 .02 .02 1 / .008);--iris-a2: color(display-p3 .024 .024 .863 / .028);--iris-a3: color(display-p3 .004 .071 .871 / .059);--iris-a4: color(display-p3 .012 .051 1 / .099);--iris-a5: color(display-p3 .008 .035 1 / .142);--iris-a6: color(display-p3 0 .02 .941 / .2);--iris-a7: color(display-p3 .004 .02 .847 / .279);--iris-a8: color(display-p3 .004 .024 .788 / .389);--iris-a9: color(display-p3 0 0 .706 / .644);--iris-a10: color(display-p3 0 0 .667 / .683);--iris-a11: color(display-p3 .337 .326 .748);--iris-a12: color(display-p3 .154 .161 .371);--jade-1: color(display-p3 .986 .996 .992);--jade-2: color(display-p3 .962 .983 .969);--jade-3: color(display-p3 .912 .965 .932);--jade-4: color(display-p3 .858 .941 .893);--jade-5: color(display-p3 .795 .909 .847);--jade-6: color(display-p3 .715 .864 .791);--jade-7: color(display-p3 .603 .802 .718);--jade-8: color(display-p3 .44 .72 .629);--jade-9: color(display-p3 .319 .63 .521);--jade-10: color(display-p3 .299 .592 .488);--jade-11: color(display-p3 .15 .5 .37);--jade-12: color(display-p3 .142 .229 .194);--jade-a1: color(display-p3 .024 .757 .514 / .016);--jade-a2: color(display-p3 .024 .612 .22 / .04);--jade-a3: color(display-p3 .012 .596 .235 / .087);--jade-a4: color(display-p3 .008 .588 .255 / .142);--jade-a5: color(display-p3 .004 .561 .251 / .204);--jade-a6: color(display-p3 .004 .525 .278 / .287);--jade-a7: color(display-p3 .004 .506 .29 / .397);--jade-a8: color(display-p3 0 .506 .337 / .561);--jade-a9: color(display-p3 0 .459 .298 / .683);--jade-a10: color(display-p3 0 .42 .271 / .702);--jade-a11: color(display-p3 .15 .5 .37);--jade-a12: color(display-p3 .142 .229 .194);--lime-1: color(display-p3 .989 .992 .981);--lime-2: color(display-p3 .975 .98 .954);--lime-3: color(display-p3 .939 .965 .851);--lime-4: color(display-p3 .896 .94 .76);--lime-5: color(display-p3 .843 .903 .678);--lime-6: color(display-p3 .778 .852 .599);--lime-7: color(display-p3 .694 .784 .508);--lime-8: color(display-p3 .585 .707 .378);--lime-9: color(display-p3 .78 .928 .466);--lime-10: color(display-p3 .734 .896 .397);--lime-11: color(display-p3 .386 .482 .227);--lime-12: color(display-p3 .222 .25 .128);--lime-a1: color(display-p3 .412 .608 .02 / .02);--lime-a2: color(display-p3 .514 .592 .024 / .048);--lime-a3: color(display-p3 .584 .765 .008 / .15);--lime-a4: color(display-p3 .561 .757 .004 / .24);--lime-a5: color(display-p3 .514 .698 .004 / .322);--lime-a6: color(display-p3 .443 .627 0 / .4);--lime-a7: color(display-p3 .376 .561 .004 / .491);--lime-a8: color(display-p3 .333 .529 0 / .624);--lime-a9: color(display-p3 .588 .867 0 / .534);--lime-a10: color(display-p3 .561 .827 0 / .604);--lime-a11: color(display-p3 .386 .482 .227);--lime-a12: color(display-p3 .222 .25 .128);--mint-1: color(display-p3 .98 .995 .992);--mint-2: color(display-p3 .957 .985 .977);--mint-3: color(display-p3 .888 .972 .95);--mint-4: color(display-p3 .819 .951 .916);--mint-5: color(display-p3 .747 .918 .873);--mint-6: color(display-p3 .668 .87 .818);--mint-7: color(display-p3 .567 .805 .744);--mint-8: color(display-p3 .42 .724 .649);--mint-9: color(display-p3 .62 .908 .834);--mint-10: color(display-p3 .585 .871 .797);--mint-11: color(display-p3 .203 .463 .397);--mint-12: color(display-p3 .136 .259 .236);--mint-a1: color(display-p3 .02 .804 .608 / .02);--mint-a2: color(display-p3 .02 .647 .467 / .044);--mint-a3: color(display-p3 .004 .761 .553 / .114);--mint-a4: color(display-p3 .004 .741 .545 / .181);--mint-a5: color(display-p3 .004 .678 .51 / .255);--mint-a6: color(display-p3 .004 .616 .463 / .334);--mint-a7: color(display-p3 .004 .549 .412 / .432);--mint-a8: color(display-p3 0 .529 .392 / .581);--mint-a9: color(display-p3 .004 .765 .569 / .381);--mint-a10: color(display-p3 .004 .69 .51 / .416);--mint-a11: color(display-p3 .203 .463 .397);--mint-a12: color(display-p3 .136 .259 .236);--orange-1: color(display-p3 .995 .988 .985);--orange-2: color(display-p3 .994 .968 .934);--orange-3: color(display-p3 .989 .938 .85);--orange-4: color(display-p3 1 .874 .687);--orange-5: color(display-p3 1 .821 .583);--orange-6: color(display-p3 .975 .767 .545);--orange-7: color(display-p3 .919 .693 .486);--orange-8: color(display-p3 .877 .597 .379);--orange-9: color(display-p3 .9 .45 .2);--orange-10: color(display-p3 .87 .409 .164);--orange-11: color(display-p3 .76 .34 0);--orange-12: color(display-p3 .323 .185 .127);--orange-a1: color(display-p3 .757 .267 .024 / .016);--orange-a2: color(display-p3 .886 .533 .008 / .067);--orange-a3: color(display-p3 .922 .584 .008 / .15);--orange-a4: color(display-p3 1 .604 .004 / .314);--orange-a5: color(display-p3 1 .569 .004 / .416);--orange-a6: color(display-p3 .949 .494 .004 / .455);--orange-a7: color(display-p3 .839 .408 0 / .514);--orange-a8: color(display-p3 .804 .349 0 / .62);--orange-a9: color(display-p3 .878 .314 0 / .8);--orange-a10: color(display-p3 .843 .29 0 / .836);--orange-a11: color(display-p3 .76 .34 0);--orange-a12: color(display-p3 .323 .185 .127);--pink-1: color(display-p3 .998 .989 .996);--pink-2: color(display-p3 .992 .97 .985);--pink-3: color(display-p3 .981 .917 .96);--pink-4: color(display-p3 .963 .867 .932);--pink-5: color(display-p3 .939 .815 .899);--pink-6: color(display-p3 .907 .756 .859);--pink-7: color(display-p3 .869 .683 .81);--pink-8: color(display-p3 .825 .59 .751);--pink-9: color(display-p3 .775 .297 .61);--pink-10: color(display-p3 .748 .27 .581);--pink-11: color(display-p3 .698 .219 .528);--pink-12: color(display-p3 .363 .101 .279);--pink-a1: color(display-p3 .675 .024 .675 / .012);--pink-a2: color(display-p3 .757 .02 .51 / .032);--pink-a3: color(display-p3 .765 .008 .529 / .083);--pink-a4: color(display-p3 .737 .008 .506 / .134);--pink-a5: color(display-p3 .663 .004 .451 / .185);--pink-a6: color(display-p3 .616 .004 .424 / .244);--pink-a7: color(display-p3 .596 .004 .412 / .318);--pink-a8: color(display-p3 .573 .004 .404 / .412);--pink-a9: color(display-p3 .682 0 .447 / .702);--pink-a10: color(display-p3 .655 0 .424 / .73);--pink-a11: color(display-p3 .698 .219 .528);--pink-a12: color(display-p3 .363 .101 .279);--plum-1: color(display-p3 .995 .988 .999);--plum-2: color(display-p3 .988 .971 .99);--plum-3: color(display-p3 .973 .923 .98);--plum-4: color(display-p3 .953 .875 .966);--plum-5: color(display-p3 .926 .825 .945);--plum-6: color(display-p3 .89 .765 .916);--plum-7: color(display-p3 .84 .686 .877);--plum-8: color(display-p3 .775 .58 .832);--plum-9: color(display-p3 .624 .313 .708);--plum-10: color(display-p3 .587 .29 .667);--plum-11: color(display-p3 .543 .263 .619);--plum-12: color(display-p3 .299 .114 .352);--plum-a1: color(display-p3 .675 .024 1 / .012);--plum-a2: color(display-p3 .58 .024 .58 / .028);--plum-a3: color(display-p3 .655 .008 .753 / .079);--plum-a4: color(display-p3 .627 .008 .722 / .126);--plum-a5: color(display-p3 .58 .004 .69 / .177);--plum-a6: color(display-p3 .537 .004 .655 / .236);--plum-a7: color(display-p3 .49 .004 .616 / .314);--plum-a8: color(display-p3 .471 .004 .6 / .42);--plum-a9: color(display-p3 .451 0 .576 / .687);--plum-a10: color(display-p3 .42 0 .529 / .71);--plum-a11: color(display-p3 .543 .263 .619);--plum-a12: color(display-p3 .299 .114 .352);--purple-1: color(display-p3 .995 .988 .996);--purple-2: color(display-p3 .983 .971 .993);--purple-3: color(display-p3 .963 .931 .989);--purple-4: color(display-p3 .937 .888 .981);--purple-5: color(display-p3 .904 .837 .966);--purple-6: color(display-p3 .86 .774 .942);--purple-7: color(display-p3 .799 .69 .91);--purple-8: color(display-p3 .719 .583 .874);--purple-9: color(display-p3 .523 .318 .751);--purple-10: color(display-p3 .483 .289 .7);--purple-11: color(display-p3 .473 .281 .687);--purple-12: color(display-p3 .234 .132 .363);--purple-a1: color(display-p3 .675 .024 .675 / .012);--purple-a2: color(display-p3 .443 .024 .722 / .028);--purple-a3: color(display-p3 .506 .008 .835 / .071);--purple-a4: color(display-p3 .451 .004 .831 / .114);--purple-a5: color(display-p3 .431 .004 .788 / .165);--purple-a6: color(display-p3 .384 .004 .745 / .228);--purple-a7: color(display-p3 .357 .004 .71 / .31);--purple-a8: color(display-p3 .322 .004 .702 / .416);--purple-a9: color(display-p3 .298 0 .639 / .683);--purple-a10: color(display-p3 .271 0 .58 / .71);--purple-a11: color(display-p3 .473 .281 .687);--purple-a12: color(display-p3 .234 .132 .363);--red-1: color(display-p3 .998 .989 .988);--red-2: color(display-p3 .995 .971 .971);--red-3: color(display-p3 .985 .925 .925);--red-4: color(display-p3 .999 .866 .866);--red-5: color(display-p3 .984 .812 .811);--red-6: color(display-p3 .955 .751 .749);--red-7: color(display-p3 .915 .675 .672);--red-8: color(display-p3 .872 .575 .572);--red-9: color(display-p3 .83 .329 .324);--red-10: color(display-p3 .798 .294 .285);--red-11: color(display-p3 .744 .234 .222);--red-12: color(display-p3 .36 .115 .143);--red-a1: color(display-p3 .675 .024 .024 / .012);--red-a2: color(display-p3 .863 .024 .024 / .028);--red-a3: color(display-p3 .792 .008 .008 / .075);--red-a4: color(display-p3 1 .008 .008 / .134);--red-a5: color(display-p3 .918 .008 .008 / .189);--red-a6: color(display-p3 .831 .02 .004 / .251);--red-a7: color(display-p3 .741 .016 .004 / .33);--red-a8: color(display-p3 .698 .012 .004 / .428);--red-a9: color(display-p3 .749 .008 0 / .675);--red-a10: color(display-p3 .714 .012 0 / .714);--red-a11: color(display-p3 .744 .234 .222);--red-a12: color(display-p3 .36 .115 .143);--ruby-1: color(display-p3 .998 .989 .992);--ruby-2: color(display-p3 .995 .971 .974);--ruby-3: color(display-p3 .983 .92 .928);--ruby-4: color(display-p3 .987 .869 .885);--ruby-5: color(display-p3 .968 .817 .839);--ruby-6: color(display-p3 .937 .758 .786);--ruby-7: color(display-p3 .897 .685 .721);--ruby-8: color(display-p3 .851 .588 .639);--ruby-9: color(display-p3 .83 .323 .408);--ruby-10: color(display-p3 .795 .286 .375);--ruby-11: color(display-p3 .728 .211 .311);--ruby-12: color(display-p3 .36 .115 .171);--ruby-a1: color(display-p3 .675 .024 .349 / .012);--ruby-a2: color(display-p3 .863 .024 .024 / .028);--ruby-a3: color(display-p3 .804 .008 .11 / .079);--ruby-a4: color(display-p3 .91 .008 .125 / .13);--ruby-a5: color(display-p3 .831 .004 .133 / .185);--ruby-a6: color(display-p3 .745 .004 .118 / .244);--ruby-a7: color(display-p3 .678 .004 .114 / .314);--ruby-a8: color(display-p3 .639 .004 .125 / .412);--ruby-a9: color(display-p3 .753 0 .129 / .679);--ruby-a10: color(display-p3 .714 0 .125 / .714);--ruby-a11: color(display-p3 .728 .211 .311);--ruby-a12: color(display-p3 .36 .115 .171);--sky-1: color(display-p3 .98 .995 .999);--sky-2: color(display-p3 .953 .98 .99);--sky-3: color(display-p3 .899 .963 .989);--sky-4: color(display-p3 .842 .937 .977);--sky-5: color(display-p3 .777 .9 .954);--sky-6: color(display-p3 .701 .851 .921);--sky-7: color(display-p3 .604 .785 .879);--sky-8: color(display-p3 .457 .696 .829);--sky-9: color(display-p3 .585 .877 .983);--sky-10: color(display-p3 .555 .845 .959);--sky-11: color(display-p3 .193 .448 .605);--sky-12: color(display-p3 .145 .241 .329);--sky-a1: color(display-p3 .02 .804 1 / .02);--sky-a2: color(display-p3 .024 .592 .757 / .048);--sky-a3: color(display-p3 .004 .655 .886 / .102);--sky-a4: color(display-p3 .004 .604 .851 / .157);--sky-a5: color(display-p3 .004 .565 .792 / .224);--sky-a6: color(display-p3 .004 .502 .737 / .299);--sky-a7: color(display-p3 .004 .459 .694 / .397);--sky-a8: color(display-p3 0 .435 .682 / .542);--sky-a9: color(display-p3 .004 .71 .965 / .416);--sky-a10: color(display-p3 .004 .647 .914 / .444);--sky-a11: color(display-p3 .193 .448 .605);--sky-a12: color(display-p3 .145 .241 .329);--teal-1: color(display-p3 .983 .996 .992);--teal-2: color(display-p3 .958 .983 .976);--teal-3: color(display-p3 .895 .971 .952);--teal-4: color(display-p3 .831 .949 .92);--teal-5: color(display-p3 .761 .914 .878);--teal-6: color(display-p3 .682 .864 .825);--teal-7: color(display-p3 .581 .798 .756);--teal-8: color(display-p3 .433 .716 .671);--teal-9: color(display-p3 .297 .637 .581);--teal-10: color(display-p3 .275 .599 .542);--teal-11: color(display-p3 .08 .5 .43);--teal-12: color(display-p3 .11 .235 .219);--teal-a1: color(display-p3 .024 .757 .514 / .016);--teal-a2: color(display-p3 .02 .647 .467 / .044);--teal-a3: color(display-p3 .004 .741 .557 / .106);--teal-a4: color(display-p3 .004 .702 .537 / .169);--teal-a5: color(display-p3 .004 .643 .494 / .24);--teal-a6: color(display-p3 .004 .569 .447 / .318);--teal-a7: color(display-p3 .004 .518 .424 / .42);--teal-a8: color(display-p3 0 .506 .424 / .569);--teal-a9: color(display-p3 0 .482 .404 / .702);--teal-a10: color(display-p3 0 .451 .369 / .726);--teal-a11: color(display-p3 .08 .5 .43);--teal-a12: color(display-p3 .11 .235 .219);--tomato-1: color(display-p3 .998 .989 .988);--tomato-2: color(display-p3 .994 .974 .969);--tomato-3: color(display-p3 .985 .924 .909);--tomato-4: color(display-p3 .996 .868 .835);--tomato-5: color(display-p3 .98 .812 .77);--tomato-6: color(display-p3 .953 .75 .698);--tomato-7: color(display-p3 .917 .673 .611);--tomato-8: color(display-p3 .875 .575 .502);--tomato-9: color(display-p3 .831 .345 .231);--tomato-10: color(display-p3 .802 .313 .2);--tomato-11: color(display-p3 .755 .259 .152);--tomato-12: color(display-p3 .335 .165 .132);--tomato-a1: color(display-p3 .675 .024 .024 / .012);--tomato-a2: color(display-p3 .757 .145 .02 / .032);--tomato-a3: color(display-p3 .831 .184 .012 / .091);--tomato-a4: color(display-p3 .976 .192 .004 / .165);--tomato-a5: color(display-p3 .918 .192 .004 / .232);--tomato-a6: color(display-p3 .847 .173 .004 / .302);--tomato-a7: color(display-p3 .788 .165 .004 / .389);--tomato-a8: color(display-p3 .749 .153 .004 / .499);--tomato-a9: color(display-p3 .78 .149 0 / .769);--tomato-a10: color(display-p3 .757 .141 0 / .8);--tomato-a11: color(display-p3 .755 .259 .152);--tomato-a12: color(display-p3 .335 .165 .132);--violet-1: color(display-p3 .991 .988 .995);--violet-2: color(display-p3 .978 .974 .998);--violet-3: color(display-p3 .953 .943 .993);--violet-4: color(display-p3 .916 .897 1);--violet-5: color(display-p3 .876 .851 1);--violet-6: color(display-p3 .825 .793 .981);--violet-7: color(display-p3 .752 .712 .943);--violet-8: color(display-p3 .654 .602 .902);--violet-9: color(display-p3 .417 .341 .784);--violet-10: color(display-p3 .381 .306 .741);--violet-11: color(display-p3 .383 .317 .702);--violet-12: color(display-p3 .179 .15 .359);--violet-a1: color(display-p3 .349 .024 .675 / .012);--violet-a2: color(display-p3 .161 .024 .863 / .028);--violet-a3: color(display-p3 .204 .004 .871 / .059);--violet-a4: color(display-p3 .196 .004 1 / .102);--violet-a5: color(display-p3 .165 .008 1 / .15);--violet-a6: color(display-p3 .153 .004 .906 / .208);--violet-a7: color(display-p3 .141 .004 .796 / .287);--violet-a8: color(display-p3 .133 .004 .753 / .397);--violet-a9: color(display-p3 .114 0 .675 / .659);--violet-a10: color(display-p3 .11 0 .627 / .695);--violet-a11: color(display-p3 .383 .317 .702);--violet-a12: color(display-p3 .179 .15 .359);--yellow-1: color(display-p3 .992 .992 .978);--yellow-2: color(display-p3 .995 .99 .922);--yellow-3: color(display-p3 .997 .982 .749);--yellow-4: color(display-p3 .992 .953 .627);--yellow-5: color(display-p3 .984 .91 .51);--yellow-6: color(display-p3 .934 .847 .474);--yellow-7: color(display-p3 .876 .785 .46);--yellow-8: color(display-p3 .811 .689 .313);--yellow-9: color(display-p3 1 .92 .22);--yellow-10: color(display-p3 .977 .868 .291);--yellow-11: color(display-p3 .6 .44 0);--yellow-12: color(display-p3 .271 .233 .137);--yellow-a1: color(display-p3 .675 .675 .024 / .024);--yellow-a2: color(display-p3 .953 .855 .008 / .079);--yellow-a3: color(display-p3 .988 .925 .004 / .251);--yellow-a4: color(display-p3 .98 .875 .004 / .373);--yellow-a5: color(display-p3 .969 .816 .004 / .491);--yellow-a6: color(display-p3 .875 .71 0 / .526);--yellow-a7: color(display-p3 .769 .604 0 / .542);--yellow-a8: color(display-p3 .725 .549 0 / .687);--yellow-a9: color(display-p3 1 .898 0 / .781);--yellow-a10: color(display-p3 .969 .812 0 / .71);--yellow-a11: color(display-p3 .6 .44 0);--yellow-a12: color(display-p3 .271 .233 .137);--gray-surface: color(display-p3 1 1 1 / .8);--mauve-surface: color(display-p3 1 1 1 / .8);--slate-surface: color(display-p3 1 1 1 / .8);--sage-surface: color(display-p3 1 1 1 / .8);--olive-surface: color(display-p3 1 1 1 / .8);--sand-surface: color(display-p3 1 1 1 / .8);--amber-surface: color(display-p3 .9922 .9843 .902 / .8);--blue-surface: color(display-p3 .9529 .9765 .9961 / .8);--bronze-surface: color(display-p3 .9843 .9608 .9529 / .8);--brown-surface: color(display-p3 .9843 .9725 .9569 / .8);--crimson-surface: color(display-p3 .9922 .9608 .9725 / .8);--cyan-surface: color(display-p3 .9412 .9765 .9804 / .8);--gold-surface: color(display-p3 .9765 .9725 .9412 / .8);--grass-surface: color(display-p3 .9569 .9804 .9569 / .8);--green-surface: color(display-p3 .9569 .9804 .9608 / .8);--indigo-surface: color(display-p3 .9647 .9725 .9961 / .8);--iris-surface: color(display-p3 .9647 .9647 .9961 / .8);--jade-surface: color(display-p3 .9529 .9804 .9608 / .8);--lime-surface: color(display-p3 .9725 .9765 .9412 / .8);--mint-surface: color(display-p3 .9451 .9804 .9725 / .8);--orange-surface: color(display-p3 .9961 .9608 .9176 / .8);--pink-surface: color(display-p3 .9922 .9608 .9804 / .8);--plum-surface: color(display-p3 .9843 .9647 .9843 / .8);--purple-surface: color(display-p3 .9804 .9647 .9922 / .8);--red-surface: color(display-p3 .9961 .9647 .9647 / .8);--ruby-surface: color(display-p3 .9961 .9647 .9647 / .8);--sky-surface: color(display-p3 .9412 .9765 .9843 / .8);--teal-surface: color(display-p3 .9451 .9804 .9725 / .8);--tomato-surface: color(display-p3 .9922 .9647 .9608 / .8);--violet-surface: color(display-p3 .9725 .9647 .9961 / .8);--yellow-surface: color(display-p3 .9961 .9922 .902 / .8)}}}.dark,.dark-theme{--gray-1: #111111;--gray-2: #191919;--gray-3: #222222;--gray-4: #2a2a2a;--gray-5: #313131;--gray-6: #3a3a3a;--gray-7: #484848;--gray-8: #606060;--gray-9: #6e6e6e;--gray-10: #7b7b7b;--gray-11: #b4b4b4;--gray-12: #eeeeee;--gray-a1: #00000000;--gray-a2: #ffffff09;--gray-a3: #ffffff12;--gray-a4: #ffffff1b;--gray-a5: #ffffff22;--gray-a6: #ffffff2c;--gray-a7: #ffffff3b;--gray-a8: #ffffff55;--gray-a9: #ffffff64;--gray-a10: #ffffff72;--gray-a11: #ffffffaf;--gray-a12: #ffffffed;--mauve-1: #121113;--mauve-2: #1a191b;--mauve-3: #232225;--mauve-4: #2b292d;--mauve-5: #323035;--mauve-6: #3c393f;--mauve-7: #49474e;--mauve-8: #625f69;--mauve-9: #6f6d78;--mauve-10: #7c7a85;--mauve-11: #b5b2bc;--mauve-12: #eeeef0;--mauve-a1: #00000000;--mauve-a2: #f5f4f609;--mauve-a3: #ebeaf814;--mauve-a4: #eee5f81d;--mauve-a5: #efe6fe25;--mauve-a6: #f1e6fd30;--mauve-a7: #eee9ff40;--mauve-a8: #eee7ff5d;--mauve-a9: #eae6fd6e;--mauve-a10: #ece9fd7c;--mauve-a11: #f5f1ffb7;--mauve-a12: #fdfdffef;--slate-1: #111113;--slate-2: #18191b;--slate-3: #212225;--slate-4: #272a2d;--slate-5: #2e3135;--slate-6: #363a3f;--slate-7: #43484e;--slate-8: #5a6169;--slate-9: #696e77;--slate-10: #777b84;--slate-11: #b0b4ba;--slate-12: #edeef0;--slate-a1: #00000000;--slate-a2: #d8f4f609;--slate-a3: #ddeaf814;--slate-a4: #d3edf81d;--slate-a5: #d9edfe25;--slate-a6: #d6ebfd30;--slate-a7: #d9edff40;--slate-a8: #d9edff5d;--slate-a9: #dfebfd6d;--slate-a10: #e5edfd7b;--slate-a11: #f1f7feb5;--slate-a12: #fcfdffef;--sage-1: #101211;--sage-2: #171918;--sage-3: #202221;--sage-4: #272a29;--sage-5: #2e3130;--sage-6: #373b39;--sage-7: #444947;--sage-8: #5b625f;--sage-9: #63706b;--sage-10: #717d79;--sage-11: #adb5b2;--sage-12: #eceeed;--sage-a1: #00000000;--sage-a2: #f0f2f108;--sage-a3: #f3f5f412;--sage-a4: #f2fefd1a;--sage-a5: #f1fbfa22;--sage-a6: #edfbf42d;--sage-a7: #edfcf73c;--sage-a8: #ebfdf657;--sage-a9: #dffdf266;--sage-a10: #e5fdf674;--sage-a11: #f4fefbb0;--sage-a12: #fdfffeed;--olive-1: #111210;--olive-2: #181917;--olive-3: #212220;--olive-4: #282a27;--olive-5: #2f312e;--olive-6: #383a36;--olive-7: #454843;--olive-8: #5c625b;--olive-9: #687066;--olive-10: #767d74;--olive-11: #afb5ad;--olive-12: #eceeec;--olive-a1: #00000000;--olive-a2: #f1f2f008;--olive-a3: #f4f5f312;--olive-a4: #f3fef21a;--olive-a5: #f2fbf122;--olive-a6: #f4faed2c;--olive-a7: #f2fced3b;--olive-a8: #edfdeb57;--olive-a9: #ebfde766;--olive-a10: #f0fdec74;--olive-a11: #f6fef4b0;--olive-a12: #fdfffded;--sand-1: #111110;--sand-2: #191918;--sand-3: #222221;--sand-4: #2a2a28;--sand-5: #31312e;--sand-6: #3b3a37;--sand-7: #494844;--sand-8: #62605b;--sand-9: #6f6d66;--sand-10: #7c7b74;--sand-11: #b5b3ad;--sand-12: #eeeeec;--sand-a1: #00000000;--sand-a2: #f4f4f309;--sand-a3: #f6f6f513;--sand-a4: #fefef31b;--sand-a5: #fbfbeb23;--sand-a6: #fffaed2d;--sand-a7: #fffbed3c;--sand-a8: #fff9eb57;--sand-a9: #fffae965;--sand-a10: #fffdee73;--sand-a11: #fffcf4b0;--sand-a12: #fffffded;--amber-1: #16120c;--amber-2: #1d180f;--amber-3: #302008;--amber-4: #3f2700;--amber-5: #4d3000;--amber-6: #5c3d05;--amber-7: #714f19;--amber-8: #8f6424;--amber-9: #ffc53d;--amber-10: #ffd60a;--amber-11: #ffca16;--amber-12: #ffe7b3;--amber-a1: #e63c0006;--amber-a2: #fd9b000d;--amber-a3: #fa820022;--amber-a4: #fc820032;--amber-a5: #fd8b0041;--amber-a6: #fd9b0051;--amber-a7: #ffab2567;--amber-a8: #ffae3587;--amber-a9: #ffc53d;--amber-a10: #ffd60a;--amber-a11: #ffca16;--amber-a12: #ffe7b3;--blue-1: #0d1520;--blue-2: #111927;--blue-3: #0d2847;--blue-4: #003362;--blue-5: #004074;--blue-6: #104d87;--blue-7: #205d9e;--blue-8: #2870bd;--blue-9: #0090ff;--blue-10: #3b9eff;--blue-11: #70b8ff;--blue-12: #c2e6ff;--blue-a1: #004df211;--blue-a2: #1166fb18;--blue-a3: #0077ff3a;--blue-a4: #0075ff57;--blue-a5: #0081fd6b;--blue-a6: #0f89fd7f;--blue-a7: #2a91fe98;--blue-a8: #3094feb9;--blue-a9: #0090ff;--blue-a10: #3b9eff;--blue-a11: #70b8ff;--blue-a12: #c2e6ff;--bronze-1: #141110;--bronze-2: #1c1917;--bronze-3: #262220;--bronze-4: #302a27;--bronze-5: #3b3330;--bronze-6: #493e3a;--bronze-7: #5a4c47;--bronze-8: #6f5f58;--bronze-9: #a18072;--bronze-10: #ae8c7e;--bronze-11: #d4b3a5;--bronze-12: #ede0d9;--bronze-a1: #d1110004;--bronze-a2: #fbbc910c;--bronze-a3: #faceb817;--bronze-a4: #facdb622;--bronze-a5: #ffd2c12d;--bronze-a6: #ffd1c03c;--bronze-a7: #fdd0c04f;--bronze-a8: #ffd6c565;--bronze-a9: #fec7b09b;--bronze-a10: #fecab5a9;--bronze-a11: #ffd7c6d1;--bronze-a12: #fff1e9ec;--brown-1: #12110f;--brown-2: #1c1816;--brown-3: #28211d;--brown-4: #322922;--brown-5: #3e3128;--brown-6: #4d3c2f;--brown-7: #614a39;--brown-8: #7c5f46;--brown-9: #ad7f58;--brown-10: #b88c67;--brown-11: #dbb594;--brown-12: #f2e1ca;--brown-a1: #91110002;--brown-a2: #fba67c0c;--brown-a3: #fcb58c19;--brown-a4: #fbbb8a24;--brown-a5: #fcb88931;--brown-a6: #fdba8741;--brown-a7: #ffbb8856;--brown-a8: #ffbe8773;--brown-a9: #feb87da8;--brown-a10: #ffc18cb3;--brown-a11: #fed1aad9;--brown-a12: #feecd4f2;--crimson-1: #191114;--crimson-2: #201318;--crimson-3: #381525;--crimson-4: #4d122f;--crimson-5: #5c1839;--crimson-6: #6d2545;--crimson-7: #873356;--crimson-8: #b0436e;--crimson-9: #e93d82;--crimson-10: #ee518a;--crimson-11: #ff92ad;--crimson-12: #fdd3e8;--crimson-a1: #f4126709;--crimson-a2: #f22f7a11;--crimson-a3: #fe2a8b2a;--crimson-a4: #fd158741;--crimson-a5: #fd278f51;--crimson-a6: #fe459763;--crimson-a7: #fd559b7f;--crimson-a8: #fe5b9bab;--crimson-a9: #fe418de8;--crimson-a10: #ff5693ed;--crimson-a11: #ff92ad;--crimson-a12: #ffd5eafd;--cyan-1: #0b161a;--cyan-2: #101b20;--cyan-3: #082c36;--cyan-4: #003848;--cyan-5: #004558;--cyan-6: #045468;--cyan-7: #12677e;--cyan-8: #11809c;--cyan-9: #00a2c7;--cyan-10: #23afd0;--cyan-11: #4ccce6;--cyan-12: #b6ecf7;--cyan-a1: #0091f70a;--cyan-a2: #02a7f211;--cyan-a3: #00befd28;--cyan-a4: #00baff3b;--cyan-a5: #00befd4d;--cyan-a6: #00c7fd5e;--cyan-a7: #14cdff75;--cyan-a8: #11cfff95;--cyan-a9: #00cfffc3;--cyan-a10: #28d6ffcd;--cyan-a11: #52e1fee5;--cyan-a12: #bbf3fef7;--gold-1: #121211;--gold-2: #1b1a17;--gold-3: #24231f;--gold-4: #2d2b26;--gold-5: #38352e;--gold-6: #444039;--gold-7: #544f46;--gold-8: #696256;--gold-9: #978365;--gold-10: #a39073;--gold-11: #cbb99f;--gold-12: #e8e2d9;--gold-a1: #91911102;--gold-a2: #f9e29d0b;--gold-a3: #f8ecbb15;--gold-a4: #ffeec41e;--gold-a5: #feecc22a;--gold-a6: #feebcb37;--gold-a7: #ffedcd48;--gold-a8: #fdeaca5f;--gold-a9: #ffdba690;--gold-a10: #fedfb09d;--gold-a11: #fee7c6c8;--gold-a12: #fef7ede7;--grass-1: #0e1511;--grass-2: #141a15;--grass-3: #1b2a1e;--grass-4: #1d3a24;--grass-5: #25482d;--grass-6: #2d5736;--grass-7: #366740;--grass-8: #3e7949;--grass-9: #46a758;--grass-10: #53b365;--grass-11: #71d083;--grass-12: #c2f0c2;--grass-a1: #00de1205;--grass-a2: #5ef7780a;--grass-a3: #70fe8c1b;--grass-a4: #57ff802c;--grass-a5: #68ff8b3b;--grass-a6: #71ff8f4b;--grass-a7: #77fd925d;--grass-a8: #77fd9070;--grass-a9: #65ff82a1;--grass-a10: #72ff8dae;--grass-a11: #89ff9fcd;--grass-a12: #ceffceef;--green-1: #0e1512;--green-2: #121b17;--green-3: #132d21;--green-4: #113b29;--green-5: #174933;--green-6: #20573e;--green-7: #28684a;--green-8: #2f7c57;--green-9: #30a46c;--green-10: #33b074;--green-11: #3dd68c;--green-12: #b1f1cb;--green-a1: #00de4505;--green-a2: #29f99d0b;--green-a3: #22ff991e;--green-a4: #11ff992d;--green-a5: #2bffa23c;--green-a6: #44ffaa4b;--green-a7: #50fdac5e;--green-a8: #54ffad73;--green-a9: #44ffa49e;--green-a10: #43fea4ab;--green-a11: #46fea5d4;--green-a12: #bbffd7f0;--indigo-1: #11131f;--indigo-2: #141726;--indigo-3: #182449;--indigo-4: #1d2e62;--indigo-5: #253974;--indigo-6: #304384;--indigo-7: #3a4f97;--indigo-8: #435db1;--indigo-9: #3e63dd;--indigo-10: #5472e4;--indigo-11: #9eb1ff;--indigo-12: #d6e1ff;--indigo-a1: #1133ff0f;--indigo-a2: #3354fa17;--indigo-a3: #2f62ff3c;--indigo-a4: #3566ff57;--indigo-a5: #4171fd6b;--indigo-a6: #5178fd7c;--indigo-a7: #5a7fff90;--indigo-a8: #5b81feac;--indigo-a9: #4671ffdb;--indigo-a10: #5c7efee3;--indigo-a11: #9eb1ff;--indigo-a12: #d6e1ff;--iris-1: #13131e;--iris-2: #171625;--iris-3: #202248;--iris-4: #262a65;--iris-5: #303374;--iris-6: #3d3e82;--iris-7: #4a4a95;--iris-8: #5958b1;--iris-9: #5b5bd6;--iris-10: #6e6ade;--iris-11: #b1a9ff;--iris-12: #e0dffe;--iris-a1: #3636fe0e;--iris-a2: #564bf916;--iris-a3: #525bff3b;--iris-a4: #4d58ff5a;--iris-a5: #5b62fd6b;--iris-a6: #6d6ffd7a;--iris-a7: #7777fe8e;--iris-a8: #7b7afeac;--iris-a9: #6a6afed4;--iris-a10: #7d79ffdc;--iris-a11: #b1a9ff;--iris-a12: #e1e0fffe;--jade-1: #0d1512;--jade-2: #121c18;--jade-3: #0f2e22;--jade-4: #0b3b2c;--jade-5: #114837;--jade-6: #1b5745;--jade-7: #246854;--jade-8: #2a7e68;--jade-9: #29a383;--jade-10: #27b08b;--jade-11: #1fd8a4;--jade-12: #adf0d4;--jade-a1: #00de4505;--jade-a2: #27fba60c;--jade-a3: #02f99920;--jade-a4: #00ffaa2d;--jade-a5: #11ffb63b;--jade-a6: #34ffc24b;--jade-a7: #45fdc75e;--jade-a8: #48ffcf75;--jade-a9: #38feca9d;--jade-a10: #31fec7ab;--jade-a11: #21fec0d6;--jade-a12: #b8ffe1ef;--lime-1: #11130c;--lime-2: #151a10;--lime-3: #1f2917;--lime-4: #29371d;--lime-5: #334423;--lime-6: #3d522a;--lime-7: #496231;--lime-8: #577538;--lime-9: #bdee63;--lime-10: #d4ff70;--lime-11: #bde56c;--lime-12: #e3f7ba;--lime-a1: #11bb0003;--lime-a2: #78f7000a;--lime-a3: #9bfd4c1a;--lime-a4: #a7fe5c29;--lime-a5: #affe6537;--lime-a6: #b2fe6d46;--lime-a7: #b6ff6f57;--lime-a8: #b6fd6d6c;--lime-a9: #caff69ed;--lime-a10: #d4ff70;--lime-a11: #d1fe77e4;--lime-a12: #e9febff7;--mint-1: #0e1515;--mint-2: #0f1b1b;--mint-3: #092c2b;--mint-4: #003a38;--mint-5: #004744;--mint-6: #105650;--mint-7: #1e685f;--mint-8: #277f70;--mint-9: #86ead4;--mint-10: #a8f5e5;--mint-11: #58d5ba;--mint-12: #c4f5e1;--mint-a1: #00dede05;--mint-a2: #00f9f90b;--mint-a3: #00fff61d;--mint-a4: #00fff42c;--mint-a5: #00fff23a;--mint-a6: #0effeb4a;--mint-a7: #34fde55e;--mint-a8: #41ffdf76;--mint-a9: #92ffe7e9;--mint-a10: #aefeedf5;--mint-a11: #67ffded2;--mint-a12: #cbfee9f5;--orange-1: #17120e;--orange-2: #1e160f;--orange-3: #331e0b;--orange-4: #462100;--orange-5: #562800;--orange-6: #66350c;--orange-7: #7e451d;--orange-8: #a35829;--orange-9: #f76b15;--orange-10: #ff801f;--orange-11: #ffa057;--orange-12: #ffe0c2;--orange-a1: #ec360007;--orange-a2: #fe6d000e;--orange-a3: #fb6a0025;--orange-a4: #ff590039;--orange-a5: #ff61004a;--orange-a6: #fd75045c;--orange-a7: #ff832c75;--orange-a8: #fe84389d;--orange-a9: #fe6d15f7;--orange-a10: #ff801f;--orange-a11: #ffa057;--orange-a12: #ffe0c2;--pink-1: #191117;--pink-2: #21121d;--pink-3: #37172f;--pink-4: #4b143d;--pink-5: #591c47;--pink-6: #692955;--pink-7: #833869;--pink-8: #a84885;--pink-9: #d6409f;--pink-10: #de51a8;--pink-11: #ff8dcc;--pink-12: #fdd1ea;--pink-a1: #f412bc09;--pink-a2: #f420bb12;--pink-a3: #fe37cc29;--pink-a4: #fc1ec43f;--pink-a5: #fd35c24e;--pink-a6: #fd51c75f;--pink-a7: #fd62c87b;--pink-a8: #ff68c8a2;--pink-a9: #fe49bcd4;--pink-a10: #ff5cc0dc;--pink-a11: #ff8dcc;--pink-a12: #ffd3ecfd;--plum-1: #181118;--plum-2: #201320;--plum-3: #351a35;--plum-4: #451d47;--plum-5: #512454;--plum-6: #5e3061;--plum-7: #734079;--plum-8: #92549c;--plum-9: #ab4aba;--plum-10: #b658c4;--plum-11: #e796f3;--plum-12: #f4d4f4;--plum-a1: #f112f108;--plum-a2: #f22ff211;--plum-a3: #fd4cfd27;--plum-a4: #f646ff3a;--plum-a5: #f455ff48;--plum-a6: #f66dff56;--plum-a7: #f07cfd70;--plum-a8: #ee84ff95;--plum-a9: #e961feb6;--plum-a10: #ed70ffc0;--plum-a11: #f19cfef3;--plum-a12: #feddfef4;--purple-1: #18111b;--purple-2: #1e1523;--purple-3: #301c3b;--purple-4: #3d224e;--purple-5: #48295c;--purple-6: #54346b;--purple-7: #664282;--purple-8: #8457aa;--purple-9: #8e4ec6;--purple-10: #9a5cd0;--purple-11: #d19dff;--purple-12: #ecd9fa;--purple-a1: #b412f90b;--purple-a2: #b744f714;--purple-a3: #c150ff2d;--purple-a4: #bb53fd42;--purple-a5: #be5cfd51;--purple-a6: #c16dfd61;--purple-a7: #c378fd7a;--purple-a8: #c47effa4;--purple-a9: #b661ffc2;--purple-a10: #bc6fffcd;--purple-a11: #d19dff;--purple-a12: #f1ddfffa;--red-1: #191111;--red-2: #201314;--red-3: #3b1219;--red-4: #500f1c;--red-5: #611623;--red-6: #72232d;--red-7: #8c333a;--red-8: #b54548;--red-9: #e5484d;--red-10: #ec5d5e;--red-11: #ff9592;--red-12: #ffd1d9;--red-a1: #f4121209;--red-a2: #f22f3e11;--red-a3: #ff173f2d;--red-a4: #fe0a3b44;--red-a5: #ff204756;--red-a6: #ff3e5668;--red-a7: #ff536184;--red-a8: #ff5d61b0;--red-a9: #fe4e54e4;--red-a10: #ff6465eb;--red-a11: #ff9592;--red-a12: #ffd1d9;--ruby-1: #191113;--ruby-2: #1e1517;--ruby-3: #3a141e;--ruby-4: #4e1325;--ruby-5: #5e1a2e;--ruby-6: #6f2539;--ruby-7: #883447;--ruby-8: #b3445a;--ruby-9: #e54666;--ruby-10: #ec5a72;--ruby-11: #ff949d;--ruby-12: #fed2e1;--ruby-a1: #f4124a09;--ruby-a2: #fe5a7f0e;--ruby-a3: #ff235d2c;--ruby-a4: #fd195e42;--ruby-a5: #fe2d6b53;--ruby-a6: #ff447665;--ruby-a7: #ff577d80;--ruby-a8: #ff5c7cae;--ruby-a9: #fe4c70e4;--ruby-a10: #ff617beb;--ruby-a11: #ff949d;--ruby-a12: #ffd3e2fe;--sky-1: #0d141f;--sky-2: #111a27;--sky-3: #112840;--sky-4: #113555;--sky-5: #154467;--sky-6: #1b537b;--sky-7: #1f6692;--sky-8: #197cae;--sky-9: #7ce2fe;--sky-10: #a8eeff;--sky-11: #75c7f0;--sky-12: #c2f3ff;--sky-a1: #0044ff0f;--sky-a2: #1171fb18;--sky-a3: #1184fc33;--sky-a4: #128fff49;--sky-a5: #1c9dfd5d;--sky-a6: #28a5ff72;--sky-a7: #2badfe8b;--sky-a8: #1db2fea9;--sky-a9: #7ce3fffe;--sky-a10: #a8eeff;--sky-a11: #7cd3ffef;--sky-a12: #c2f3ff;--teal-1: #0d1514;--teal-2: #111c1b;--teal-3: #0d2d2a;--teal-4: #023b37;--teal-5: #084843;--teal-6: #145750;--teal-7: #1c6961;--teal-8: #207e73;--teal-9: #12a594;--teal-10: #0eb39e;--teal-11: #0bd8b6;--teal-12: #adf0dd;--teal-a1: #00deab05;--teal-a2: #12fbe60c;--teal-a3: #00ffe61e;--teal-a4: #00ffe92d;--teal-a5: #00ffea3b;--teal-a6: #1cffe84b;--teal-a7: #2efde85f;--teal-a8: #32ffe775;--teal-a9: #13ffe49f;--teal-a10: #0dffe0ae;--teal-a11: #0afed5d6;--teal-a12: #b8ffebef;--tomato-1: #181111;--tomato-2: #1f1513;--tomato-3: #391714;--tomato-4: #4e1511;--tomato-5: #5e1c16;--tomato-6: #6e2920;--tomato-7: #853a2d;--tomato-8: #ac4d39;--tomato-9: #e54d2e;--tomato-10: #ec6142;--tomato-11: #ff977d;--tomato-12: #fbd3cb;--tomato-a1: #f1121208;--tomato-a2: #ff55330f;--tomato-a3: #ff35232b;--tomato-a4: #fd201142;--tomato-a5: #fe332153;--tomato-a6: #ff4f3864;--tomato-a7: #fd644a7d;--tomato-a8: #fe6d4ea7;--tomato-a9: #fe5431e4;--tomato-a10: #ff6847eb;--tomato-a11: #ff977d;--tomato-a12: #ffd6cefb;--violet-1: #14121f;--violet-2: #1b1525;--violet-3: #291f43;--violet-4: #33255b;--violet-5: #3c2e69;--violet-6: #473876;--violet-7: #56468b;--violet-8: #6958ad;--violet-9: #6e56cf;--violet-10: #7d66d9;--violet-11: #baa7ff;--violet-12: #e2ddfe;--violet-a1: #4422ff0f;--violet-a2: #853ff916;--violet-a3: #8354fe36;--violet-a4: #7d51fd50;--violet-a5: #845ffd5f;--violet-a6: #8f6cfd6d;--violet-a7: #9879ff83;--violet-a8: #977dfea8;--violet-a9: #8668ffcc;--violet-a10: #9176fed7;--violet-a11: #baa7ff;--violet-a12: #e3defffe;--yellow-1: #14120b;--yellow-2: #1b180f;--yellow-3: #2d2305;--yellow-4: #362b00;--yellow-5: #433500;--yellow-6: #524202;--yellow-7: #665417;--yellow-8: #836a21;--yellow-9: #ffe629;--yellow-10: #ffff57;--yellow-11: #f5e147;--yellow-12: #f6eeb4;--yellow-a1: #d1510004;--yellow-a2: #f9b4000b;--yellow-a3: #ffaa001e;--yellow-a4: #fdb70028;--yellow-a5: #febb0036;--yellow-a6: #fec40046;--yellow-a7: #fdcb225c;--yellow-a8: #fdca327b;--yellow-a9: #ffe629;--yellow-a10: #ffff57;--yellow-a11: #fee949f5;--yellow-a12: #fef6baf6;--gray-surface: #21212180;--gray-indicator: var(--gray-9);--gray-track: var(--gray-9);--mauve-surface: #22212380;--mauve-indicator: var(--mauve-9);--mauve-track: var(--mauve-9);--slate-surface: #1f212380;--slate-indicator: var(--slate-9);--slate-track: var(--slate-9);--sage-surface: #1e201f80;--sage-indicator: var(--sage-9);--sage-track: var(--sage-9);--olive-surface: #1f201e80;--olive-indicator: var(--olive-9);--olive-track: var(--olive-9);--sand-surface: #21212080;--sand-indicator: var(--sand-9);--sand-track: var(--sand-9);--amber-surface: #271f1380;--amber-indicator: var(--amber-9);--amber-track: var(--amber-9);--blue-surface: #11213d80;--blue-indicator: var(--blue-9);--blue-track: var(--blue-9);--bronze-surface: #27211d80;--bronze-indicator: var(--bronze-9);--bronze-track: var(--bronze-9);--brown-surface: #271f1b80;--brown-indicator: var(--brown-9);--brown-track: var(--brown-9);--crimson-surface: #2f151f80;--crimson-indicator: var(--crimson-9);--crimson-track: var(--crimson-9);--cyan-surface: #11252d80;--cyan-indicator: var(--cyan-9);--cyan-track: var(--cyan-9);--gold-surface: #25231d80;--gold-indicator: var(--gold-9);--gold-track: var(--gold-9);--grass-surface: #19231b80;--grass-indicator: var(--grass-9);--grass-track: var(--grass-9);--green-surface: #15251d80;--green-indicator: var(--green-9);--green-track: var(--green-9);--indigo-surface: #171d3b80;--indigo-indicator: var(--indigo-9);--indigo-track: var(--indigo-9);--iris-surface: #1d1b3980;--iris-indicator: var(--iris-9);--iris-track: var(--iris-9);--jade-surface: #13271f80;--jade-indicator: var(--jade-9);--jade-track: var(--jade-9);--lime-surface: #1b211580;--lime-indicator: var(--lime-9);--lime-track: var(--lime-9);--mint-surface: #15272780;--mint-indicator: var(--mint-9);--mint-track: var(--mint-9);--orange-surface: #271d1380;--orange-indicator: var(--orange-9);--orange-track: var(--orange-9);--pink-surface: #31132980;--pink-indicator: var(--pink-9);--pink-track: var(--pink-9);--plum-surface: #2f152f80;--plum-indicator: var(--plum-9);--plum-track: var(--plum-9);--purple-surface: #2b173580;--purple-indicator: var(--purple-9);--purple-track: var(--purple-9);--red-surface: #2f151780;--red-indicator: var(--red-9);--red-track: var(--red-9);--ruby-surface: #2b191d80;--ruby-indicator: var(--ruby-9);--ruby-track: var(--ruby-9);--sky-surface: #13233b80;--sky-indicator: var(--sky-9);--sky-track: var(--sky-9);--teal-surface: #13272580;--teal-indicator: var(--teal-9);--teal-track: var(--teal-9);--tomato-surface: #2d191580;--tomato-indicator: var(--tomato-9);--tomato-track: var(--tomato-9);--violet-surface: #25193980;--violet-indicator: var(--violet-9);--violet-track: var(--violet-9);--yellow-surface: #231f1380;--yellow-indicator: var(--yellow-9);--yellow-track: var(--yellow-9)}@supports (color: color(display-p3 1 1 1)){@media (color-gamut: p3){.dark,.dark-theme{--gray-1: color(display-p3 .067 .067 .067);--gray-2: color(display-p3 .098 .098 .098);--gray-3: color(display-p3 .135 .135 .135);--gray-4: color(display-p3 .163 .163 .163);--gray-5: color(display-p3 .192 .192 .192);--gray-6: color(display-p3 .228 .228 .228);--gray-7: color(display-p3 .283 .283 .283);--gray-8: color(display-p3 .375 .375 .375);--gray-9: color(display-p3 .431 .431 .431);--gray-10: color(display-p3 .484 .484 .484);--gray-11: color(display-p3 .706 .706 .706);--gray-12: color(display-p3 .933 .933 .933);--gray-a1: color(display-p3 0 0 0 / 0);--gray-a2: color(display-p3 1 1 1 / .034);--gray-a3: color(display-p3 1 1 1 / .071);--gray-a4: color(display-p3 1 1 1 / .105);--gray-a5: color(display-p3 1 1 1 / .134);--gray-a6: color(display-p3 1 1 1 / .172);--gray-a7: color(display-p3 1 1 1 / .231);--gray-a8: color(display-p3 1 1 1 / .332);--gray-a9: color(display-p3 1 1 1 / .391);--gray-a10: color(display-p3 1 1 1 / .445);--gray-a11: color(display-p3 1 1 1 / .685);--gray-a12: color(display-p3 1 1 1 / .929);--mauve-1: color(display-p3 .07 .067 .074);--mauve-2: color(display-p3 .101 .098 .105);--mauve-3: color(display-p3 .138 .134 .144);--mauve-4: color(display-p3 .167 .161 .175);--mauve-5: color(display-p3 .196 .189 .206);--mauve-6: color(display-p3 .232 .225 .245);--mauve-7: color(display-p3 .286 .277 .302);--mauve-8: color(display-p3 .383 .373 .408);--mauve-9: color(display-p3 .434 .428 .467);--mauve-10: color(display-p3 .487 .48 .519);--mauve-11: color(display-p3 .707 .7 .735);--mauve-12: color(display-p3 .933 .933 .94);--mauve-a1: color(display-p3 0 0 0 / 0);--mauve-a2: color(display-p3 .996 .992 1 / .034);--mauve-a3: color(display-p3 .937 .933 .992 / .077);--mauve-a4: color(display-p3 .957 .918 .996 / .111);--mauve-a5: color(display-p3 .937 .906 .996 / .145);--mauve-a6: color(display-p3 .953 .925 .996 / .183);--mauve-a7: color(display-p3 .945 .929 1 / .246);--mauve-a8: color(display-p3 .937 .918 1 / .361);--mauve-a9: color(display-p3 .933 .918 1 / .424);--mauve-a10: color(display-p3 .941 .925 1 / .479);--mauve-a11: color(display-p3 .965 .961 1 / .712);--mauve-a12: color(display-p3 .992 .992 1 / .937);--slate-1: color(display-p3 .067 .067 .074);--slate-2: color(display-p3 .095 .098 .105);--slate-3: color(display-p3 .13 .135 .145);--slate-4: color(display-p3 .156 .163 .176);--slate-5: color(display-p3 .183 .191 .206);--slate-6: color(display-p3 .215 .226 .244);--slate-7: color(display-p3 .265 .28 .302);--slate-8: color(display-p3 .357 .381 .409);--slate-9: color(display-p3 .415 .431 .463);--slate-10: color(display-p3 .469 .483 .514);--slate-11: color(display-p3 .692 .704 .728);--slate-12: color(display-p3 .93 .933 .94);--slate-a1: color(display-p3 0 0 0 / 0);--slate-a2: color(display-p3 .875 .992 1 / .034);--slate-a3: color(display-p3 .882 .933 .992 / .077);--slate-a4: color(display-p3 .882 .953 .996 / .111);--slate-a5: color(display-p3 .878 .929 .996 / .145);--slate-a6: color(display-p3 .882 .949 .996 / .183);--slate-a7: color(display-p3 .882 .929 1 / .246);--slate-a8: color(display-p3 .871 .937 1 / .361);--slate-a9: color(display-p3 .898 .937 1 / .42);--slate-a10: color(display-p3 .918 .945 1 / .475);--slate-a11: color(display-p3 .949 .969 .996 / .708);--slate-a12: color(display-p3 .988 .992 1 / .937);--sage-1: color(display-p3 .064 .07 .067);--sage-2: color(display-p3 .092 .098 .094);--sage-3: color(display-p3 .128 .135 .131);--sage-4: color(display-p3 .155 .164 .159);--sage-5: color(display-p3 .183 .193 .188);--sage-6: color(display-p3 .218 .23 .224);--sage-7: color(display-p3 .269 .285 .277);--sage-8: color(display-p3 .362 .382 .373);--sage-9: color(display-p3 .398 .438 .421);--sage-10: color(display-p3 .453 .49 .474);--sage-11: color(display-p3 .685 .709 .697);--sage-12: color(display-p3 .927 .933 .93);--sage-a1: color(display-p3 0 0 0 / 0);--sage-a2: color(display-p3 .976 .988 .984 / .03);--sage-a3: color(display-p3 .992 .945 .941 / .072);--sage-a4: color(display-p3 .988 .996 .992 / .102);--sage-a5: color(display-p3 .992 1 .996 / .131);--sage-a6: color(display-p3 .973 1 .976 / .173);--sage-a7: color(display-p3 .957 1 .976 / .233);--sage-a8: color(display-p3 .957 1 .984 / .334);--sage-a9: color(display-p3 .902 1 .957 / .397);--sage-a10: color(display-p3 .929 1 .973 / .452);--sage-a11: color(display-p3 .969 1 .988 / .688);--sage-a12: color(display-p3 .992 1 .996 / .929);--olive-1: color(display-p3 .067 .07 .063);--olive-2: color(display-p3 .095 .098 .091);--olive-3: color(display-p3 .131 .135 .126);--olive-4: color(display-p3 .158 .163 .153);--olive-5: color(display-p3 .186 .192 .18);--olive-6: color(display-p3 .221 .229 .215);--olive-7: color(display-p3 .273 .284 .266);--olive-8: color(display-p3 .365 .382 .359);--olive-9: color(display-p3 .414 .438 .404);--olive-10: color(display-p3 .467 .49 .458);--olive-11: color(display-p3 .69 .709 .682);--olive-12: color(display-p3 .927 .933 .926);--olive-a1: color(display-p3 0 0 0 / 0);--olive-a2: color(display-p3 .984 .988 .976 / .03);--olive-a3: color(display-p3 .992 .996 .988 / .068);--olive-a4: color(display-p3 .953 .996 .949 / .102);--olive-a5: color(display-p3 .969 1 .965 / .131);--olive-a6: color(display-p3 .973 1 .969 / .169);--olive-a7: color(display-p3 .98 1 .961 / .228);--olive-a8: color(display-p3 .961 1 .957 / .334);--olive-a9: color(display-p3 .949 1 .922 / .397);--olive-a10: color(display-p3 .953 1 .941 / .452);--olive-a11: color(display-p3 .976 1 .965 / .688);--olive-a12: color(display-p3 .992 1 .992 / .929);--sand-1: color(display-p3 .067 .067 .063);--sand-2: color(display-p3 .098 .098 .094);--sand-3: color(display-p3 .135 .135 .129);--sand-4: color(display-p3 .164 .163 .156);--sand-5: color(display-p3 .193 .192 .183);--sand-6: color(display-p3 .23 .229 .217);--sand-7: color(display-p3 .285 .282 .267);--sand-8: color(display-p3 .384 .378 .357);--sand-9: color(display-p3 .434 .428 .403);--sand-10: color(display-p3 .487 .481 .456);--sand-11: color(display-p3 .707 .703 .68);--sand-12: color(display-p3 .933 .933 .926);--sand-a1: color(display-p3 0 0 0 / 0);--sand-a2: color(display-p3 .992 .992 .988 / .034);--sand-a3: color(display-p3 .996 .996 .992 / .072);--sand-a4: color(display-p3 .992 .992 .953 / .106);--sand-a5: color(display-p3 1 1 .965 / .135);--sand-a6: color(display-p3 1 .976 .929 / .177);--sand-a7: color(display-p3 1 .984 .929 / .236);--sand-a8: color(display-p3 1 .976 .925 / .341);--sand-a9: color(display-p3 1 .98 .925 / .395);--sand-a10: color(display-p3 1 .992 .933 / .45);--sand-a11: color(display-p3 1 .996 .961 / .685);--sand-a12: color(display-p3 1 1 .992 / .929);--amber-1: color(display-p3 .082 .07 .05);--amber-2: color(display-p3 .111 .094 .064);--amber-3: color(display-p3 .178 .128 .049);--amber-4: color(display-p3 .239 .156 0);--amber-5: color(display-p3 .29 .193 0);--amber-6: color(display-p3 .344 .245 .076);--amber-7: color(display-p3 .422 .314 .141);--amber-8: color(display-p3 .535 .399 .189);--amber-9: color(display-p3 1 .77 .26);--amber-10: color(display-p3 1 .87 .15);--amber-11: color(display-p3 1 .8 .29);--amber-12: color(display-p3 .984 .909 .726);--amber-a1: color(display-p3 .992 .298 0 / .017);--amber-a2: color(display-p3 .988 .651 0 / .047);--amber-a3: color(display-p3 1 .6 0 / .118);--amber-a4: color(display-p3 1 .557 0 / .185);--amber-a5: color(display-p3 1 .592 0 / .24);--amber-a6: color(display-p3 1 .659 .094 / .299);--amber-a7: color(display-p3 1 .714 .263 / .383);--amber-a8: color(display-p3 .996 .729 .306 / .5);--amber-a9: color(display-p3 1 .769 .259);--amber-a10: color(display-p3 1 .871 .149);--amber-a11: color(display-p3 1 .8 .29);--amber-a12: color(display-p3 .984 .909 .726);--blue-1: color(display-p3 .057 .081 .122);--blue-2: color(display-p3 .072 .098 .147);--blue-3: color(display-p3 .078 .154 .27);--blue-4: color(display-p3 .033 .197 .37);--blue-5: color(display-p3 .08 .245 .441);--blue-6: color(display-p3 .14 .298 .511);--blue-7: color(display-p3 .195 .361 .6);--blue-8: color(display-p3 .239 .434 .72);--blue-9: color(display-p3 .247 .556 .969);--blue-10: color(display-p3 .344 .612 .973);--blue-11: color(display-p3 .49 .72 1);--blue-12: color(display-p3 .788 .898 .99);--blue-a1: color(display-p3 0 .333 1 / .059);--blue-a2: color(display-p3 .114 .435 .988 / .085);--blue-a3: color(display-p3 .122 .463 1 / .219);--blue-a4: color(display-p3 0 .467 1 / .324);--blue-a5: color(display-p3 .098 .51 1 / .4);--blue-a6: color(display-p3 .224 .557 1 / .475);--blue-a7: color(display-p3 .294 .584 1 / .572);--blue-a8: color(display-p3 .314 .592 1 / .702);--blue-a9: color(display-p3 .251 .573 .996 / .967);--blue-a10: color(display-p3 .357 .631 1 / .971);--blue-a11: color(display-p3 .49 .72 1);--blue-a12: color(display-p3 .788 .898 .99);--bronze-1: color(display-p3 .076 .067 .063);--bronze-2: color(display-p3 .106 .097 .093);--bronze-3: color(display-p3 .147 .132 .125);--bronze-4: color(display-p3 .185 .166 .156);--bronze-5: color(display-p3 .227 .202 .19);--bronze-6: color(display-p3 .278 .246 .23);--bronze-7: color(display-p3 .343 .302 .281);--bronze-8: color(display-p3 .426 .374 .347);--bronze-9: color(display-p3 .611 .507 .455);--bronze-10: color(display-p3 .66 .556 .504);--bronze-11: color(display-p3 .81 .707 .655);--bronze-12: color(display-p3 .921 .88 .854);--bronze-a1: color(display-p3 .941 .067 0 / .009);--bronze-a2: color(display-p3 .98 .8 .706 / .043);--bronze-a3: color(display-p3 .988 .851 .761 / .085);--bronze-a4: color(display-p3 .996 .839 .78 / .127);--bronze-a5: color(display-p3 .996 .863 .773 / .173);--bronze-a6: color(display-p3 1 .863 .796 / .227);--bronze-a7: color(display-p3 1 .867 .8 / .295);--bronze-a8: color(display-p3 1 .859 .788 / .387);--bronze-a9: color(display-p3 1 .82 .733 / .585);--bronze-a10: color(display-p3 1 .839 .761 / .635);--bronze-a11: color(display-p3 .81 .707 .655);--bronze-a12: color(display-p3 .921 .88 .854);--brown-1: color(display-p3 .071 .067 .059);--brown-2: color(display-p3 .107 .095 .087);--brown-3: color(display-p3 .151 .13 .115);--brown-4: color(display-p3 .191 .161 .138);--brown-5: color(display-p3 .235 .194 .162);--brown-6: color(display-p3 .291 .237 .192);--brown-7: color(display-p3 .365 .295 .232);--brown-8: color(display-p3 .469 .377 .287);--brown-9: color(display-p3 .651 .505 .368);--brown-10: color(display-p3 .697 .557 .423);--brown-11: color(display-p3 .835 .715 .597);--brown-12: color(display-p3 .938 .885 .802);--brown-a1: color(display-p3 .855 .071 0 / .005);--brown-a2: color(display-p3 .98 .706 .525 / .043);--brown-a3: color(display-p3 .996 .745 .576 / .093);--brown-a4: color(display-p3 1 .765 .592 / .135);--brown-a5: color(display-p3 1 .761 .588 / .181);--brown-a6: color(display-p3 1 .773 .592 / .24);--brown-a7: color(display-p3 .996 .776 .58 / .32);--brown-a8: color(display-p3 1 .78 .573 / .433);--brown-a9: color(display-p3 1 .769 .549 / .627);--brown-a10: color(display-p3 1 .792 .596 / .677);--brown-a11: color(display-p3 .835 .715 .597);--brown-a12: color(display-p3 .938 .885 .802);--crimson-1: color(display-p3 .093 .068 .078);--crimson-2: color(display-p3 .117 .078 .095);--crimson-3: color(display-p3 .203 .091 .143);--crimson-4: color(display-p3 .277 .087 .182);--crimson-5: color(display-p3 .332 .115 .22);--crimson-6: color(display-p3 .394 .162 .268);--crimson-7: color(display-p3 .489 .222 .336);--crimson-8: color(display-p3 .638 .289 .429);--crimson-9: color(display-p3 .843 .298 .507);--crimson-10: color(display-p3 .864 .364 .539);--crimson-11: color(display-p3 1 .56 .66);--crimson-12: color(display-p3 .966 .834 .906);--crimson-a1: color(display-p3 .984 .071 .463 / .03);--crimson-a2: color(display-p3 .996 .282 .569 / .055);--crimson-a3: color(display-p3 .996 .227 .573 / .148);--crimson-a4: color(display-p3 1 .157 .569 / .227);--crimson-a5: color(display-p3 1 .231 .604 / .286);--crimson-a6: color(display-p3 1 .337 .643 / .349);--crimson-a7: color(display-p3 1 .416 .663 / .454);--crimson-a8: color(display-p3 .996 .427 .651 / .614);--crimson-a9: color(display-p3 1 .345 .596 / .832);--crimson-a10: color(display-p3 1 .42 .62 / .853);--crimson-a11: color(display-p3 1 .56 .66);--crimson-a12: color(display-p3 .966 .834 .906);--cyan-1: color(display-p3 .053 .085 .098);--cyan-2: color(display-p3 .072 .105 .122);--cyan-3: color(display-p3 .073 .168 .209);--cyan-4: color(display-p3 .063 .216 .277);--cyan-5: color(display-p3 .091 .267 .336);--cyan-6: color(display-p3 .137 .324 .4);--cyan-7: color(display-p3 .186 .398 .484);--cyan-8: color(display-p3 .23 .496 .6);--cyan-9: color(display-p3 .282 .627 .765);--cyan-10: color(display-p3 .331 .675 .801);--cyan-11: color(display-p3 .446 .79 .887);--cyan-12: color(display-p3 .757 .919 .962);--cyan-a1: color(display-p3 0 .647 .992 / .034);--cyan-a2: color(display-p3 .133 .733 1 / .059);--cyan-a3: color(display-p3 .122 .741 .996 / .152);--cyan-a4: color(display-p3 .051 .725 1 / .227);--cyan-a5: color(display-p3 .149 .757 1 / .29);--cyan-a6: color(display-p3 .267 .792 1 / .358);--cyan-a7: color(display-p3 .333 .808 1 / .446);--cyan-a8: color(display-p3 .357 .816 1 / .572);--cyan-a9: color(display-p3 .357 .82 1 / .748);--cyan-a10: color(display-p3 .4 .839 1 / .786);--cyan-a11: color(display-p3 .446 .79 .887);--cyan-a12: color(display-p3 .757 .919 .962);--gold-1: color(display-p3 .071 .071 .067);--gold-2: color(display-p3 .104 .101 .09);--gold-3: color(display-p3 .141 .136 .122);--gold-4: color(display-p3 .177 .17 .152);--gold-5: color(display-p3 .217 .207 .185);--gold-6: color(display-p3 .265 .252 .225);--gold-7: color(display-p3 .327 .31 .277);--gold-8: color(display-p3 .407 .384 .342);--gold-9: color(display-p3 .579 .517 .41);--gold-10: color(display-p3 .628 .566 .463);--gold-11: color(display-p3 .784 .728 .635);--gold-12: color(display-p3 .906 .887 .855);--gold-a1: color(display-p3 .855 .855 .071 / .005);--gold-a2: color(display-p3 .98 .89 .616 / .043);--gold-a3: color(display-p3 1 .949 .753 / .08);--gold-a4: color(display-p3 1 .933 .8 / .118);--gold-a5: color(display-p3 1 .949 .804 / .16);--gold-a6: color(display-p3 1 .925 .8 / .215);--gold-a7: color(display-p3 1 .945 .831 / .278);--gold-a8: color(display-p3 1 .937 .82 / .366);--gold-a9: color(display-p3 .996 .882 .69 / .551);--gold-a10: color(display-p3 1 .894 .725 / .601);--gold-a11: color(display-p3 .784 .728 .635);--gold-a12: color(display-p3 .906 .887 .855);--grass-1: color(display-p3 .062 .083 .067);--grass-2: color(display-p3 .083 .103 .085);--grass-3: color(display-p3 .118 .163 .122);--grass-4: color(display-p3 .142 .225 .15);--grass-5: color(display-p3 .178 .279 .186);--grass-6: color(display-p3 .217 .337 .224);--grass-7: color(display-p3 .258 .4 .264);--grass-8: color(display-p3 .302 .47 .305);--grass-9: color(display-p3 .38 .647 .378);--grass-10: color(display-p3 .426 .694 .426);--grass-11: color(display-p3 .535 .807 .542);--grass-12: color(display-p3 .797 .936 .776);--grass-a1: color(display-p3 0 .992 .071 / .017);--grass-a2: color(display-p3 .482 .996 .584 / .038);--grass-a3: color(display-p3 .549 .992 .588 / .106);--grass-a4: color(display-p3 .51 .996 .557 / .169);--grass-a5: color(display-p3 .553 1 .588 / .227);--grass-a6: color(display-p3 .584 1 .608 / .29);--grass-a7: color(display-p3 .604 1 .616 / .358);--grass-a8: color(display-p3 .608 1 .62 / .433);--grass-a9: color(display-p3 .573 1 .569 / .622);--grass-a10: color(display-p3 .6 .996 .6 / .673);--grass-a11: color(display-p3 .535 .807 .542);--grass-a12: color(display-p3 .797 .936 .776);--green-1: color(display-p3 .062 .083 .071);--green-2: color(display-p3 .079 .106 .09);--green-3: color(display-p3 .1 .173 .133);--green-4: color(display-p3 .115 .229 .166);--green-5: color(display-p3 .147 .282 .206);--green-6: color(display-p3 .185 .338 .25);--green-7: color(display-p3 .227 .403 .298);--green-8: color(display-p3 .27 .479 .351);--green-9: color(display-p3 .332 .634 .442);--green-10: color(display-p3 .357 .682 .474);--green-11: color(display-p3 .434 .828 .573);--green-12: color(display-p3 .747 .938 .807);--green-a1: color(display-p3 0 .992 .298 / .017);--green-a2: color(display-p3 .341 .98 .616 / .043);--green-a3: color(display-p3 .376 .996 .655 / .114);--green-a4: color(display-p3 .341 .996 .635 / .173);--green-a5: color(display-p3 .408 1 .678 / .232);--green-a6: color(display-p3 .475 1 .706 / .29);--green-a7: color(display-p3 .514 1 .706 / .362);--green-a8: color(display-p3 .529 1 .718 / .442);--green-a9: color(display-p3 .502 .996 .682 / .61);--green-a10: color(display-p3 .506 1 .682 / .66);--green-a11: color(display-p3 .434 .828 .573);--green-a12: color(display-p3 .747 .938 .807);--indigo-1: color(display-p3 .068 .074 .118);--indigo-2: color(display-p3 .081 .089 .144);--indigo-3: color(display-p3 .105 .141 .275);--indigo-4: color(display-p3 .129 .18 .369);--indigo-5: color(display-p3 .163 .22 .439);--indigo-6: color(display-p3 .203 .262 .5);--indigo-7: color(display-p3 .245 .309 .575);--indigo-8: color(display-p3 .285 .362 .674);--indigo-9: color(display-p3 .276 .384 .837);--indigo-10: color(display-p3 .354 .445 .866);--indigo-11: color(display-p3 .63 .69 1);--indigo-12: color(display-p3 .848 .881 .99);--indigo-a1: color(display-p3 .071 .212 .996 / .055);--indigo-a2: color(display-p3 .251 .345 .988 / .085);--indigo-a3: color(display-p3 .243 .404 1 / .223);--indigo-a4: color(display-p3 .263 .42 1 / .324);--indigo-a5: color(display-p3 .314 .451 1 / .4);--indigo-a6: color(display-p3 .361 .49 1 / .467);--indigo-a7: color(display-p3 .388 .51 1 / .547);--indigo-a8: color(display-p3 .404 .518 1 / .652);--indigo-a9: color(display-p3 .318 .451 1 / .824);--indigo-a10: color(display-p3 .404 .506 1 / .858);--indigo-a11: color(display-p3 .63 .69 1);--indigo-a12: color(display-p3 .848 .881 .99);--iris-1: color(display-p3 .075 .075 .114);--iris-2: color(display-p3 .089 .086 .14);--iris-3: color(display-p3 .128 .134 .272);--iris-4: color(display-p3 .153 .165 .382);--iris-5: color(display-p3 .192 .201 .44);--iris-6: color(display-p3 .239 .241 .491);--iris-7: color(display-p3 .291 .289 .565);--iris-8: color(display-p3 .35 .345 .673);--iris-9: color(display-p3 .357 .357 .81);--iris-10: color(display-p3 .428 .416 .843);--iris-11: color(display-p3 .685 .662 1);--iris-12: color(display-p3 .878 .875 .986);--iris-a1: color(display-p3 .224 .224 .992 / .051);--iris-a2: color(display-p3 .361 .314 1 / .08);--iris-a3: color(display-p3 .357 .373 1 / .219);--iris-a4: color(display-p3 .325 .361 1 / .337);--iris-a5: color(display-p3 .38 .4 1 / .4);--iris-a6: color(display-p3 .447 .447 1 / .454);--iris-a7: color(display-p3 .486 .486 1 / .534);--iris-a8: color(display-p3 .502 .494 1 / .652);--iris-a9: color(display-p3 .431 .431 1 / .799);--iris-a10: color(display-p3 .502 .486 1 / .832);--iris-a11: color(display-p3 .685 .662 1);--iris-a12: color(display-p3 .878 .875 .986);--jade-1: color(display-p3 .059 .083 .071);--jade-2: color(display-p3 .078 .11 .094);--jade-3: color(display-p3 .091 .176 .138);--jade-4: color(display-p3 .102 .228 .177);--jade-5: color(display-p3 .133 .279 .221);--jade-6: color(display-p3 .174 .334 .273);--jade-7: color(display-p3 .219 .402 .335);--jade-8: color(display-p3 .263 .488 .411);--jade-9: color(display-p3 .319 .63 .521);--jade-10: color(display-p3 .338 .68 .555);--jade-11: color(display-p3 .4 .835 .656);--jade-12: color(display-p3 .734 .934 .838);--jade-a1: color(display-p3 0 .992 .298 / .017);--jade-a2: color(display-p3 .318 .988 .651 / .047);--jade-a3: color(display-p3 .267 1 .667 / .118);--jade-a4: color(display-p3 .275 .996 .702 / .173);--jade-a5: color(display-p3 .361 1 .741 / .227);--jade-a6: color(display-p3 .439 1 .796 / .286);--jade-a7: color(display-p3 .49 1 .804 / .362);--jade-a8: color(display-p3 .506 1 .835 / .45);--jade-a9: color(display-p3 .478 .996 .816 / .606);--jade-a10: color(display-p3 .478 1 .816 / .656);--jade-a11: color(display-p3 .4 .835 .656);--jade-a12: color(display-p3 .734 .934 .838);--lime-1: color(display-p3 .067 .073 .048);--lime-2: color(display-p3 .086 .1 .067);--lime-3: color(display-p3 .13 .16 .099);--lime-4: color(display-p3 .172 .214 .126);--lime-5: color(display-p3 .213 .266 .153);--lime-6: color(display-p3 .257 .321 .182);--lime-7: color(display-p3 .307 .383 .215);--lime-8: color(display-p3 .365 .456 .25);--lime-9: color(display-p3 .78 .928 .466);--lime-10: color(display-p3 .865 .995 .519);--lime-11: color(display-p3 .771 .893 .485);--lime-12: color(display-p3 .905 .966 .753);--lime-a1: color(display-p3 .067 .941 0 / .009);--lime-a2: color(display-p3 .584 .996 .071 / .038);--lime-a3: color(display-p3 .69 1 .38 / .101);--lime-a4: color(display-p3 .729 1 .435 / .16);--lime-a5: color(display-p3 .745 1 .471 / .215);--lime-a6: color(display-p3 .769 1 .482 / .274);--lime-a7: color(display-p3 .769 1 .506 / .341);--lime-a8: color(display-p3 .784 1 .51 / .416);--lime-a9: color(display-p3 .839 1 .502 / .925);--lime-a10: color(display-p3 .871 1 .522 / .996);--lime-a11: color(display-p3 .771 .893 .485);--lime-a12: color(display-p3 .905 .966 .753);--mint-1: color(display-p3 .059 .082 .081);--mint-2: color(display-p3 .068 .104 .105);--mint-3: color(display-p3 .077 .17 .168);--mint-4: color(display-p3 .068 .224 .22);--mint-5: color(display-p3 .104 .275 .264);--mint-6: color(display-p3 .154 .332 .313);--mint-7: color(display-p3 .207 .403 .373);--mint-8: color(display-p3 .258 .49 .441);--mint-9: color(display-p3 .62 .908 .834);--mint-10: color(display-p3 .725 .954 .898);--mint-11: color(display-p3 .482 .825 .733);--mint-12: color(display-p3 .807 .955 .887);--mint-a1: color(display-p3 0 .992 .992 / .017);--mint-a2: color(display-p3 .071 .98 .98 / .043);--mint-a3: color(display-p3 .176 .996 .996 / .11);--mint-a4: color(display-p3 .071 .996 .973 / .169);--mint-a5: color(display-p3 .243 1 .949 / .223);--mint-a6: color(display-p3 .369 1 .933 / .286);--mint-a7: color(display-p3 .459 1 .914 / .362);--mint-a8: color(display-p3 .49 1 .89 / .454);--mint-a9: color(display-p3 .678 .996 .914 / .904);--mint-a10: color(display-p3 .761 1 .941 / .95);--mint-a11: color(display-p3 .482 .825 .733);--mint-a12: color(display-p3 .807 .955 .887);--orange-1: color(display-p3 .088 .07 .057);--orange-2: color(display-p3 .113 .089 .061);--orange-3: color(display-p3 .189 .12 .056);--orange-4: color(display-p3 .262 .132 0);--orange-5: color(display-p3 .315 .168 .016);--orange-6: color(display-p3 .376 .219 .088);--orange-7: color(display-p3 .465 .283 .147);--orange-8: color(display-p3 .601 .359 .201);--orange-9: color(display-p3 .9 .45 .2);--orange-10: color(display-p3 .98 .51 .23);--orange-11: color(display-p3 1 .63 .38);--orange-12: color(display-p3 .98 .883 .775);--orange-a1: color(display-p3 .961 .247 0 / .022);--orange-a2: color(display-p3 .992 .529 0 / .051);--orange-a3: color(display-p3 .996 .486 0 / .131);--orange-a4: color(display-p3 .996 .384 0 / .211);--orange-a5: color(display-p3 1 .455 0 / .265);--orange-a6: color(display-p3 1 .529 .129 / .332);--orange-a7: color(display-p3 1 .569 .251 / .429);--orange-a8: color(display-p3 1 .584 .302 / .572);--orange-a9: color(display-p3 1 .494 .216 / .895);--orange-a10: color(display-p3 1 .522 .235 / .979);--orange-a11: color(display-p3 1 .63 .38);--orange-a12: color(display-p3 .98 .883 .775);--pink-1: color(display-p3 .093 .068 .089);--pink-2: color(display-p3 .121 .073 .11);--pink-3: color(display-p3 .198 .098 .179);--pink-4: color(display-p3 .271 .095 .231);--pink-5: color(display-p3 .32 .127 .273);--pink-6: color(display-p3 .382 .177 .326);--pink-7: color(display-p3 .477 .238 .405);--pink-8: color(display-p3 .612 .304 .51);--pink-9: color(display-p3 .775 .297 .61);--pink-10: color(display-p3 .808 .356 .645);--pink-11: color(display-p3 1 .535 .78);--pink-12: color(display-p3 .964 .826 .912);--pink-a1: color(display-p3 .984 .071 .855 / .03);--pink-a2: color(display-p3 1 .2 .8 / .059);--pink-a3: color(display-p3 1 .294 .886 / .139);--pink-a4: color(display-p3 1 .192 .82 / .219);--pink-a5: color(display-p3 1 .282 .827 / .274);--pink-a6: color(display-p3 1 .396 .835 / .337);--pink-a7: color(display-p3 1 .459 .831 / .442);--pink-a8: color(display-p3 1 .478 .827 / .585);--pink-a9: color(display-p3 1 .373 .784 / .761);--pink-a10: color(display-p3 1 .435 .792 / .795);--pink-a11: color(display-p3 1 .535 .78);--pink-a12: color(display-p3 .964 .826 .912);--plum-1: color(display-p3 .09 .068 .092);--plum-2: color(display-p3 .118 .077 .121);--plum-3: color(display-p3 .192 .105 .202);--plum-4: color(display-p3 .25 .121 .271);--plum-5: color(display-p3 .293 .152 .319);--plum-6: color(display-p3 .343 .198 .372);--plum-7: color(display-p3 .424 .262 .461);--plum-8: color(display-p3 .54 .341 .595);--plum-9: color(display-p3 .624 .313 .708);--plum-10: color(display-p3 .666 .365 .748);--plum-11: color(display-p3 .86 .602 .933);--plum-12: color(display-p3 .936 .836 .949);--plum-a1: color(display-p3 .973 .071 .973 / .026);--plum-a2: color(display-p3 .933 .267 1 / .059);--plum-a3: color(display-p3 .918 .333 .996 / .148);--plum-a4: color(display-p3 .91 .318 1 / .219);--plum-a5: color(display-p3 .914 .388 1 / .269);--plum-a6: color(display-p3 .906 .463 1 / .328);--plum-a7: color(display-p3 .906 .529 1 / .425);--plum-a8: color(display-p3 .906 .553 1 / .568);--plum-a9: color(display-p3 .875 .427 1 / .69);--plum-a10: color(display-p3 .886 .471 .996 / .732);--plum-a11: color(display-p3 .86 .602 .933);--plum-a12: color(display-p3 .936 .836 .949);--purple-1: color(display-p3 .09 .068 .103);--purple-2: color(display-p3 .113 .082 .134);--purple-3: color(display-p3 .175 .112 .224);--purple-4: color(display-p3 .224 .137 .297);--purple-5: color(display-p3 .264 .167 .349);--purple-6: color(display-p3 .311 .208 .406);--purple-7: color(display-p3 .381 .266 .496);--purple-8: color(display-p3 .49 .349 .649);--purple-9: color(display-p3 .523 .318 .751);--purple-10: color(display-p3 .57 .373 .791);--purple-11: color(display-p3 .8 .62 1);--purple-12: color(display-p3 .913 .854 .971);--purple-a1: color(display-p3 .686 .071 .996 / .038);--purple-a2: color(display-p3 .722 .286 .996 / .072);--purple-a3: color(display-p3 .718 .349 .996 / .169);--purple-a4: color(display-p3 .702 .353 1 / .248);--purple-a5: color(display-p3 .718 .404 1 / .303);--purple-a6: color(display-p3 .733 .455 1 / .366);--purple-a7: color(display-p3 .753 .506 1 / .458);--purple-a8: color(display-p3 .749 .522 1 / .622);--purple-a9: color(display-p3 .686 .408 1 / .736);--purple-a10: color(display-p3 .71 .459 1 / .778);--purple-a11: color(display-p3 .8 .62 1);--purple-a12: color(display-p3 .913 .854 .971);--red-1: color(display-p3 .093 .068 .067);--red-2: color(display-p3 .118 .077 .079);--red-3: color(display-p3 .211 .081 .099);--red-4: color(display-p3 .287 .079 .113);--red-5: color(display-p3 .348 .11 .142);--red-6: color(display-p3 .414 .16 .183);--red-7: color(display-p3 .508 .224 .236);--red-8: color(display-p3 .659 .298 .297);--red-9: color(display-p3 .83 .329 .324);--red-10: color(display-p3 .861 .403 .387);--red-11: color(display-p3 1 .57 .55);--red-12: color(display-p3 .971 .826 .852);--red-a1: color(display-p3 .984 .071 .071 / .03);--red-a2: color(display-p3 .996 .282 .282 / .055);--red-a3: color(display-p3 1 .169 .271 / .156);--red-a4: color(display-p3 1 .118 .267 / .236);--red-a5: color(display-p3 1 .212 .314 / .303);--red-a6: color(display-p3 1 .318 .38 / .374);--red-a7: color(display-p3 1 .4 .424 / .475);--red-a8: color(display-p3 1 .431 .431 / .635);--red-a9: color(display-p3 1 .388 .384 / .82);--red-a10: color(display-p3 1 .463 .447 / .853);--red-a11: color(display-p3 1 .57 .55);--red-a12: color(display-p3 .971 .826 .852);--ruby-1: color(display-p3 .093 .068 .074);--ruby-2: color(display-p3 .113 .083 .089);--ruby-3: color(display-p3 .208 .088 .117);--ruby-4: color(display-p3 .279 .092 .147);--ruby-5: color(display-p3 .337 .12 .18);--ruby-6: color(display-p3 .401 .166 .223);--ruby-7: color(display-p3 .495 .224 .281);--ruby-8: color(display-p3 .652 .295 .359);--ruby-9: color(display-p3 .83 .323 .408);--ruby-10: color(display-p3 .857 .392 .455);--ruby-11: color(display-p3 1 .57 .59);--ruby-12: color(display-p3 .968 .83 .88);--ruby-a1: color(display-p3 .984 .071 .329 / .03);--ruby-a2: color(display-p3 .992 .376 .529 / .051);--ruby-a3: color(display-p3 .996 .196 .404 / .152);--ruby-a4: color(display-p3 1 .173 .416 / .227);--ruby-a5: color(display-p3 1 .259 .459 / .29);--ruby-a6: color(display-p3 1 .341 .506 / .358);--ruby-a7: color(display-p3 1 .412 .541 / .458);--ruby-a8: color(display-p3 1 .431 .537 / .627);--ruby-a9: color(display-p3 1 .376 .482 / .82);--ruby-a10: color(display-p3 1 .447 .522 / .849);--ruby-a11: color(display-p3 1 .57 .59);--ruby-a12: color(display-p3 .968 .83 .88);--sky-1: color(display-p3 .056 .078 .116);--sky-2: color(display-p3 .075 .101 .149);--sky-3: color(display-p3 .089 .154 .244);--sky-4: color(display-p3 .106 .207 .323);--sky-5: color(display-p3 .135 .261 .394);--sky-6: color(display-p3 .17 .322 .469);--sky-7: color(display-p3 .205 .394 .557);--sky-8: color(display-p3 .232 .48 .665);--sky-9: color(display-p3 .585 .877 .983);--sky-10: color(display-p3 .718 .925 .991);--sky-11: color(display-p3 .536 .772 .924);--sky-12: color(display-p3 .799 .947 .993);--sky-a1: color(display-p3 0 .282 .996 / .055);--sky-a2: color(display-p3 .157 .467 .992 / .089);--sky-a3: color(display-p3 .192 .522 .996 / .19);--sky-a4: color(display-p3 .212 .584 1 / .274);--sky-a5: color(display-p3 .259 .631 1 / .349);--sky-a6: color(display-p3 .302 .655 1 / .433);--sky-a7: color(display-p3 .329 .686 1 / .526);--sky-a8: color(display-p3 .325 .71 1 / .643);--sky-a9: color(display-p3 .592 .894 1 / .984);--sky-a10: color(display-p3 .722 .933 1 / .992);--sky-a11: color(display-p3 .536 .772 .924);--sky-a12: color(display-p3 .799 .947 .993);--teal-1: color(display-p3 .059 .083 .079);--teal-2: color(display-p3 .075 .11 .107);--teal-3: color(display-p3 .087 .175 .165);--teal-4: color(display-p3 .087 .227 .214);--teal-5: color(display-p3 .12 .277 .261);--teal-6: color(display-p3 .162 .335 .314);--teal-7: color(display-p3 .205 .406 .379);--teal-8: color(display-p3 .245 .489 .453);--teal-9: color(display-p3 .297 .637 .581);--teal-10: color(display-p3 .319 .69 .62);--teal-11: color(display-p3 .388 .835 .719);--teal-12: color(display-p3 .734 .934 .87);--teal-a1: color(display-p3 0 .992 .761 / .017);--teal-a2: color(display-p3 .235 .988 .902 / .047);--teal-a3: color(display-p3 .235 1 .898 / .118);--teal-a4: color(display-p3 .18 .996 .929 / .173);--teal-a5: color(display-p3 .31 1 .933 / .227);--teal-a6: color(display-p3 .396 1 .933 / .286);--teal-a7: color(display-p3 .443 1 .925 / .366);--teal-a8: color(display-p3 .459 1 .925 / .454);--teal-a9: color(display-p3 .443 .996 .906 / .61);--teal-a10: color(display-p3 .439 .996 .89 / .669);--teal-a11: color(display-p3 .388 .835 .719);--teal-a12: color(display-p3 .734 .934 .87);--tomato-1: color(display-p3 .09 .068 .067);--tomato-2: color(display-p3 .115 .084 .076);--tomato-3: color(display-p3 .205 .097 .083);--tomato-4: color(display-p3 .282 .099 .077);--tomato-5: color(display-p3 .339 .129 .101);--tomato-6: color(display-p3 .398 .179 .141);--tomato-7: color(display-p3 .487 .245 .194);--tomato-8: color(display-p3 .629 .322 .248);--tomato-9: color(display-p3 .831 .345 .231);--tomato-10: color(display-p3 .862 .415 .298);--tomato-11: color(display-p3 1 .585 .455);--tomato-12: color(display-p3 .959 .833 .802);--tomato-a1: color(display-p3 .973 .071 .071 / .026);--tomato-a2: color(display-p3 .992 .376 .224 / .051);--tomato-a3: color(display-p3 .996 .282 .176 / .148);--tomato-a4: color(display-p3 1 .204 .118 / .232);--tomato-a5: color(display-p3 1 .286 .192 / .29);--tomato-a6: color(display-p3 1 .392 .278 / .353);--tomato-a7: color(display-p3 1 .459 .349 / .45);--tomato-a8: color(display-p3 1 .49 .369 / .601);--tomato-a9: color(display-p3 1 .408 .267 / .82);--tomato-a10: color(display-p3 1 .478 .341 / .853);--tomato-a11: color(display-p3 1 .585 .455);--tomato-a12: color(display-p3 .959 .833 .802);--violet-1: color(display-p3 .077 .071 .118);--violet-2: color(display-p3 .101 .084 .141);--violet-3: color(display-p3 .154 .123 .256);--violet-4: color(display-p3 .191 .148 .345);--violet-5: color(display-p3 .226 .182 .396);--violet-6: color(display-p3 .269 .223 .449);--violet-7: color(display-p3 .326 .277 .53);--violet-8: color(display-p3 .399 .346 .656);--violet-9: color(display-p3 .417 .341 .784);--violet-10: color(display-p3 .477 .402 .823);--violet-11: color(display-p3 .72 .65 1);--violet-12: color(display-p3 .883 .867 .986);--violet-a1: color(display-p3 .282 .141 .996 / .055);--violet-a2: color(display-p3 .51 .263 1 / .08);--violet-a3: color(display-p3 .494 .337 .996 / .202);--violet-a4: color(display-p3 .49 .345 1 / .299);--violet-a5: color(display-p3 .525 .392 1 / .353);--violet-a6: color(display-p3 .569 .455 1 / .408);--violet-a7: color(display-p3 .588 .494 1 / .496);--violet-a8: color(display-p3 .596 .51 1 / .631);--violet-a9: color(display-p3 .522 .424 1 / .769);--violet-a10: color(display-p3 .576 .482 1 / .811);--violet-a11: color(display-p3 .72 .65 1);--violet-a12: color(display-p3 .883 .867 .986);--yellow-1: color(display-p3 .078 .069 .047);--yellow-2: color(display-p3 .103 .094 .063);--yellow-3: color(display-p3 .168 .137 .039);--yellow-4: color(display-p3 .209 .169 0);--yellow-5: color(display-p3 .255 .209 0);--yellow-6: color(display-p3 .31 .261 .07);--yellow-7: color(display-p3 .389 .331 .135);--yellow-8: color(display-p3 .497 .42 .182);--yellow-9: color(display-p3 1 .92 .22);--yellow-10: color(display-p3 1 1 .456);--yellow-11: color(display-p3 .948 .885 .392);--yellow-12: color(display-p3 .959 .934 .731);--yellow-a1: color(display-p3 .973 .369 0 / .013);--yellow-a2: color(display-p3 .996 .792 0 / .038);--yellow-a3: color(display-p3 .996 .71 0 / .11);--yellow-a4: color(display-p3 .996 .741 0 / .152);--yellow-a5: color(display-p3 .996 .765 0 / .202);--yellow-a6: color(display-p3 .996 .816 .082 / .261);--yellow-a7: color(display-p3 1 .831 .263 / .345);--yellow-a8: color(display-p3 1 .831 .314 / .463);--yellow-a9: color(display-p3 1 .922 .22);--yellow-a10: color(display-p3 1 1 .455);--yellow-a11: color(display-p3 .948 .885 .392);--yellow-a12: color(display-p3 .959 .934 .731);--gray-surface: color(display-p3 .1255 .1255 .1255 / .5);--mauve-surface: color(display-p3 .1333 .1255 .1333 / .5);--slate-surface: color(display-p3 .1176 .1255 .1333 / .5);--sage-surface: color(display-p3 .1176 .1255 .1176 / .5);--olive-surface: color(display-p3 .1176 .1255 .1176 / .5);--sand-surface: color(display-p3 .1255 .1255 .1255 / .5);--amber-surface: color(display-p3 .1412 .1176 .0784 / .5);--blue-surface: color(display-p3 .0706 .1255 .2196 / .5);--bronze-surface: color(display-p3 .1412 .1255 .1176 / .5);--brown-surface: color(display-p3 .1412 .1176 .102 / .5);--crimson-surface: color(display-p3 .1647 .0863 .1176 / .5);--cyan-surface: color(display-p3 .0784 .1412 .1725 / .5);--gold-surface: color(display-p3 .1412 .1333 .1098 / .5);--grass-surface: color(display-p3 .102 .1333 .102 / .5);--green-surface: color(display-p3 .0941 .1412 .1098 / .5);--indigo-surface: color(display-p3 .0941 .1098 .2196 / .5);--iris-surface: color(display-p3 .1098 .102 .2118 / .5);--jade-surface: color(display-p3 .0863 .149 .1176 / .5);--lime-surface: color(display-p3 .1098 .1255 .0784 / .5);--mint-surface: color(display-p3 .0941 .149 .1412 / .5);--orange-surface: color(display-p3 .1412 .1098 .0706 / .5);--pink-surface: color(display-p3 .1725 .0784 .149 / .5);--plum-surface: color(display-p3 .1647 .0863 .1725 / .5);--purple-surface: color(display-p3 .149 .0941 .1961 / .5);--red-surface: color(display-p3 .1647 .0863 .0863 / .5);--ruby-surface: color(display-p3 .1569 .0941 .1098 / .5);--sky-surface: color(display-p3 .0863 .1333 .2196 / .5);--teal-surface: color(display-p3 .0863 .149 .1412 / .5);--tomato-surface: color(display-p3 .1569 .0941 .0784 / .5);--violet-surface: color(display-p3 .1333 .102 .2118 / .5);--yellow-surface: color(display-p3 .1333 .1176 .0706 / .5)}}}:root{--gray-contrast: white;--mauve-contrast: white;--slate-contrast: white;--sage-contrast: white;--olive-contrast: white;--sand-contrast: white;--amber-contrast: #21201c;--blue-contrast: white;--bronze-contrast: white;--brown-contrast: white;--crimson-contrast: white;--cyan-contrast: white;--gold-contrast: white;--grass-contrast: white;--green-contrast: white;--indigo-contrast: white;--iris-contrast: white;--jade-contrast: white;--lime-contrast: #1d211c;--mint-contrast: #1a211e;--orange-contrast: white;--pink-contrast: white;--plum-contrast: white;--purple-contrast: white;--red-contrast: white;--ruby-contrast: white;--sky-contrast: #1c2024;--teal-contrast: white;--tomato-contrast: white;--violet-contrast: white;--yellow-contrast: #21201c;--black-a1: rgba(0, 0, 0, .05);--black-a2: rgba(0, 0, 0, .1);--black-a3: rgba(0, 0, 0, .15);--black-a4: rgba(0, 0, 0, .2);--black-a5: rgba(0, 0, 0, .3);--black-a6: rgba(0, 0, 0, .4);--black-a7: rgba(0, 0, 0, .5);--black-a8: rgba(0, 0, 0, .6);--black-a9: rgba(0, 0, 0, .7);--black-a10: rgba(0, 0, 0, .8);--black-a11: rgba(0, 0, 0, .9);--black-a12: rgba(0, 0, 0, .95);--white-a1: rgba(255, 255, 255, .05);--white-a2: rgba(255, 255, 255, .1);--white-a3: rgba(255, 255, 255, .15);--white-a4: rgba(255, 255, 255, .2);--white-a5: rgba(255, 255, 255, .3);--white-a6: rgba(255, 255, 255, .4);--white-a7: rgba(255, 255, 255, .5);--white-a8: rgba(255, 255, 255, .6);--white-a9: rgba(255, 255, 255, .7);--white-a10: rgba(255, 255, 255, .8);--white-a11: rgba(255, 255, 255, .9);--white-a12: rgba(255, 255, 255, .95)}@supports (color: color-mix(in oklab,white,black)){.dark,.dark-theme{--amber-track: color-mix(in oklab, var(--amber-8), var(--amber-9) 75%);--lime-track: color-mix(in oklab, var(--lime-8), var(--lime-9) 65%);--mint-track: color-mix(in oklab, var(--mint-8), var(--mint-9) 65%);--sky-track: color-mix(in oklab, var(--sky-8), var(--sky-9) 65%);--yellow-track: color-mix(in oklab, var(--yellow-8), var(--yellow-9) 65%)}}@supports (color: color(display-p3 1 1 1)){@media (color-gamut: p3){:root{--black-a1: color(display-p3 0 0 0 / .05);--black-a2: color(display-p3 0 0 0 / .1);--black-a3: color(display-p3 0 0 0 / .15);--black-a4: color(display-p3 0 0 0 / .2);--black-a5: color(display-p3 0 0 0 / .3);--black-a6: color(display-p3 0 0 0 / .4);--black-a7: color(display-p3 0 0 0 / .5);--black-a8: color(display-p3 0 0 0 / .6);--black-a9: color(display-p3 0 0 0 / .7);--black-a10: color(display-p3 0 0 0 / .8);--black-a11: color(display-p3 0 0 0 / .9);--black-a12: color(display-p3 0 0 0 / .95);--white-a1: color(display-p3 1 1 1 / .05);--white-a2: color(display-p3 1 1 1 / .1);--white-a3: color(display-p3 1 1 1 / .15);--white-a4: color(display-p3 1 1 1 / .2);--white-a5: color(display-p3 1 1 1 / .3);--white-a6: color(display-p3 1 1 1 / .4);--white-a7: color(display-p3 1 1 1 / .5);--white-a8: color(display-p3 1 1 1 / .6);--white-a9: color(display-p3 1 1 1 / .7);--white-a10: color(display-p3 1 1 1 / .8);--white-a11: color(display-p3 1 1 1 / .9);--white-a12: color(display-p3 1 1 1 / .95)}}}:where(.radix-themes){--color-background: white;--color-overlay: var(--black-a6);--color-panel-solid: white;--color-panel-translucent: rgba(255, 255, 255, .7);--color-surface: rgba(255, 255, 255, .85);--color-transparent: rgb(0 0 0 / 0);--shadow-1: inset 0 0 0 1px var(--gray-a5), inset 0 1.5px 2px 0 var(--gray-a2), inset 0 1.5px 2px 0 var(--black-a2);--shadow-2: 0 0 0 1px var(--gray-a3), 0 0 0 .5px var(--black-a1), 0 1px 1px 0 var(--gray-a2), 0 2px 1px -1px var(--black-a1), 0 1px 3px 0 var(--black-a1);--shadow-3: 0 0 0 1px var(--gray-a3), 0 2px 3px -2px var(--gray-a3), 0 3px 12px -4px var(--black-a2), 0 4px 16px -8px var(--black-a2);--shadow-4: 0 0 0 1px var(--gray-a3), 0 8px 40px var(--black-a1), 0 12px 32px -16px var(--gray-a3);--shadow-5: 0 0 0 1px var(--gray-a3), 0 12px 60px var(--black-a3), 0 12px 32px -16px var(--gray-a5);--shadow-6: 0 0 0 1px var(--gray-a3), 0 12px 60px var(--black-a3), 0 16px 64px var(--gray-a2), 0 16px 36px -20px var(--gray-a7);--base-button-classic-after-inset: 2px;--base-button-classic-box-shadow-top: inset 0 0 0 1px var(--gray-a4), inset 0 -2px 1px var(--gray-a3);--base-button-classic-box-shadow-bottom: inset 0 4px 2px -2px var(--white-a9), inset 0 2px 1px -1px var(--white-a9);--base-button-classic-disabled-box-shadow: var(--base-button-classic-box-shadow-top), var(--base-button-classic-box-shadow-bottom);--base-button-classic-active-filter: brightness(.92) saturate(1.1);--base-button-classic-high-contrast-hover-filter: contrast(.88) saturate(1.1) brightness(1.1);--base-button-classic-high-contrast-active-filter: contrast(.82) saturate(1.2) brightness(1.16);--base-button-solid-active-filter: brightness(.92) saturate(1.1);--base-button-solid-high-contrast-hover-filter: contrast(.88) saturate(1.1) brightness(1.1);--base-button-solid-high-contrast-active-filter: contrast(.82) saturate(1.2) brightness(1.16);--kbd-box-shadow: inset 0 -.05em .5em var(--gray-a2), inset 0 .05em var(--white-a12), inset 0 .25em .5em var(--gray-a2), inset 0 -.05em var(--gray-a6), 0 0 0 .05em var(--gray-a5), 0 .08em .17em var(--gray-a7);--progress-indicator-after-linear-gradient: var(--white-a5), var(--white-a9), var(--white-a5);--segmented-control-indicator-background-color: var(--color-background);--select-trigger-classic-box-shadow: inset 0 0 0 1px var(--gray-a5), inset 0 2px 1px var(--white-a11), inset 0 -2px 1px var(--gray-a4) ;--slider-range-high-contrast-background-image: linear-gradient(var(--black-a8), var(--black-a8));--slider-disabled-blend-mode: multiply;--switch-disabled-blend-mode: multiply;--switch-high-contrast-checked-color-overlay: var(--black-a8);--switch-high-contrast-checked-active-before-filter: contrast(.82) saturate(1.2) brightness(1.16);--switch-surface-checked-active-filter: brightness(.92) saturate(1.1);--base-card-surface-box-shadow: 0 0 0 1px var(--gray-a5);--base-card-surface-hover-box-shadow: 0 0 0 1px var(--gray-a7);--base-card-surface-active-box-shadow: 0 0 0 1px var(--gray-a6);--base-card-classic-box-shadow-inner: 0 0 0 1px var(--base-card-classic-border-color), 0 0 0 1px var(--color-transparent), 0 0 0 .5px var(--black-a1), 0 1px 1px 0 var(--gray-a2), 0 2px 1px -1px var(--black-a1), 0 1px 3px 0 var(--black-a1);--base-card-classic-box-shadow-outer: 0 0 0 0 var(--base-card-classic-border-color), 0 0 0 0 var(--color-transparent), 0 0 0 0 var(--black-a1), 0 1px 1px -1px var(--gray-a2), 0 2px 1px -2px var(--black-a1), 0 1px 3px -1px var(--black-a1);--base-card-classic-hover-box-shadow-inner: 0 0 0 1px var(--base-card-classic-hover-border-color), 0 1px 1px 1px var(--black-a1), 0 2px 1px -1px var(--gray-a3), 0 2px 3px -2px var(--black-a1), 0 3px 12px -4px var(--gray-a3), 0 4px 16px -8px var(--black-a1);--base-card-classic-hover-box-shadow-outer: 0 0 0 0 var(--base-card-classic-hover-border-color), 0 1px 1px 0 var(--black-a1), 0 2px 1px -2px var(--gray-a3), 0 2px 3px -3px var(--black-a1), 0 3px 12px -5px var(--gray-a3), 0 4px 16px -9px var(--black-a1);--base-card-classic-active-box-shadow-inner: 0 0 0 1px var(--base-card-classic-active-border-color), 0 0 0 1px var(--color-transparent), 0 0 0 .5px var(--black-a1), 0 1px 1px 0 var(--gray-a4), 0 2px 1px -1px var(--black-a1), 0 1px 3px 0 var(--black-a1);--base-card-classic-active-box-shadow-outer: 0 0 0 0 var(--base-card-classic-active-border-color), 0 0 0 0 var(--color-transparent), 0 0 0 0 var(--black-a1), 0 1px 1px -1px var(--gray-a4), 0 2px 1px -2px var(--black-a1), 0 1px 3px -1px var(--black-a1);--base-card-classic-border-color: var(--gray-a3);--base-card-classic-hover-border-color: var(--gray-a3);--base-card-classic-active-border-color: var(--gray-a4)}:is(.dark,.dark-theme),:is(.dark,.dark-theme) :where(.radix-themes:not(.light,.light-theme)){--color-background: var(--gray-1);--color-overlay: var(--black-a8);--color-panel-solid: var(--gray-2);--color-panel-translucent: var(--gray-a2);--color-surface: rgba(0, 0, 0, .25);--shadow-1: inset 0 -1px 1px 0 var(--gray-a3), inset 0 0 0 1px var(--gray-a3), inset 0 3px 4px 0 var(--black-a5), inset 0 0 0 1px var(--gray-a4);--shadow-2: 0 0 0 1px var(--gray-a6), 0 0 0 .5px var(--black-a3), 0 1px 1px 0 var(--black-a6), 0 2px 1px -1px var(--black-a6), 0 1px 3px 0 var(--black-a5);--shadow-3: 0 0 0 1px var(--gray-a6), 0 2px 3px -2px var(--black-a3), 0 3px 8px -2px var(--black-a6), 0 4px 12px -4px var(--black-a7);--shadow-4: 0 0 0 1px var(--gray-a6), 0 8px 40px var(--black-a3), 0 12px 32px -16px var(--black-a5);--shadow-5: 0 0 0 1px var(--gray-a6), 0 12px 60px var(--black-a5), 0 12px 32px -16px var(--black-a7);--shadow-6: 0 0 0 1px var(--gray-a6), 0 12px 60px var(--black-a4), 0 16px 64px var(--black-a6), 0 16px 36px -20px var(--black-a11);--base-button-classic-after-inset: 1px;--base-button-classic-box-shadow-top: inset 0 0 0 1px var(--white-a2), inset 0 4px 2px -2px var(--white-a3), inset 0 1px 1px var(--white-a6), inset 0 -1px 1px var(--black-a6);--base-button-classic-box-shadow-bottom: 0 0 transparent;--base-button-classic-disabled-box-shadow: inset 0 0 0 1px var(--gray-a5), inset 0 4px 2px -2px var(--gray-a2), inset 0 1px 1px var(--gray-a5), inset 0 -1px 1px var(--black-a3), inset 0 0 0 1px var(--gray-a2);--base-button-classic-active-filter: brightness(1.08);--base-button-classic-high-contrast-hover-filter: contrast(.88) saturate(1.3) brightness(1.14);--base-button-classic-high-contrast-active-filter: brightness(.95) saturate(1.2);--base-button-solid-active-filter: brightness(1.08);--base-button-solid-high-contrast-hover-filter: contrast(.88) saturate(1.3) brightness(1.18);--base-button-solid-high-contrast-active-filter: brightness(.95) saturate(1.2);--kbd-box-shadow: inset 0 -.05em .5em var(--gray-a3), inset 0 .05em var(--gray-a11), inset 0 .25em .5em var(--gray-a2), inset 0 -.1em var(--black-a11), 0 0 0 .075em var(--gray-a7), 0 .08em .17em var(--black-a12);--progress-indicator-after-linear-gradient: var(--white-a3), var(--white-a6), var(--white-a3);--segmented-control-indicator-background-color: var(--gray-a3);--select-trigger-classic-box-shadow: inset 0 0 0 1px var(--white-a4), inset 0 1px 1px var(--white-a4), inset 0 -1px 1px var(--black-a9) ;--slider-range-high-contrast-background-image: none;--slider-disabled-blend-mode: screen;--switch-disabled-blend-mode: screen;--switch-high-contrast-checked-color-overlay: transparent;--switch-high-contrast-checked-active-before-filter: brightness(1.08);--switch-surface-checked-active-filter: brightness(1.08);--base-card-classic-box-shadow-inner: 0 0 0 1px var(--base-card-classic-border-color), 0 0 0 1px var(--color-transparent), 0 0 0 .5px var(--black-a3), 0 1px 1px 0 var(--black-a6), 0 2px 1px -1px var(--black-a6), 0 1px 3px 0 var(--black-a5);--base-card-classic-box-shadow-outer: 0 0 0 0 var(--base-card-classic-border-color), 0 0 0 0 var(--color-transparent), 0 0 0 0 var(--black-a3), 0 1px 1px -1px var(--black-a6), 0 2px 1px -2px var(--black-a6), 0 1px 3px -1px var(--black-a5);--base-card-classic-hover-box-shadow-inner: 0 0 0 1px var(--base-card-classic-hover-border-color), 0 0 1px 1px var(--gray-a4), 0 0 1px -1px var(--gray-a4), 0 0 3px -2px var(--gray-a3), 0 0 12px -2px var(--gray-a3), 0 0 16px -8px var(--gray-a7);--base-card-classic-hover-box-shadow-outer: 0 0 0 0 var(--base-card-classic-hover-border-color), 0 0 1px 0 var(--gray-a4), 0 0 1px -2px var(--gray-a4), 0 0 3px -3px var(--gray-a3), 0 0 12px -3px var(--gray-a3), 0 0 16px -9px var(--gray-a7);--base-card-classic-active-box-shadow-inner: 0 0 0 1px var(--base-card-classic-active-border-color), 0 0 0 1px var(--color-transparent), 0 0 0 .5px var(--black-a3), 0 1px 1px 0 var(--black-a6), 0 2px 1px -1px var(--black-a6), 0 1px 3px 0 var(--black-a5);--base-card-classic-active-box-shadow-outer: 0 0 0 0 var(--base-card-classic-active-border-color), 0 0 0 0 var(--color-transparent), 0 0 0 0 var(--black-a3), 0 1px 1px -1px var(--black-a6), 0 2px 1px -2px var(--black-a6), 0 1px 3px -1px var(--black-a5);--base-card-classic-border-color: var(--gray-a6);--base-card-classic-hover-border-color: var(--gray-a6);--base-card-classic-active-border-color: var(--gray-a6)}@supports (color: color(display-p3 1 1 1)){@media (color-gamut: p3){.radix-themes{--color-transparent: color(display-p3 0 0 0 / 0)}}}.radix-themes:where(.light,.light-theme),:root:where(:has(.radix-themes[data-is-root-theme=true]:where(.light,.light-theme))){color-scheme:light}.radix-themes:where(.dark,.dark-theme),:root:where(:has(.radix-themes[data-is-root-theme=true]:where(.dark,.dark-theme))){color-scheme:dark}.radix-themes,[data-accent-color]:where(:not([data-accent-color=""],[data-accent-color=gray])){--focus-1: var(--accent-1);--focus-2: var(--accent-2);--focus-3: var(--accent-3);--focus-4: var(--accent-4);--focus-5: var(--accent-5);--focus-6: var(--accent-6);--focus-7: var(--accent-7);--focus-8: var(--accent-8);--focus-9: var(--accent-9);--focus-10: var(--accent-10);--focus-11: var(--accent-11);--focus-12: var(--accent-12);--focus-a1: var(--accent-a1);--focus-a2: var(--accent-a2);--focus-a3: var(--accent-a3);--focus-a4: var(--accent-a4);--focus-a5: var(--accent-a5);--focus-a6: var(--accent-a6);--focus-a7: var(--accent-a7);--focus-a8: var(--accent-a8);--focus-a9: var(--accent-a9);--focus-a10: var(--accent-a10);--focus-a11: var(--accent-a11);--focus-a12: var(--accent-a12)}.radix-themes ::selection{background-color:var(--focus-a5)}.radix-themes:where([data-has-background=true]){background-color:var(--color-background)}.radix-themes:where([data-panel-background=solid]){--color-panel: var(--color-panel-solid);--backdrop-filter-panel: none}.radix-themes:where([data-panel-background=translucent]){--color-panel: var(--color-panel-translucent);--backdrop-filter-panel: blur(64px)}[data-accent-color=amber]{--accent-1: var(--amber-1);--accent-2: var(--amber-2);--accent-3: var(--amber-3);--accent-4: var(--amber-4);--accent-5: var(--amber-5);--accent-6: var(--amber-6);--accent-7: var(--amber-7);--accent-8: var(--amber-8);--accent-9: var(--amber-9);--accent-10: var(--amber-10);--accent-11: var(--amber-11);--accent-12: var(--amber-12);--accent-a1: var(--amber-a1);--accent-a2: var(--amber-a2);--accent-a3: var(--amber-a3);--accent-a4: var(--amber-a4);--accent-a5: var(--amber-a5);--accent-a6: var(--amber-a6);--accent-a7: var(--amber-a7);--accent-a8: var(--amber-a8);--accent-a9: var(--amber-a9);--accent-a10: var(--amber-a10);--accent-a11: var(--amber-a11);--accent-a12: var(--amber-a12);--accent-contrast: var(--amber-contrast);--accent-surface: var(--amber-surface);--accent-indicator: var(--amber-indicator);--accent-track: var(--amber-track)}[data-accent-color=blue]{--accent-1: var(--blue-1);--accent-2: var(--blue-2);--accent-3: var(--blue-3);--accent-4: var(--blue-4);--accent-5: var(--blue-5);--accent-6: var(--blue-6);--accent-7: var(--blue-7);--accent-8: var(--blue-8);--accent-9: var(--blue-9);--accent-10: var(--blue-10);--accent-11: var(--blue-11);--accent-12: var(--blue-12);--accent-a1: var(--blue-a1);--accent-a2: var(--blue-a2);--accent-a3: var(--blue-a3);--accent-a4: var(--blue-a4);--accent-a5: var(--blue-a5);--accent-a6: var(--blue-a6);--accent-a7: var(--blue-a7);--accent-a8: var(--blue-a8);--accent-a9: var(--blue-a9);--accent-a10: var(--blue-a10);--accent-a11: var(--blue-a11);--accent-a12: var(--blue-a12);--accent-contrast: var(--blue-contrast);--accent-surface: var(--blue-surface);--accent-indicator: var(--blue-indicator);--accent-track: var(--blue-track)}[data-accent-color=bronze]{--accent-1: var(--bronze-1);--accent-2: var(--bronze-2);--accent-3: var(--bronze-3);--accent-4: var(--bronze-4);--accent-5: var(--bronze-5);--accent-6: var(--bronze-6);--accent-7: var(--bronze-7);--accent-8: var(--bronze-8);--accent-9: var(--bronze-9);--accent-10: var(--bronze-10);--accent-11: var(--bronze-11);--accent-12: var(--bronze-12);--accent-a1: var(--bronze-a1);--accent-a2: var(--bronze-a2);--accent-a3: var(--bronze-a3);--accent-a4: var(--bronze-a4);--accent-a5: var(--bronze-a5);--accent-a6: var(--bronze-a6);--accent-a7: var(--bronze-a7);--accent-a8: var(--bronze-a8);--accent-a9: var(--bronze-a9);--accent-a10: var(--bronze-a10);--accent-a11: var(--bronze-a11);--accent-a12: var(--bronze-a12);--accent-contrast: var(--bronze-contrast);--accent-surface: var(--bronze-surface);--accent-indicator: var(--bronze-indicator);--accent-track: var(--bronze-track)}[data-accent-color=brown]{--accent-1: var(--brown-1);--accent-2: var(--brown-2);--accent-3: var(--brown-3);--accent-4: var(--brown-4);--accent-5: var(--brown-5);--accent-6: var(--brown-6);--accent-7: var(--brown-7);--accent-8: var(--brown-8);--accent-9: var(--brown-9);--accent-10: var(--brown-10);--accent-11: var(--brown-11);--accent-12: var(--brown-12);--accent-a1: var(--brown-a1);--accent-a2: var(--brown-a2);--accent-a3: var(--brown-a3);--accent-a4: var(--brown-a4);--accent-a5: var(--brown-a5);--accent-a6: var(--brown-a6);--accent-a7: var(--brown-a7);--accent-a8: var(--brown-a8);--accent-a9: var(--brown-a9);--accent-a10: var(--brown-a10);--accent-a11: var(--brown-a11);--accent-a12: var(--brown-a12);--accent-contrast: var(--brown-contrast);--accent-surface: var(--brown-surface);--accent-indicator: var(--brown-indicator);--accent-track: var(--brown-track)}[data-accent-color=crimson]{--accent-1: var(--crimson-1);--accent-2: var(--crimson-2);--accent-3: var(--crimson-3);--accent-4: var(--crimson-4);--accent-5: var(--crimson-5);--accent-6: var(--crimson-6);--accent-7: var(--crimson-7);--accent-8: var(--crimson-8);--accent-9: var(--crimson-9);--accent-10: var(--crimson-10);--accent-11: var(--crimson-11);--accent-12: var(--crimson-12);--accent-a1: var(--crimson-a1);--accent-a2: var(--crimson-a2);--accent-a3: var(--crimson-a3);--accent-a4: var(--crimson-a4);--accent-a5: var(--crimson-a5);--accent-a6: var(--crimson-a6);--accent-a7: var(--crimson-a7);--accent-a8: var(--crimson-a8);--accent-a9: var(--crimson-a9);--accent-a10: var(--crimson-a10);--accent-a11: var(--crimson-a11);--accent-a12: var(--crimson-a12);--accent-contrast: var(--crimson-contrast);--accent-surface: var(--crimson-surface);--accent-indicator: var(--crimson-indicator);--accent-track: var(--crimson-track)}[data-accent-color=cyan]{--accent-1: var(--cyan-1);--accent-2: var(--cyan-2);--accent-3: var(--cyan-3);--accent-4: var(--cyan-4);--accent-5: var(--cyan-5);--accent-6: var(--cyan-6);--accent-7: var(--cyan-7);--accent-8: var(--cyan-8);--accent-9: var(--cyan-9);--accent-10: var(--cyan-10);--accent-11: var(--cyan-11);--accent-12: var(--cyan-12);--accent-a1: var(--cyan-a1);--accent-a2: var(--cyan-a2);--accent-a3: var(--cyan-a3);--accent-a4: var(--cyan-a4);--accent-a5: var(--cyan-a5);--accent-a6: var(--cyan-a6);--accent-a7: var(--cyan-a7);--accent-a8: var(--cyan-a8);--accent-a9: var(--cyan-a9);--accent-a10: var(--cyan-a10);--accent-a11: var(--cyan-a11);--accent-a12: var(--cyan-a12);--accent-contrast: var(--cyan-contrast);--accent-surface: var(--cyan-surface);--accent-indicator: var(--cyan-indicator);--accent-track: var(--cyan-track)}[data-accent-color=gold]{--accent-1: var(--gold-1);--accent-2: var(--gold-2);--accent-3: var(--gold-3);--accent-4: var(--gold-4);--accent-5: var(--gold-5);--accent-6: var(--gold-6);--accent-7: var(--gold-7);--accent-8: var(--gold-8);--accent-9: var(--gold-9);--accent-10: var(--gold-10);--accent-11: var(--gold-11);--accent-12: var(--gold-12);--accent-a1: var(--gold-a1);--accent-a2: var(--gold-a2);--accent-a3: var(--gold-a3);--accent-a4: var(--gold-a4);--accent-a5: var(--gold-a5);--accent-a6: var(--gold-a6);--accent-a7: var(--gold-a7);--accent-a8: var(--gold-a8);--accent-a9: var(--gold-a9);--accent-a10: var(--gold-a10);--accent-a11: var(--gold-a11);--accent-a12: var(--gold-a12);--accent-contrast: var(--gold-contrast);--accent-surface: var(--gold-surface);--accent-indicator: var(--gold-indicator);--accent-track: var(--gold-track)}[data-accent-color=grass]{--accent-1: var(--grass-1);--accent-2: var(--grass-2);--accent-3: var(--grass-3);--accent-4: var(--grass-4);--accent-5: var(--grass-5);--accent-6: var(--grass-6);--accent-7: var(--grass-7);--accent-8: var(--grass-8);--accent-9: var(--grass-9);--accent-10: var(--grass-10);--accent-11: var(--grass-11);--accent-12: var(--grass-12);--accent-a1: var(--grass-a1);--accent-a2: var(--grass-a2);--accent-a3: var(--grass-a3);--accent-a4: var(--grass-a4);--accent-a5: var(--grass-a5);--accent-a6: var(--grass-a6);--accent-a7: var(--grass-a7);--accent-a8: var(--grass-a8);--accent-a9: var(--grass-a9);--accent-a10: var(--grass-a10);--accent-a11: var(--grass-a11);--accent-a12: var(--grass-a12);--accent-contrast: var(--grass-contrast);--accent-surface: var(--grass-surface);--accent-indicator: var(--grass-indicator);--accent-track: var(--grass-track)}[data-accent-color=gray]{--accent-1: var(--gray-1);--accent-2: var(--gray-2);--accent-3: var(--gray-3);--accent-4: var(--gray-4);--accent-5: var(--gray-5);--accent-6: var(--gray-6);--accent-7: var(--gray-7);--accent-8: var(--gray-8);--accent-9: var(--gray-9);--accent-10: var(--gray-10);--accent-11: var(--gray-11);--accent-12: var(--gray-12);--accent-a1: var(--gray-a1);--accent-a2: var(--gray-a2);--accent-a3: var(--gray-a3);--accent-a4: var(--gray-a4);--accent-a5: var(--gray-a5);--accent-a6: var(--gray-a6);--accent-a7: var(--gray-a7);--accent-a8: var(--gray-a8);--accent-a9: var(--gray-a9);--accent-a10: var(--gray-a10);--accent-a11: var(--gray-a11);--accent-a12: var(--gray-a12);--accent-contrast: var(--gray-contrast);--accent-surface: var(--gray-surface);--accent-indicator: var(--gray-indicator);--accent-track: var(--gray-track)}[data-accent-color=green]{--accent-1: var(--green-1);--accent-2: var(--green-2);--accent-3: var(--green-3);--accent-4: var(--green-4);--accent-5: var(--green-5);--accent-6: var(--green-6);--accent-7: var(--green-7);--accent-8: var(--green-8);--accent-9: var(--green-9);--accent-10: var(--green-10);--accent-11: var(--green-11);--accent-12: var(--green-12);--accent-a1: var(--green-a1);--accent-a2: var(--green-a2);--accent-a3: var(--green-a3);--accent-a4: var(--green-a4);--accent-a5: var(--green-a5);--accent-a6: var(--green-a6);--accent-a7: var(--green-a7);--accent-a8: var(--green-a8);--accent-a9: var(--green-a9);--accent-a10: var(--green-a10);--accent-a11: var(--green-a11);--accent-a12: var(--green-a12);--accent-contrast: var(--green-contrast);--accent-surface: var(--green-surface);--accent-indicator: var(--green-indicator);--accent-track: var(--green-track)}[data-accent-color=indigo]{--accent-1: var(--indigo-1);--accent-2: var(--indigo-2);--accent-3: var(--indigo-3);--accent-4: var(--indigo-4);--accent-5: var(--indigo-5);--accent-6: var(--indigo-6);--accent-7: var(--indigo-7);--accent-8: var(--indigo-8);--accent-9: var(--indigo-9);--accent-10: var(--indigo-10);--accent-11: var(--indigo-11);--accent-12: var(--indigo-12);--accent-a1: var(--indigo-a1);--accent-a2: var(--indigo-a2);--accent-a3: var(--indigo-a3);--accent-a4: var(--indigo-a4);--accent-a5: var(--indigo-a5);--accent-a6: var(--indigo-a6);--accent-a7: var(--indigo-a7);--accent-a8: var(--indigo-a8);--accent-a9: var(--indigo-a9);--accent-a10: var(--indigo-a10);--accent-a11: var(--indigo-a11);--accent-a12: var(--indigo-a12);--accent-contrast: var(--indigo-contrast);--accent-surface: var(--indigo-surface);--accent-indicator: var(--indigo-indicator);--accent-track: var(--indigo-track)}[data-accent-color=iris]{--accent-1: var(--iris-1);--accent-2: var(--iris-2);--accent-3: var(--iris-3);--accent-4: var(--iris-4);--accent-5: var(--iris-5);--accent-6: var(--iris-6);--accent-7: var(--iris-7);--accent-8: var(--iris-8);--accent-9: var(--iris-9);--accent-10: var(--iris-10);--accent-11: var(--iris-11);--accent-12: var(--iris-12);--accent-a1: var(--iris-a1);--accent-a2: var(--iris-a2);--accent-a3: var(--iris-a3);--accent-a4: var(--iris-a4);--accent-a5: var(--iris-a5);--accent-a6: var(--iris-a6);--accent-a7: var(--iris-a7);--accent-a8: var(--iris-a8);--accent-a9: var(--iris-a9);--accent-a10: var(--iris-a10);--accent-a11: var(--iris-a11);--accent-a12: var(--iris-a12);--accent-contrast: var(--iris-contrast);--accent-surface: var(--iris-surface);--accent-indicator: var(--iris-indicator);--accent-track: var(--iris-track)}[data-accent-color=jade]{--accent-1: var(--jade-1);--accent-2: var(--jade-2);--accent-3: var(--jade-3);--accent-4: var(--jade-4);--accent-5: var(--jade-5);--accent-6: var(--jade-6);--accent-7: var(--jade-7);--accent-8: var(--jade-8);--accent-9: var(--jade-9);--accent-10: var(--jade-10);--accent-11: var(--jade-11);--accent-12: var(--jade-12);--accent-a1: var(--jade-a1);--accent-a2: var(--jade-a2);--accent-a3: var(--jade-a3);--accent-a4: var(--jade-a4);--accent-a5: var(--jade-a5);--accent-a6: var(--jade-a6);--accent-a7: var(--jade-a7);--accent-a8: var(--jade-a8);--accent-a9: var(--jade-a9);--accent-a10: var(--jade-a10);--accent-a11: var(--jade-a11);--accent-a12: var(--jade-a12);--accent-contrast: var(--jade-contrast);--accent-surface: var(--jade-surface);--accent-indicator: var(--jade-indicator);--accent-track: var(--jade-track)}[data-accent-color=lime]{--accent-1: var(--lime-1);--accent-2: var(--lime-2);--accent-3: var(--lime-3);--accent-4: var(--lime-4);--accent-5: var(--lime-5);--accent-6: var(--lime-6);--accent-7: var(--lime-7);--accent-8: var(--lime-8);--accent-9: var(--lime-9);--accent-10: var(--lime-10);--accent-11: var(--lime-11);--accent-12: var(--lime-12);--accent-a1: var(--lime-a1);--accent-a2: var(--lime-a2);--accent-a3: var(--lime-a3);--accent-a4: var(--lime-a4);--accent-a5: var(--lime-a5);--accent-a6: var(--lime-a6);--accent-a7: var(--lime-a7);--accent-a8: var(--lime-a8);--accent-a9: var(--lime-a9);--accent-a10: var(--lime-a10);--accent-a11: var(--lime-a11);--accent-a12: var(--lime-a12);--accent-contrast: var(--lime-contrast);--accent-surface: var(--lime-surface);--accent-indicator: var(--lime-indicator);--accent-track: var(--lime-track)}[data-accent-color=mint]{--accent-1: var(--mint-1);--accent-2: var(--mint-2);--accent-3: var(--mint-3);--accent-4: var(--mint-4);--accent-5: var(--mint-5);--accent-6: var(--mint-6);--accent-7: var(--mint-7);--accent-8: var(--mint-8);--accent-9: var(--mint-9);--accent-10: var(--mint-10);--accent-11: var(--mint-11);--accent-12: var(--mint-12);--accent-a1: var(--mint-a1);--accent-a2: var(--mint-a2);--accent-a3: var(--mint-a3);--accent-a4: var(--mint-a4);--accent-a5: var(--mint-a5);--accent-a6: var(--mint-a6);--accent-a7: var(--mint-a7);--accent-a8: var(--mint-a8);--accent-a9: var(--mint-a9);--accent-a10: var(--mint-a10);--accent-a11: var(--mint-a11);--accent-a12: var(--mint-a12);--accent-contrast: var(--mint-contrast);--accent-surface: var(--mint-surface);--accent-indicator: var(--mint-indicator);--accent-track: var(--mint-track)}[data-accent-color=orange]{--accent-1: var(--orange-1);--accent-2: var(--orange-2);--accent-3: var(--orange-3);--accent-4: var(--orange-4);--accent-5: var(--orange-5);--accent-6: var(--orange-6);--accent-7: var(--orange-7);--accent-8: var(--orange-8);--accent-9: var(--orange-9);--accent-10: var(--orange-10);--accent-11: var(--orange-11);--accent-12: var(--orange-12);--accent-a1: var(--orange-a1);--accent-a2: var(--orange-a2);--accent-a3: var(--orange-a3);--accent-a4: var(--orange-a4);--accent-a5: var(--orange-a5);--accent-a6: var(--orange-a6);--accent-a7: var(--orange-a7);--accent-a8: var(--orange-a8);--accent-a9: var(--orange-a9);--accent-a10: var(--orange-a10);--accent-a11: var(--orange-a11);--accent-a12: var(--orange-a12);--accent-contrast: var(--orange-contrast);--accent-surface: var(--orange-surface);--accent-indicator: var(--orange-indicator);--accent-track: var(--orange-track)}[data-accent-color=pink]{--accent-1: var(--pink-1);--accent-2: var(--pink-2);--accent-3: var(--pink-3);--accent-4: var(--pink-4);--accent-5: var(--pink-5);--accent-6: var(--pink-6);--accent-7: var(--pink-7);--accent-8: var(--pink-8);--accent-9: var(--pink-9);--accent-10: var(--pink-10);--accent-11: var(--pink-11);--accent-12: var(--pink-12);--accent-a1: var(--pink-a1);--accent-a2: var(--pink-a2);--accent-a3: var(--pink-a3);--accent-a4: var(--pink-a4);--accent-a5: var(--pink-a5);--accent-a6: var(--pink-a6);--accent-a7: var(--pink-a7);--accent-a8: var(--pink-a8);--accent-a9: var(--pink-a9);--accent-a10: var(--pink-a10);--accent-a11: var(--pink-a11);--accent-a12: var(--pink-a12);--accent-contrast: var(--pink-contrast);--accent-surface: var(--pink-surface);--accent-indicator: var(--pink-indicator);--accent-track: var(--pink-track)}[data-accent-color=plum]{--accent-1: var(--plum-1);--accent-2: var(--plum-2);--accent-3: var(--plum-3);--accent-4: var(--plum-4);--accent-5: var(--plum-5);--accent-6: var(--plum-6);--accent-7: var(--plum-7);--accent-8: var(--plum-8);--accent-9: var(--plum-9);--accent-10: var(--plum-10);--accent-11: var(--plum-11);--accent-12: var(--plum-12);--accent-a1: var(--plum-a1);--accent-a2: var(--plum-a2);--accent-a3: var(--plum-a3);--accent-a4: var(--plum-a4);--accent-a5: var(--plum-a5);--accent-a6: var(--plum-a6);--accent-a7: var(--plum-a7);--accent-a8: var(--plum-a8);--accent-a9: var(--plum-a9);--accent-a10: var(--plum-a10);--accent-a11: var(--plum-a11);--accent-a12: var(--plum-a12);--accent-contrast: var(--plum-contrast);--accent-surface: var(--plum-surface);--accent-indicator: var(--plum-indicator);--accent-track: var(--plum-track)}[data-accent-color=purple]{--accent-1: var(--purple-1);--accent-2: var(--purple-2);--accent-3: var(--purple-3);--accent-4: var(--purple-4);--accent-5: var(--purple-5);--accent-6: var(--purple-6);--accent-7: var(--purple-7);--accent-8: var(--purple-8);--accent-9: var(--purple-9);--accent-10: var(--purple-10);--accent-11: var(--purple-11);--accent-12: var(--purple-12);--accent-a1: var(--purple-a1);--accent-a2: var(--purple-a2);--accent-a3: var(--purple-a3);--accent-a4: var(--purple-a4);--accent-a5: var(--purple-a5);--accent-a6: var(--purple-a6);--accent-a7: var(--purple-a7);--accent-a8: var(--purple-a8);--accent-a9: var(--purple-a9);--accent-a10: var(--purple-a10);--accent-a11: var(--purple-a11);--accent-a12: var(--purple-a12);--accent-contrast: var(--purple-contrast);--accent-surface: var(--purple-surface);--accent-indicator: var(--purple-indicator);--accent-track: var(--purple-track)}[data-accent-color=red]{--accent-1: var(--red-1);--accent-2: var(--red-2);--accent-3: var(--red-3);--accent-4: var(--red-4);--accent-5: var(--red-5);--accent-6: var(--red-6);--accent-7: var(--red-7);--accent-8: var(--red-8);--accent-9: var(--red-9);--accent-10: var(--red-10);--accent-11: var(--red-11);--accent-12: var(--red-12);--accent-a1: var(--red-a1);--accent-a2: var(--red-a2);--accent-a3: var(--red-a3);--accent-a4: var(--red-a4);--accent-a5: var(--red-a5);--accent-a6: var(--red-a6);--accent-a7: var(--red-a7);--accent-a8: var(--red-a8);--accent-a9: var(--red-a9);--accent-a10: var(--red-a10);--accent-a11: var(--red-a11);--accent-a12: var(--red-a12);--accent-contrast: var(--red-contrast);--accent-surface: var(--red-surface);--accent-indicator: var(--red-indicator);--accent-track: var(--red-track)}[data-accent-color=ruby]{--accent-1: var(--ruby-1);--accent-2: var(--ruby-2);--accent-3: var(--ruby-3);--accent-4: var(--ruby-4);--accent-5: var(--ruby-5);--accent-6: var(--ruby-6);--accent-7: var(--ruby-7);--accent-8: var(--ruby-8);--accent-9: var(--ruby-9);--accent-10: var(--ruby-10);--accent-11: var(--ruby-11);--accent-12: var(--ruby-12);--accent-a1: var(--ruby-a1);--accent-a2: var(--ruby-a2);--accent-a3: var(--ruby-a3);--accent-a4: var(--ruby-a4);--accent-a5: var(--ruby-a5);--accent-a6: var(--ruby-a6);--accent-a7: var(--ruby-a7);--accent-a8: var(--ruby-a8);--accent-a9: var(--ruby-a9);--accent-a10: var(--ruby-a10);--accent-a11: var(--ruby-a11);--accent-a12: var(--ruby-a12);--accent-contrast: var(--ruby-contrast);--accent-surface: var(--ruby-surface);--accent-indicator: var(--ruby-indicator);--accent-track: var(--ruby-track)}[data-accent-color=sky]{--accent-1: var(--sky-1);--accent-2: var(--sky-2);--accent-3: var(--sky-3);--accent-4: var(--sky-4);--accent-5: var(--sky-5);--accent-6: var(--sky-6);--accent-7: var(--sky-7);--accent-8: var(--sky-8);--accent-9: var(--sky-9);--accent-10: var(--sky-10);--accent-11: var(--sky-11);--accent-12: var(--sky-12);--accent-a1: var(--sky-a1);--accent-a2: var(--sky-a2);--accent-a3: var(--sky-a3);--accent-a4: var(--sky-a4);--accent-a5: var(--sky-a5);--accent-a6: var(--sky-a6);--accent-a7: var(--sky-a7);--accent-a8: var(--sky-a8);--accent-a9: var(--sky-a9);--accent-a10: var(--sky-a10);--accent-a11: var(--sky-a11);--accent-a12: var(--sky-a12);--accent-contrast: var(--sky-contrast);--accent-surface: var(--sky-surface);--accent-indicator: var(--sky-indicator);--accent-track: var(--sky-track)}[data-accent-color=teal]{--accent-1: var(--teal-1);--accent-2: var(--teal-2);--accent-3: var(--teal-3);--accent-4: var(--teal-4);--accent-5: var(--teal-5);--accent-6: var(--teal-6);--accent-7: var(--teal-7);--accent-8: var(--teal-8);--accent-9: var(--teal-9);--accent-10: var(--teal-10);--accent-11: var(--teal-11);--accent-12: var(--teal-12);--accent-a1: var(--teal-a1);--accent-a2: var(--teal-a2);--accent-a3: var(--teal-a3);--accent-a4: var(--teal-a4);--accent-a5: var(--teal-a5);--accent-a6: var(--teal-a6);--accent-a7: var(--teal-a7);--accent-a8: var(--teal-a8);--accent-a9: var(--teal-a9);--accent-a10: var(--teal-a10);--accent-a11: var(--teal-a11);--accent-a12: var(--teal-a12);--accent-contrast: var(--teal-contrast);--accent-surface: var(--teal-surface);--accent-indicator: var(--teal-indicator);--accent-track: var(--teal-track)}[data-accent-color=tomato]{--accent-1: var(--tomato-1);--accent-2: var(--tomato-2);--accent-3: var(--tomato-3);--accent-4: var(--tomato-4);--accent-5: var(--tomato-5);--accent-6: var(--tomato-6);--accent-7: var(--tomato-7);--accent-8: var(--tomato-8);--accent-9: var(--tomato-9);--accent-10: var(--tomato-10);--accent-11: var(--tomato-11);--accent-12: var(--tomato-12);--accent-a1: var(--tomato-a1);--accent-a2: var(--tomato-a2);--accent-a3: var(--tomato-a3);--accent-a4: var(--tomato-a4);--accent-a5: var(--tomato-a5);--accent-a6: var(--tomato-a6);--accent-a7: var(--tomato-a7);--accent-a8: var(--tomato-a8);--accent-a9: var(--tomato-a9);--accent-a10: var(--tomato-a10);--accent-a11: var(--tomato-a11);--accent-a12: var(--tomato-a12);--accent-contrast: var(--tomato-contrast);--accent-surface: var(--tomato-surface);--accent-indicator: var(--tomato-indicator);--accent-track: var(--tomato-track)}[data-accent-color=violet]{--accent-1: var(--violet-1);--accent-2: var(--violet-2);--accent-3: var(--violet-3);--accent-4: var(--violet-4);--accent-5: var(--violet-5);--accent-6: var(--violet-6);--accent-7: var(--violet-7);--accent-8: var(--violet-8);--accent-9: var(--violet-9);--accent-10: var(--violet-10);--accent-11: var(--violet-11);--accent-12: var(--violet-12);--accent-a1: var(--violet-a1);--accent-a2: var(--violet-a2);--accent-a3: var(--violet-a3);--accent-a4: var(--violet-a4);--accent-a5: var(--violet-a5);--accent-a6: var(--violet-a6);--accent-a7: var(--violet-a7);--accent-a8: var(--violet-a8);--accent-a9: var(--violet-a9);--accent-a10: var(--violet-a10);--accent-a11: var(--violet-a11);--accent-a12: var(--violet-a12);--accent-contrast: var(--violet-contrast);--accent-surface: var(--violet-surface);--accent-indicator: var(--violet-indicator);--accent-track: var(--violet-track)}[data-accent-color=yellow]{--accent-1: var(--yellow-1);--accent-2: var(--yellow-2);--accent-3: var(--yellow-3);--accent-4: var(--yellow-4);--accent-5: var(--yellow-5);--accent-6: var(--yellow-6);--accent-7: var(--yellow-7);--accent-8: var(--yellow-8);--accent-9: var(--yellow-9);--accent-10: var(--yellow-10);--accent-11: var(--yellow-11);--accent-12: var(--yellow-12);--accent-a1: var(--yellow-a1);--accent-a2: var(--yellow-a2);--accent-a3: var(--yellow-a3);--accent-a4: var(--yellow-a4);--accent-a5: var(--yellow-a5);--accent-a6: var(--yellow-a6);--accent-a7: var(--yellow-a7);--accent-a8: var(--yellow-a8);--accent-a9: var(--yellow-a9);--accent-a10: var(--yellow-a10);--accent-a11: var(--yellow-a11);--accent-a12: var(--yellow-a12);--accent-contrast: var(--yellow-contrast);--accent-surface: var(--yellow-surface);--accent-indicator: var(--yellow-indicator);--accent-track: var(--yellow-track)}.radix-themes:where([data-gray-color=mauve]){--gray-1: var(--mauve-1);--gray-2: var(--mauve-2);--gray-3: var(--mauve-3);--gray-4: var(--mauve-4);--gray-5: var(--mauve-5);--gray-6: var(--mauve-6);--gray-7: var(--mauve-7);--gray-8: var(--mauve-8);--gray-9: var(--mauve-9);--gray-10: var(--mauve-10);--gray-11: var(--mauve-11);--gray-12: var(--mauve-12);--gray-a1: var(--mauve-a1);--gray-a2: var(--mauve-a2);--gray-a3: var(--mauve-a3);--gray-a4: var(--mauve-a4);--gray-a5: var(--mauve-a5);--gray-a6: var(--mauve-a6);--gray-a7: var(--mauve-a7);--gray-a8: var(--mauve-a8);--gray-a9: var(--mauve-a9);--gray-a10: var(--mauve-a10);--gray-a11: var(--mauve-a11);--gray-a12: var(--mauve-a12);--gray-contrast: var(--mauve-contrast);--gray-surface: var(--mauve-surface);--gray-indicator: var(--mauve-indicator);--gray-track: var(--mauve-track)}.radix-themes:where([data-gray-color=olive]){--gray-1: var(--olive-1);--gray-2: var(--olive-2);--gray-3: var(--olive-3);--gray-4: var(--olive-4);--gray-5: var(--olive-5);--gray-6: var(--olive-6);--gray-7: var(--olive-7);--gray-8: var(--olive-8);--gray-9: var(--olive-9);--gray-10: var(--olive-10);--gray-11: var(--olive-11);--gray-12: var(--olive-12);--gray-a1: var(--olive-a1);--gray-a2: var(--olive-a2);--gray-a3: var(--olive-a3);--gray-a4: var(--olive-a4);--gray-a5: var(--olive-a5);--gray-a6: var(--olive-a6);--gray-a7: var(--olive-a7);--gray-a8: var(--olive-a8);--gray-a9: var(--olive-a9);--gray-a10: var(--olive-a10);--gray-a11: var(--olive-a11);--gray-a12: var(--olive-a12);--gray-contrast: var(--olive-contrast);--gray-surface: var(--olive-surface);--gray-indicator: var(--olive-indicator);--gray-track: var(--olive-track)}.radix-themes:where([data-gray-color=sage]){--gray-1: var(--sage-1);--gray-2: var(--sage-2);--gray-3: var(--sage-3);--gray-4: var(--sage-4);--gray-5: var(--sage-5);--gray-6: var(--sage-6);--gray-7: var(--sage-7);--gray-8: var(--sage-8);--gray-9: var(--sage-9);--gray-10: var(--sage-10);--gray-11: var(--sage-11);--gray-12: var(--sage-12);--gray-a1: var(--sage-a1);--gray-a2: var(--sage-a2);--gray-a3: var(--sage-a3);--gray-a4: var(--sage-a4);--gray-a5: var(--sage-a5);--gray-a6: var(--sage-a6);--gray-a7: var(--sage-a7);--gray-a8: var(--sage-a8);--gray-a9: var(--sage-a9);--gray-a10: var(--sage-a10);--gray-a11: var(--sage-a11);--gray-a12: var(--sage-a12);--gray-contrast: var(--sage-contrast);--gray-surface: var(--sage-surface);--gray-indicator: var(--sage-indicator);--gray-track: var(--sage-track)}.radix-themes:where([data-gray-color=sand]){--gray-1: var(--sand-1);--gray-2: var(--sand-2);--gray-3: var(--sand-3);--gray-4: var(--sand-4);--gray-5: var(--sand-5);--gray-6: var(--sand-6);--gray-7: var(--sand-7);--gray-8: var(--sand-8);--gray-9: var(--sand-9);--gray-10: var(--sand-10);--gray-11: var(--sand-11);--gray-12: var(--sand-12);--gray-a1: var(--sand-a1);--gray-a2: var(--sand-a2);--gray-a3: var(--sand-a3);--gray-a4: var(--sand-a4);--gray-a5: var(--sand-a5);--gray-a6: var(--sand-a6);--gray-a7: var(--sand-a7);--gray-a8: var(--sand-a8);--gray-a9: var(--sand-a9);--gray-a10: var(--sand-a10);--gray-a11: var(--sand-a11);--gray-a12: var(--sand-a12);--gray-contrast: var(--sand-contrast);--gray-surface: var(--sand-surface);--gray-indicator: var(--sand-indicator);--gray-track: var(--sand-track)}.radix-themes:where([data-gray-color=slate]){--gray-1: var(--slate-1);--gray-2: var(--slate-2);--gray-3: var(--slate-3);--gray-4: var(--slate-4);--gray-5: var(--slate-5);--gray-6: var(--slate-6);--gray-7: var(--slate-7);--gray-8: var(--slate-8);--gray-9: var(--slate-9);--gray-10: var(--slate-10);--gray-11: var(--slate-11);--gray-12: var(--slate-12);--gray-a1: var(--slate-a1);--gray-a2: var(--slate-a2);--gray-a3: var(--slate-a3);--gray-a4: var(--slate-a4);--gray-a5: var(--slate-a5);--gray-a6: var(--slate-a6);--gray-a7: var(--slate-a7);--gray-a8: var(--slate-a8);--gray-a9: var(--slate-a9);--gray-a10: var(--slate-a10);--gray-a11: var(--slate-a11);--gray-a12: var(--slate-a12);--gray-contrast: var(--slate-contrast);--gray-surface: var(--slate-surface);--gray-indicator: var(--slate-indicator);--gray-track: var(--slate-track)}.radix-themes{--cursor-button: default;--cursor-checkbox: default;--cursor-disabled: not-allowed;--cursor-link: pointer;--cursor-menu-item: default;--cursor-radio: default;--cursor-slider-thumb: default;--cursor-slider-thumb-active: default;--cursor-switch: default;--space-1: calc(4px * var(--scaling));--space-2: calc(8px * var(--scaling));--space-3: calc(12px * var(--scaling));--space-4: calc(16px * var(--scaling));--space-5: calc(24px * var(--scaling));--space-6: calc(32px * var(--scaling));--space-7: calc(40px * var(--scaling));--space-8: calc(48px * var(--scaling));--space-9: calc(64px * var(--scaling));--font-size-1: calc(12px * var(--scaling));--font-size-2: calc(14px * var(--scaling));--font-size-3: calc(16px * var(--scaling));--font-size-4: calc(18px * var(--scaling));--font-size-5: calc(20px * var(--scaling));--font-size-6: calc(24px * var(--scaling));--font-size-7: calc(28px * var(--scaling));--font-size-8: calc(35px * var(--scaling));--font-size-9: calc(60px * var(--scaling));--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-bold: 700;--line-height-1: calc(16px * var(--scaling));--line-height-2: calc(20px * var(--scaling));--line-height-3: calc(24px * var(--scaling));--line-height-4: calc(26px * var(--scaling));--line-height-5: calc(28px * var(--scaling));--line-height-6: calc(30px * var(--scaling));--line-height-7: calc(36px * var(--scaling));--line-height-8: calc(40px * var(--scaling));--line-height-9: calc(60px * var(--scaling));--letter-spacing-1: .0025em;--letter-spacing-2: 0em;--letter-spacing-3: 0em;--letter-spacing-4: -.0025em;--letter-spacing-5: -.005em;--letter-spacing-6: -.00625em;--letter-spacing-7: -.0075em;--letter-spacing-8: -.01em;--letter-spacing-9: -.025em;--default-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI (Custom)", Roboto, "Helvetica Neue", "Open Sans (Custom)", system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--default-font-size: var(--font-size-3);--default-font-style: normal;--default-font-weight: var(--font-weight-regular);--default-line-height: 1.5;--default-letter-spacing: 0em;--default-leading-trim-start: .42em;--default-leading-trim-end: .36em;--heading-font-family: var(--default-font-family);--heading-font-size-adjust: 1;--heading-font-style: normal;--heading-leading-trim-start: var(--default-leading-trim-start);--heading-leading-trim-end: var(--default-leading-trim-end);--heading-letter-spacing: 0em;--heading-line-height-1: calc(16px * var(--scaling));--heading-line-height-2: calc(18px * var(--scaling));--heading-line-height-3: calc(22px * var(--scaling));--heading-line-height-4: calc(24px * var(--scaling));--heading-line-height-5: calc(26px * var(--scaling));--heading-line-height-6: calc(30px * var(--scaling));--heading-line-height-7: calc(36px * var(--scaling));--heading-line-height-8: calc(40px * var(--scaling));--heading-line-height-9: calc(60px * var(--scaling));--code-font-family: "Menlo", "Consolas (Custom)", "Bitstream Vera Sans Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji";--code-font-size-adjust: .95;--code-font-style: normal;--code-font-weight: inherit;--code-letter-spacing: -.007em;--code-padding-top: .1em;--code-padding-bottom: .1em;--code-padding-left: .25em;--code-padding-right: .25em;--strong-font-family: var(--default-font-family);--strong-font-size-adjust: 1;--strong-font-style: inherit;--strong-font-weight: var(--font-weight-bold);--strong-letter-spacing: 0em;--em-font-family: "Times New Roman", "Times", serif;--em-font-size-adjust: 1.18;--em-font-style: italic;--em-font-weight: inherit;--em-letter-spacing: -.025em;--quote-font-family: "Times New Roman", "Times", serif;--quote-font-size-adjust: 1.18;--quote-font-style: italic;--quote-font-weight: inherit;--quote-letter-spacing: -.025em;--tab-active-letter-spacing: -.01em;--tab-active-word-spacing: 0em;--tab-inactive-letter-spacing: 0em;--tab-inactive-word-spacing: 0em;overflow-wrap:break-word;font-family:var(--default-font-family);font-size:var(--default-font-size);font-weight:var(--default-font-weight);font-style:var(--default-font-style);line-height:var(--default-line-height);letter-spacing:var(--default-letter-spacing);-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--container-1: 448px;--container-2: 688px;--container-3: 880px;--container-4: 1136px;--scrollarea-scrollbar-horizontal-margin-top: var(--space-1);--scrollarea-scrollbar-horizontal-margin-bottom: var(--space-1);--scrollarea-scrollbar-horizontal-margin-left: var(--space-1);--scrollarea-scrollbar-horizontal-margin-right: var(--space-1);--scrollarea-scrollbar-vertical-margin-top: var(--space-1);--scrollarea-scrollbar-vertical-margin-bottom: var(--space-1);--scrollarea-scrollbar-vertical-margin-left: var(--space-1);--scrollarea-scrollbar-vertical-margin-right: var(--space-1);--segmented-control-transition-duration: .1s;--spinner-animation-duration: .8s;--spinner-opacity: .65;color:var(--gray-12)}.radix-themes:where([data-scaling="90%"]){--scaling: .9}.radix-themes:where([data-scaling="95%"]){--scaling: .95}.radix-themes:where([data-scaling="100%"]){--scaling: 1}.radix-themes:where([data-scaling="105%"]){--scaling: 1.05}.radix-themes:where([data-scaling="110%"]){--scaling: 1.1}[data-radius]{--radius-1: calc(3px * var(--scaling) * var(--radius-factor));--radius-2: calc(4px * var(--scaling) * var(--radius-factor));--radius-3: calc(6px * var(--scaling) * var(--radius-factor));--radius-4: calc(8px * var(--scaling) * var(--radius-factor));--radius-5: calc(12px * var(--scaling) * var(--radius-factor));--radius-6: calc(16px * var(--scaling) * var(--radius-factor))}[data-radius=none]{--radius-factor: 0;--radius-full: 0px;--radius-thumb: .5px}[data-radius=small]{--radius-factor: .75;--radius-full: 0px;--radius-thumb: .5px}[data-radius=medium]{--radius-factor: 1;--radius-full: 0px;--radius-thumb: 9999px}[data-radius=large]{--radius-factor: 1.5;--radius-full: 0px;--radius-thumb: 9999px}[data-radius=full]{--radius-factor: 1.5;--radius-full: 9999px;--radius-thumb: 9999px}@supports (color: color-mix(in oklab,white,black)){:where(.radix-themes){--shadow-1: inset 0 0 0 1px var(--gray-a5), inset 0 1.5px 2px 0 var(--gray-a2), inset 0 1.5px 2px 0 var(--black-a2);--shadow-2: 0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%), 0 0 0 .5px var(--black-a1), 0 1px 1px 0 var(--gray-a2), 0 2px 1px -1px var(--black-a1), 0 1px 3px 0 var(--black-a1);--shadow-3: 0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%), 0 2px 3px -2px var(--gray-a3), 0 3px 12px -4px var(--black-a2), 0 4px 16px -8px var(--black-a2);--shadow-4: 0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%), 0 8px 40px var(--black-a1), 0 12px 32px -16px var(--gray-a3);--shadow-5: 0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%), 0 12px 60px var(--black-a3), 0 12px 32px -16px var(--gray-a5);--shadow-6: 0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%), 0 12px 60px var(--black-a3), 0 16px 64px var(--gray-a2), 0 16px 36px -20px var(--gray-a7);--base-card-surface-box-shadow: 0 0 0 1px color-mix(in oklab, var(--gray-a5), var(--gray-5) 25%);--base-card-surface-hover-box-shadow: 0 0 0 1px color-mix(in oklab, var(--gray-a7), var(--gray-7) 25%);--base-card-surface-active-box-shadow: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);--base-card-classic-border-color: color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%);--base-card-classic-hover-border-color: color-mix(in oklab, var(--gray-a4), var(--gray-4) 25%);--base-card-classic-active-border-color: color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%)}}@supports (color: color-mix(in oklab,white,black)){:is(.dark,.dark-theme),:is(.dark,.dark-theme) :where(.radix-themes:not(.light,.light-theme)){--shadow-1: inset 0 -1px 1px 0 var(--gray-a3), inset 0 0 0 1px var(--gray-a3), inset 0 3px 4px 0 var(--black-a5), inset 0 0 0 1px var(--gray-a4);--shadow-2: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%), 0 0 0 .5px var(--black-a3), 0 1px 1px 0 var(--black-a6), 0 2px 1px -1px var(--black-a6), 0 1px 3px 0 var(--black-a5);--shadow-3: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%), 0 2px 3px -2px var(--black-a3), 0 3px 8px -2px var(--black-a6), 0 4px 12px -4px var(--black-a7);--shadow-4: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%), 0 8px 40px var(--black-a3), 0 12px 32px -16px var(--black-a5);--shadow-5: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%), 0 12px 60px var(--black-a5), 0 12px 32px -16px var(--black-a7);--shadow-6: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%), 0 12px 60px var(--black-a4), 0 16px 64px var(--black-a6), 0 16px 36px -20px var(--black-a11);--base-card-classic-border-color: color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);--base-card-classic-hover-border-color: color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);--base-card-classic-active-border-color: color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%)}}@font-face{font-family:"Segoe UI (Custom)";font-weight:300;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Semilight"),local("Segoe UI")}@font-face{font-family:"Segoe UI (Custom)";font-weight:300;font-style:italic;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Semilight Italic"),local("Segoe UI Italic")}@font-face{font-family:"Segoe UI (Custom)";font-weight:400;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI")}@font-face{font-family:"Segoe UI (Custom)";font-weight:400;font-style:italic;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Italic")}@font-face{font-family:"Segoe UI (Custom)";font-weight:500;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Semibold"),local("Segoe UI")}@font-face{font-family:"Segoe UI (Custom)";font-weight:500;font-style:italic;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Semibold Italic"),local("Segoe UI Italic")}@font-face{font-family:"Segoe UI (Custom)";font-weight:700;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Bold")}@font-face{font-family:"Segoe UI (Custom)";font-weight:700;font-style:italic;size-adjust:103%;descent-override:35%;ascent-override:105%;src:local("Segoe UI Bold Italic")}@font-face{font-family:"Open Sans (Custom)";font-weight:300;descent-override:35%;src:local("Open Sans Light"),local("Open Sans Regular")}@font-face{font-family:"Open Sans (Custom)";font-weight:300;font-style:italic;descent-override:35%;src:local("Open Sans Light Italic"),local("Open Sans Italic")}@font-face{font-family:"Open Sans (Custom)";font-weight:400;descent-override:35%;src:local("Open Sans Regular")}@font-face{font-family:"Open Sans (Custom)";font-weight:400;font-style:italic;descent-override:35%;src:local("Open Sans Italic")}@font-face{font-family:"Open Sans (Custom)";font-weight:500;descent-override:35%;src:local("Open Sans Medium"),local("Open Sans Regular")}@font-face{font-family:"Open Sans (Custom)";font-weight:500;font-style:italic;descent-override:35%;src:local("Open Sans Medium Italic"),local("Open Sans Italic")}@font-face{font-family:"Open Sans (Custom)";font-weight:700;descent-override:35%;src:local("Open Sans Bold")}@font-face{font-family:"Open Sans (Custom)";font-weight:700;font-style:italic;descent-override:35%;src:local("Open Sans Bold Italic")}@font-face{font-family:"Consolas (Custom)";font-weight:400;size-adjust:110%;ascent-override:85%;descent-override:22%;src:local("Consolas")}@font-face{font-family:"Consolas (Custom)";font-weight:400;font-style:italic;size-adjust:110%;ascent-override:85%;descent-override:22%;src:local("Consolas Italic")}@font-face{font-family:"Consolas (Custom)";font-weight:700;size-adjust:110%;ascent-override:85%;descent-override:22%;src:local("Consolas Bold")}@font-face{font-family:"Consolas (Custom)";font-weight:700;font-style:italic;size-adjust:110%;ascent-override:85%;descent-override:22%;src:local("Consolas Bold Italic")}.rt-reset:where(body,blockquote,dl,dd,figure,p){margin:0}.rt-reset:where(address,b,cite,code,dfn,em,i,kbd,q,samp,small,strong,var){font:unset}.rt-reset:where(h1,h2,h3,h4,h5,h6){font:unset;margin:0}.rt-reset:where(a){all:unset;-webkit-tap-highlight-color:transparent}.rt-reset:where(button,select,[type=button],[type=image],[type=reset],[type=submit],[type=checkbox],[type=color],[type=radio],[type=range]){all:unset;display:inline-block;font-weight:400;font-style:normal;text-indent:initial;-webkit-tap-highlight-color:transparent}.rt-reset:where(label){-webkit-tap-highlight-color:transparent}.rt-reset:where(select){font-weight:400;font-style:normal;text-align:start}.rt-reset:where(textarea,input:not([type=button],[type=image],[type=reset],[type=submit],[type=checkbox],[type=color],[type=radio],[type=range])){all:unset;display:block;width:-webkit-fill-available;width:-moz-available;width:stretch;font-weight:400;font-style:normal;text-align:start;text-indent:initial;-webkit-tap-highlight-color:transparent;cursor:text;white-space:pre-wrap}.rt-reset:where(:focus){outline:none}.rt-reset::placeholder{color:unset;opacity:unset;-webkit-user-select:none;user-select:none}.rt-reset:where(table){all:unset;display:table;text-indent:initial}.rt-reset:where(caption){text-align:inherit}.rt-reset:where(td){padding:0}.rt-reset:where(th){font-weight:unset;text-align:inherit;padding:0}.rt-reset:where(abbr,acronym){text-decoration:none}.rt-reset:where(canvas,object,picture,summary){display:block}.rt-reset:where(del,s){text-decoration:unset}.rt-reset:where(fieldset,hr){all:unset;display:block}.rt-reset:where(legend){padding:0;border:none;cursor:default}.rt-reset:where(li){display:block;text-align:unset}.rt-reset:where(ol,ul){list-style:none;margin:0;padding:0}.rt-reset:where(iframe){display:block;border:none;width:-webkit-fill-available;width:-moz-available;width:stretch}.rt-reset:where(ins,u){text-decoration:none}.rt-reset:where(img){display:block;max-width:100%}.rt-reset:where(svg){display:block;max-width:100%;flex-shrink:0}.rt-reset:where(mark){all:unset}.rt-reset:where(pre){font:unset;margin:unset}.rt-reset:where(q):before,.rt-reset:where(q):after{content:""}.rt-reset:where(sub,sup){font:unset;vertical-align:unset}.rt-reset:where(details) ::marker,.rt-reset:where(summary)::marker{content:none}.rt-reset:where(video){display:block;width:-webkit-fill-available;width:-moz-available;width:stretch}.rt-reset:where(:any-link){cursor:var(--cursor-link)}.rt-reset:where(button){cursor:var(--cursor-button)}.rt-reset:where(:disabled,[data-disabled]){cursor:var(--cursor-disabled)}.rt-reset:where(input[type=checkbox]){cursor:var(--cursor-checkbox)}.rt-reset:where(input[type=radio]){cursor:var(--cursor-radio)}.rt-reset,.rt-reset:before,.rt-reset:after{box-sizing:border-box}@keyframes rt-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rt-fade-out{0%{opacity:1}to{opacity:0}}@keyframes rt-slide-from-top{0%{transform:translateY(4px) scale(.97)}to{transform:translateY(0) scale(1)}}@keyframes rt-slide-to-top{0%{transform:translateY(0) scale(1)}to{transform:translateY(4px) scale(.97)}}@keyframes rt-slide-from-bottom{0%{transform:translateY(-4px) scale(.97)}to{transform:translateY(0) scale(1)}}@keyframes rt-slide-to-bottom{0%{transform:translateY(0) scale(1)}to{transform:translateY(-4px) scale(.97)}}@keyframes rt-slide-from-left{0%{transform:translate(4px) scale(.97)}to{transform:translate(0) scale(1)}}@keyframes rt-slide-to-left{0%{transform:translate(0) scale(1)}to{transform:translate(4px) scale(.97)}}@keyframes rt-slide-from-right{0%{transform:translate(-4px) scale(.97)}to{transform:translate(0) scale(1)}}@keyframes rt-slide-to-right{0%{transform:translate(0) scale(1)}to{transform:translate(-4px) scale(.97)}}@media (prefers-reduced-motion: no-preference){.rt-PopperContent{animation-timing-function:cubic-bezier(.16,1,.3,1)}.rt-PopperContent:where([data-state=open]){animation-duration:.16s}.rt-PopperContent:where([data-state=open]):where([data-side=top]){animation-name:rt-slide-from-top,rt-fade-in}.rt-PopperContent:where([data-state=open]):where([data-side=bottom]){animation-name:rt-slide-from-bottom,rt-fade-in}.rt-PopperContent:where([data-state=open]):where([data-side=left]){animation-name:rt-slide-from-left,rt-fade-in}.rt-PopperContent:where([data-state=open]):where([data-side=right]){animation-name:rt-slide-from-right,rt-fade-in}.rt-PopperContent:where([data-state=closed]){animation-duration:.1s}.rt-PopperContent:where([data-state=closed]):where([data-side=top]){animation-name:rt-slide-to-top,rt-fade-out}.rt-PopperContent:where([data-state=closed]):where([data-side=bottom]){animation-name:rt-slide-to-bottom,rt-fade-out}.rt-PopperContent:where([data-state=closed]):where([data-side=left]){animation-name:rt-slide-to-left,rt-fade-out}.rt-PopperContent:where([data-state=closed]):where([data-side=right]){animation-name:rt-slide-to-right,rt-fade-out}}.rt-Box{box-sizing:border-box;display:block}.rt-Flex{box-sizing:border-box;display:flex;justify-content:flex-start}.rt-Grid{box-sizing:border-box;display:grid;align-items:stretch;justify-content:flex-start;grid-template-columns:minmax(0,1fr);grid-template-rows:none}.rt-Section{box-sizing:border-box;flex-shrink:0}.rt-Section:where(.rt-r-size-1){padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-Section:where(.rt-r-size-2){padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-Section:where(.rt-r-size-3){padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-Section:where(.rt-r-size-4){padding-top:calc(80px * var(--scaling));padding-bottom:calc(80px * var(--scaling))}@media (min-width: 520px){.rt-Section:where(.xs\:rt-r-size-1){padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-Section:where(.xs\:rt-r-size-2){padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-Section:where(.xs\:rt-r-size-3){padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-Section:where(.xs\:rt-r-size-4){padding-top:calc(80px * var(--scaling));padding-bottom:calc(80px * var(--scaling))}}@media (min-width: 768px){.rt-Section:where(.sm\:rt-r-size-1){padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-Section:where(.sm\:rt-r-size-2){padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-Section:where(.sm\:rt-r-size-3){padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-Section:where(.sm\:rt-r-size-4){padding-top:calc(80px * var(--scaling));padding-bottom:calc(80px * var(--scaling))}}@media (min-width: 1024px){.rt-Section:where(.md\:rt-r-size-1){padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-Section:where(.md\:rt-r-size-2){padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-Section:where(.md\:rt-r-size-3){padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-Section:where(.md\:rt-r-size-4){padding-top:calc(80px * var(--scaling));padding-bottom:calc(80px * var(--scaling))}}@media (min-width: 1280px){.rt-Section:where(.lg\:rt-r-size-1){padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-Section:where(.lg\:rt-r-size-2){padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-Section:where(.lg\:rt-r-size-3){padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-Section:where(.lg\:rt-r-size-4){padding-top:calc(80px * var(--scaling));padding-bottom:calc(80px * var(--scaling))}}@media (min-width: 1640px){.rt-Section:where(.xl\:rt-r-size-1){padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-Section:where(.xl\:rt-r-size-2){padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-Section:where(.xl\:rt-r-size-3){padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-Section:where(.xl\:rt-r-size-4){padding-top:calc(80px * var(--scaling));padding-bottom:calc(80px * var(--scaling))}}.rt-Container{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;flex-shrink:0;flex-grow:1}.rt-ContainerInner{width:100%}:where(.rt-Container.rt-r-size-1) .rt-ContainerInner{max-width:var(--container-1)}:where(.rt-Container.rt-r-size-2) .rt-ContainerInner{max-width:var(--container-2)}:where(.rt-Container.rt-r-size-3) .rt-ContainerInner{max-width:var(--container-3)}:where(.rt-Container.rt-r-size-4) .rt-ContainerInner{max-width:var(--container-4)}@media (min-width: 520px){:where(.rt-Container.xs\:rt-r-size-1) .rt-ContainerInner{max-width:var(--container-1)}:where(.rt-Container.xs\:rt-r-size-2) .rt-ContainerInner{max-width:var(--container-2)}:where(.rt-Container.xs\:rt-r-size-3) .rt-ContainerInner{max-width:var(--container-3)}:where(.rt-Container.xs\:rt-r-size-4) .rt-ContainerInner{max-width:var(--container-4)}}@media (min-width: 768px){:where(.rt-Container.sm\:rt-r-size-1) .rt-ContainerInner{max-width:var(--container-1)}:where(.rt-Container.sm\:rt-r-size-2) .rt-ContainerInner{max-width:var(--container-2)}:where(.rt-Container.sm\:rt-r-size-3) .rt-ContainerInner{max-width:var(--container-3)}:where(.rt-Container.sm\:rt-r-size-4) .rt-ContainerInner{max-width:var(--container-4)}}@media (min-width: 1024px){:where(.rt-Container.md\:rt-r-size-1) .rt-ContainerInner{max-width:var(--container-1)}:where(.rt-Container.md\:rt-r-size-2) .rt-ContainerInner{max-width:var(--container-2)}:where(.rt-Container.md\:rt-r-size-3) .rt-ContainerInner{max-width:var(--container-3)}:where(.rt-Container.md\:rt-r-size-4) .rt-ContainerInner{max-width:var(--container-4)}}@media (min-width: 1280px){:where(.rt-Container.lg\:rt-r-size-1) .rt-ContainerInner{max-width:var(--container-1)}:where(.rt-Container.lg\:rt-r-size-2) .rt-ContainerInner{max-width:var(--container-2)}:where(.rt-Container.lg\:rt-r-size-3) .rt-ContainerInner{max-width:var(--container-3)}:where(.rt-Container.lg\:rt-r-size-4) .rt-ContainerInner{max-width:var(--container-4)}}@media (min-width: 1640px){:where(.rt-Container.xl\:rt-r-size-1) .rt-ContainerInner{max-width:var(--container-1)}:where(.rt-Container.xl\:rt-r-size-2) .rt-ContainerInner{max-width:var(--container-2)}:where(.rt-Container.xl\:rt-r-size-3) .rt-ContainerInner{max-width:var(--container-3)}:where(.rt-Container.xl\:rt-r-size-4) .rt-ContainerInner{max-width:var(--container-4)}}.rt-Skeleton{--skeleton-radius: var(--skeleton-radius-override);--skeleton-height: var(--skeleton-height-override);border-radius:var(--radius-1);animation:rt-skeleton-pulse 1s infinite alternate-reverse!important;background-image:none!important;background-clip:border-box!important;border:none!important;box-shadow:none!important;-webkit-box-decoration-break:clone!important;box-decoration-break:clone!important;color:transparent!important;outline:none!important;pointer-events:none!important;-webkit-user-select:none!important;user-select:none!important;cursor:default!important}.rt-Skeleton:where([data-inline-skeleton]){line-height:0;font-family:Arial,sans-serif!important}:where(.rt-Skeleton:empty){display:block;height:var(--space-3)}.rt-Skeleton>*,.rt-Skeleton:after,.rt-Skeleton:before{visibility:hidden!important}@keyframes rt-skeleton-pulse{0%{background-color:var(--gray-a3)}to{background-color:var(--gray-a4)}}.rt-Text{line-height:var(--line-height, var(--default-line-height));letter-spacing:var(--letter-spacing, inherit)}:where(.rt-Text){margin:0}.rt-Text:where([data-accent-color]){color:var(--accent-a11)}.rt-Text:where([data-accent-color].rt-high-contrast),:where([data-accent-color]:not(.radix-themes)) .rt-Text:where(.rt-high-contrast){color:var(--accent-12)}@media (pointer: coarse){.rt-Text:where(label){-webkit-tap-highlight-color:transparent}.rt-Text:where(label):where(:active){outline:.75em solid var(--gray-a4);outline-offset:-.6em}}.rt-Text:where(.rt-r-size-1){font-size:var(--font-size-1);--line-height: var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Text:where(.rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Text:where(.rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Text:where(.rt-r-size-4){font-size:var(--font-size-4);--line-height: var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Text:where(.rt-r-size-5){font-size:var(--font-size-5);--line-height: var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Text:where(.rt-r-size-6){font-size:var(--font-size-6);--line-height: var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Text:where(.rt-r-size-7){font-size:var(--font-size-7);--line-height: var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Text:where(.rt-r-size-8){font-size:var(--font-size-8);--line-height: var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Text:where(.rt-r-size-9){font-size:var(--font-size-9);--line-height: var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}@media (min-width: 520px){.rt-Text:where(.xs\:rt-r-size-1){font-size:var(--font-size-1);--line-height: var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Text:where(.xs\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Text:where(.xs\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Text:where(.xs\:rt-r-size-4){font-size:var(--font-size-4);--line-height: var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Text:where(.xs\:rt-r-size-5){font-size:var(--font-size-5);--line-height: var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Text:where(.xs\:rt-r-size-6){font-size:var(--font-size-6);--line-height: var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Text:where(.xs\:rt-r-size-7){font-size:var(--font-size-7);--line-height: var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Text:where(.xs\:rt-r-size-8){font-size:var(--font-size-8);--line-height: var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Text:where(.xs\:rt-r-size-9){font-size:var(--font-size-9);--line-height: var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 768px){.rt-Text:where(.sm\:rt-r-size-1){font-size:var(--font-size-1);--line-height: var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Text:where(.sm\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Text:where(.sm\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Text:where(.sm\:rt-r-size-4){font-size:var(--font-size-4);--line-height: var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Text:where(.sm\:rt-r-size-5){font-size:var(--font-size-5);--line-height: var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Text:where(.sm\:rt-r-size-6){font-size:var(--font-size-6);--line-height: var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Text:where(.sm\:rt-r-size-7){font-size:var(--font-size-7);--line-height: var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Text:where(.sm\:rt-r-size-8){font-size:var(--font-size-8);--line-height: var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Text:where(.sm\:rt-r-size-9){font-size:var(--font-size-9);--line-height: var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1024px){.rt-Text:where(.md\:rt-r-size-1){font-size:var(--font-size-1);--line-height: var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Text:where(.md\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Text:where(.md\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Text:where(.md\:rt-r-size-4){font-size:var(--font-size-4);--line-height: var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Text:where(.md\:rt-r-size-5){font-size:var(--font-size-5);--line-height: var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Text:where(.md\:rt-r-size-6){font-size:var(--font-size-6);--line-height: var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Text:where(.md\:rt-r-size-7){font-size:var(--font-size-7);--line-height: var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Text:where(.md\:rt-r-size-8){font-size:var(--font-size-8);--line-height: var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Text:where(.md\:rt-r-size-9){font-size:var(--font-size-9);--line-height: var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1280px){.rt-Text:where(.lg\:rt-r-size-1){font-size:var(--font-size-1);--line-height: var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Text:where(.lg\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Text:where(.lg\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Text:where(.lg\:rt-r-size-4){font-size:var(--font-size-4);--line-height: var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Text:where(.lg\:rt-r-size-5){font-size:var(--font-size-5);--line-height: var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Text:where(.lg\:rt-r-size-6){font-size:var(--font-size-6);--line-height: var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Text:where(.lg\:rt-r-size-7){font-size:var(--font-size-7);--line-height: var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Text:where(.lg\:rt-r-size-8){font-size:var(--font-size-8);--line-height: var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Text:where(.lg\:rt-r-size-9){font-size:var(--font-size-9);--line-height: var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1640px){.rt-Text:where(.xl\:rt-r-size-1){font-size:var(--font-size-1);--line-height: var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Text:where(.xl\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Text:where(.xl\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Text:where(.xl\:rt-r-size-4){font-size:var(--font-size-4);--line-height: var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Text:where(.xl\:rt-r-size-5){font-size:var(--font-size-5);--line-height: var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Text:where(.xl\:rt-r-size-6){font-size:var(--font-size-6);--line-height: var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Text:where(.xl\:rt-r-size-7){font-size:var(--font-size-7);--line-height: var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Text:where(.xl\:rt-r-size-8){font-size:var(--font-size-8);--line-height: var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Text:where(.xl\:rt-r-size-9){font-size:var(--font-size-9);--line-height: var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}.rt-BaseDialogOverlay{position:fixed;top:0;right:0;bottom:0;left:0}.rt-BaseDialogOverlay:before{position:fixed;content:"";top:0;right:0;bottom:0;left:0;background-color:var(--color-overlay)}.rt-BaseDialogScroll{display:flex;overflow:auto;position:absolute;top:0;right:0;bottom:0;left:0}.rt-BaseDialogScrollPadding{flex-grow:1;margin:auto;padding-top:var(--space-6);padding-bottom:max(var(--space-6),6vh);padding-left:var(--space-4);padding-right:var(--space-4)}.rt-BaseDialogScrollPadding:where(.rt-r-align-start){margin-top:0}.rt-BaseDialogScrollPadding:where(.rt-r-align-center){margin-top:auto}@media (min-width: 520px){.rt-BaseDialogScrollPadding:where(.xs\:rt-r-align-start){margin-top:0}.rt-BaseDialogScrollPadding:where(.xs\:rt-r-align-center){margin-top:auto}}@media (min-width: 768px){.rt-BaseDialogScrollPadding:where(.sm\:rt-r-align-start){margin-top:0}.rt-BaseDialogScrollPadding:where(.sm\:rt-r-align-center){margin-top:auto}}@media (min-width: 1024px){.rt-BaseDialogScrollPadding:where(.md\:rt-r-align-start){margin-top:0}.rt-BaseDialogScrollPadding:where(.md\:rt-r-align-center){margin-top:auto}}@media (min-width: 1280px){.rt-BaseDialogScrollPadding:where(.lg\:rt-r-align-start){margin-top:0}.rt-BaseDialogScrollPadding:where(.lg\:rt-r-align-center){margin-top:auto}}@media (min-width: 1640px){.rt-BaseDialogScrollPadding:where(.xl\:rt-r-align-start){margin-top:0}.rt-BaseDialogScrollPadding:where(.xl\:rt-r-align-center){margin-top:auto}}.rt-BaseDialogContent{margin:auto;width:100%;z-index:1;position:relative;overflow:auto;--inset-padding-top: var(--dialog-content-padding);--inset-padding-right: var(--dialog-content-padding);--inset-padding-bottom: var(--dialog-content-padding);--inset-padding-left: var(--dialog-content-padding);padding:var(--dialog-content-padding);box-sizing:border-box;background-color:var(--color-panel-solid);box-shadow:var(--shadow-6);outline:none}.rt-BaseDialogContent:where(.rt-r-size-1){--dialog-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.rt-r-size-2){--dialog-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.rt-r-size-3){--dialog-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-BaseDialogContent:where(.rt-r-size-4){--dialog-content-padding: var(--space-6);border-radius:var(--radius-5)}@media (min-width: 520px){.rt-BaseDialogContent:where(.xs\:rt-r-size-1){--dialog-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.xs\:rt-r-size-2){--dialog-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.xs\:rt-r-size-3){--dialog-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-BaseDialogContent:where(.xs\:rt-r-size-4){--dialog-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 768px){.rt-BaseDialogContent:where(.sm\:rt-r-size-1){--dialog-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.sm\:rt-r-size-2){--dialog-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.sm\:rt-r-size-3){--dialog-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-BaseDialogContent:where(.sm\:rt-r-size-4){--dialog-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 1024px){.rt-BaseDialogContent:where(.md\:rt-r-size-1){--dialog-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.md\:rt-r-size-2){--dialog-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.md\:rt-r-size-3){--dialog-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-BaseDialogContent:where(.md\:rt-r-size-4){--dialog-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 1280px){.rt-BaseDialogContent:where(.lg\:rt-r-size-1){--dialog-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.lg\:rt-r-size-2){--dialog-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.lg\:rt-r-size-3){--dialog-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-BaseDialogContent:where(.lg\:rt-r-size-4){--dialog-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 1640px){.rt-BaseDialogContent:where(.xl\:rt-r-size-1){--dialog-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.xl\:rt-r-size-2){--dialog-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-BaseDialogContent:where(.xl\:rt-r-size-3){--dialog-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-BaseDialogContent:where(.xl\:rt-r-size-4){--dialog-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (prefers-reduced-motion: no-preference){@keyframes rt-dialog-overlay-no-op{0%{opacity:1}to{opacity:1}}@keyframes rt-dialog-content-show{0%{opacity:0;transform:translateY(5px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes rt-dialog-content-hide{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(5px) scale(.99)}}.rt-BaseDialogOverlay:where([data-state=closed]){animation:rt-dialog-overlay-no-op .16s cubic-bezier(.16,1,.3,1)}.rt-BaseDialogOverlay:where([data-state=open]):before{animation:rt-fade-in .2s cubic-bezier(.16,1,.3,1)}.rt-BaseDialogOverlay:where([data-state=closed]):before{animation:rt-fade-out .16s cubic-bezier(.16,1,.3,1)}.rt-BaseDialogContent:where([data-state=open]){animation:rt-dialog-content-show .2s cubic-bezier(.16,1,.3,1)}.rt-BaseDialogContent:where([data-state=closed]){animation:rt-dialog-content-hide .1s cubic-bezier(.16,1,.3,1)}}.rt-AvatarRoot{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;-webkit-user-select:none;user-select:none;width:var(--avatar-size);height:var(--avatar-size);flex-shrink:0}.rt-AvatarImage{width:100%;height:100%;object-fit:cover;border-radius:inherit}.rt-AvatarFallback{font-family:var(--default-font-family);font-weight:var(--font-weight-medium);font-style:normal;z-index:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;line-height:1;border-radius:inherit;text-transform:uppercase}.rt-AvatarFallback:where(.rt-one-letter){font-size:var(--avatar-fallback-one-letter-font-size)}.rt-AvatarFallback:where(.rt-two-letters){font-size:var(--avatar-fallback-two-letters-font-size, var(--avatar-fallback-one-letter-font-size))}.rt-AvatarRoot:where(.rt-r-size-1){--avatar-size: var(--space-5);--avatar-fallback-one-letter-font-size: var(--font-size-2);--avatar-fallback-two-letters-font-size: var(--font-size-1);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-1)}.rt-AvatarRoot:where(.rt-r-size-2){--avatar-size: var(--space-6);--avatar-fallback-one-letter-font-size: var(--font-size-3);--avatar-fallback-two-letters-font-size: var(--font-size-2);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-2)}.rt-AvatarRoot:where(.rt-r-size-3){--avatar-size: var(--space-7);--avatar-fallback-one-letter-font-size: var(--font-size-4);--avatar-fallback-two-letters-font-size: var(--font-size-3);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-3)}.rt-AvatarRoot:where(.rt-r-size-4){--avatar-size: var(--space-8);--avatar-fallback-one-letter-font-size: var(--font-size-5);--avatar-fallback-two-letters-font-size: var(--font-size-4);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-4)}.rt-AvatarRoot:where(.rt-r-size-5){--avatar-size: var(--space-9);--avatar-fallback-one-letter-font-size: var(--font-size-6);border-radius:max(var(--radius-4),var(--radius-full));letter-spacing:var(--letter-spacing-6)}.rt-AvatarRoot:where(.rt-r-size-6){--avatar-size: 80px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.rt-r-size-7){--avatar-size: 96px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.rt-r-size-8){--avatar-size: 128px;--avatar-fallback-one-letter-font-size: var(--font-size-8);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-8)}.rt-AvatarRoot:where(.rt-r-size-9){--avatar-size: 160px;--avatar-fallback-one-letter-font-size: var(--font-size-9);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-9)}@media (min-width: 520px){.rt-AvatarRoot:where(.xs\:rt-r-size-1){--avatar-size: var(--space-5);--avatar-fallback-one-letter-font-size: var(--font-size-2);--avatar-fallback-two-letters-font-size: var(--font-size-1);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-1)}.rt-AvatarRoot:where(.xs\:rt-r-size-2){--avatar-size: var(--space-6);--avatar-fallback-one-letter-font-size: var(--font-size-3);--avatar-fallback-two-letters-font-size: var(--font-size-2);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-2)}.rt-AvatarRoot:where(.xs\:rt-r-size-3){--avatar-size: var(--space-7);--avatar-fallback-one-letter-font-size: var(--font-size-4);--avatar-fallback-two-letters-font-size: var(--font-size-3);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-3)}.rt-AvatarRoot:where(.xs\:rt-r-size-4){--avatar-size: var(--space-8);--avatar-fallback-one-letter-font-size: var(--font-size-5);--avatar-fallback-two-letters-font-size: var(--font-size-4);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-4)}.rt-AvatarRoot:where(.xs\:rt-r-size-5){--avatar-size: var(--space-9);--avatar-fallback-one-letter-font-size: var(--font-size-6);border-radius:max(var(--radius-4),var(--radius-full));letter-spacing:var(--letter-spacing-6)}.rt-AvatarRoot:where(.xs\:rt-r-size-6){--avatar-size: 80px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.xs\:rt-r-size-7){--avatar-size: 96px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.xs\:rt-r-size-8){--avatar-size: 128px;--avatar-fallback-one-letter-font-size: var(--font-size-8);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-8)}.rt-AvatarRoot:where(.xs\:rt-r-size-9){--avatar-size: 160px;--avatar-fallback-one-letter-font-size: var(--font-size-9);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-9)}}@media (min-width: 768px){.rt-AvatarRoot:where(.sm\:rt-r-size-1){--avatar-size: var(--space-5);--avatar-fallback-one-letter-font-size: var(--font-size-2);--avatar-fallback-two-letters-font-size: var(--font-size-1);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-1)}.rt-AvatarRoot:where(.sm\:rt-r-size-2){--avatar-size: var(--space-6);--avatar-fallback-one-letter-font-size: var(--font-size-3);--avatar-fallback-two-letters-font-size: var(--font-size-2);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-2)}.rt-AvatarRoot:where(.sm\:rt-r-size-3){--avatar-size: var(--space-7);--avatar-fallback-one-letter-font-size: var(--font-size-4);--avatar-fallback-two-letters-font-size: var(--font-size-3);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-3)}.rt-AvatarRoot:where(.sm\:rt-r-size-4){--avatar-size: var(--space-8);--avatar-fallback-one-letter-font-size: var(--font-size-5);--avatar-fallback-two-letters-font-size: var(--font-size-4);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-4)}.rt-AvatarRoot:where(.sm\:rt-r-size-5){--avatar-size: var(--space-9);--avatar-fallback-one-letter-font-size: var(--font-size-6);border-radius:max(var(--radius-4),var(--radius-full));letter-spacing:var(--letter-spacing-6)}.rt-AvatarRoot:where(.sm\:rt-r-size-6){--avatar-size: 80px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.sm\:rt-r-size-7){--avatar-size: 96px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.sm\:rt-r-size-8){--avatar-size: 128px;--avatar-fallback-one-letter-font-size: var(--font-size-8);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-8)}.rt-AvatarRoot:where(.sm\:rt-r-size-9){--avatar-size: 160px;--avatar-fallback-one-letter-font-size: var(--font-size-9);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-9)}}@media (min-width: 1024px){.rt-AvatarRoot:where(.md\:rt-r-size-1){--avatar-size: var(--space-5);--avatar-fallback-one-letter-font-size: var(--font-size-2);--avatar-fallback-two-letters-font-size: var(--font-size-1);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-1)}.rt-AvatarRoot:where(.md\:rt-r-size-2){--avatar-size: var(--space-6);--avatar-fallback-one-letter-font-size: var(--font-size-3);--avatar-fallback-two-letters-font-size: var(--font-size-2);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-2)}.rt-AvatarRoot:where(.md\:rt-r-size-3){--avatar-size: var(--space-7);--avatar-fallback-one-letter-font-size: var(--font-size-4);--avatar-fallback-two-letters-font-size: var(--font-size-3);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-3)}.rt-AvatarRoot:where(.md\:rt-r-size-4){--avatar-size: var(--space-8);--avatar-fallback-one-letter-font-size: var(--font-size-5);--avatar-fallback-two-letters-font-size: var(--font-size-4);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-4)}.rt-AvatarRoot:where(.md\:rt-r-size-5){--avatar-size: var(--space-9);--avatar-fallback-one-letter-font-size: var(--font-size-6);border-radius:max(var(--radius-4),var(--radius-full));letter-spacing:var(--letter-spacing-6)}.rt-AvatarRoot:where(.md\:rt-r-size-6){--avatar-size: 80px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.md\:rt-r-size-7){--avatar-size: 96px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.md\:rt-r-size-8){--avatar-size: 128px;--avatar-fallback-one-letter-font-size: var(--font-size-8);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-8)}.rt-AvatarRoot:where(.md\:rt-r-size-9){--avatar-size: 160px;--avatar-fallback-one-letter-font-size: var(--font-size-9);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-9)}}@media (min-width: 1280px){.rt-AvatarRoot:where(.lg\:rt-r-size-1){--avatar-size: var(--space-5);--avatar-fallback-one-letter-font-size: var(--font-size-2);--avatar-fallback-two-letters-font-size: var(--font-size-1);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-1)}.rt-AvatarRoot:where(.lg\:rt-r-size-2){--avatar-size: var(--space-6);--avatar-fallback-one-letter-font-size: var(--font-size-3);--avatar-fallback-two-letters-font-size: var(--font-size-2);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-2)}.rt-AvatarRoot:where(.lg\:rt-r-size-3){--avatar-size: var(--space-7);--avatar-fallback-one-letter-font-size: var(--font-size-4);--avatar-fallback-two-letters-font-size: var(--font-size-3);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-3)}.rt-AvatarRoot:where(.lg\:rt-r-size-4){--avatar-size: var(--space-8);--avatar-fallback-one-letter-font-size: var(--font-size-5);--avatar-fallback-two-letters-font-size: var(--font-size-4);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-4)}.rt-AvatarRoot:where(.lg\:rt-r-size-5){--avatar-size: var(--space-9);--avatar-fallback-one-letter-font-size: var(--font-size-6);border-radius:max(var(--radius-4),var(--radius-full));letter-spacing:var(--letter-spacing-6)}.rt-AvatarRoot:where(.lg\:rt-r-size-6){--avatar-size: 80px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.lg\:rt-r-size-7){--avatar-size: 96px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.lg\:rt-r-size-8){--avatar-size: 128px;--avatar-fallback-one-letter-font-size: var(--font-size-8);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-8)}.rt-AvatarRoot:where(.lg\:rt-r-size-9){--avatar-size: 160px;--avatar-fallback-one-letter-font-size: var(--font-size-9);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-9)}}@media (min-width: 1640px){.rt-AvatarRoot:where(.xl\:rt-r-size-1){--avatar-size: var(--space-5);--avatar-fallback-one-letter-font-size: var(--font-size-2);--avatar-fallback-two-letters-font-size: var(--font-size-1);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-1)}.rt-AvatarRoot:where(.xl\:rt-r-size-2){--avatar-size: var(--space-6);--avatar-fallback-one-letter-font-size: var(--font-size-3);--avatar-fallback-two-letters-font-size: var(--font-size-2);border-radius:max(var(--radius-2),var(--radius-full));letter-spacing:var(--letter-spacing-2)}.rt-AvatarRoot:where(.xl\:rt-r-size-3){--avatar-size: var(--space-7);--avatar-fallback-one-letter-font-size: var(--font-size-4);--avatar-fallback-two-letters-font-size: var(--font-size-3);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-3)}.rt-AvatarRoot:where(.xl\:rt-r-size-4){--avatar-size: var(--space-8);--avatar-fallback-one-letter-font-size: var(--font-size-5);--avatar-fallback-two-letters-font-size: var(--font-size-4);border-radius:max(var(--radius-3),var(--radius-full));letter-spacing:var(--letter-spacing-4)}.rt-AvatarRoot:where(.xl\:rt-r-size-5){--avatar-size: var(--space-9);--avatar-fallback-one-letter-font-size: var(--font-size-6);border-radius:max(var(--radius-4),var(--radius-full));letter-spacing:var(--letter-spacing-6)}.rt-AvatarRoot:where(.xl\:rt-r-size-6){--avatar-size: 80px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.xl\:rt-r-size-7){--avatar-size: 96px;--avatar-fallback-one-letter-font-size: var(--font-size-7);border-radius:max(var(--radius-5),var(--radius-full));letter-spacing:var(--letter-spacing-7)}.rt-AvatarRoot:where(.xl\:rt-r-size-8){--avatar-size: 128px;--avatar-fallback-one-letter-font-size: var(--font-size-8);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-8)}.rt-AvatarRoot:where(.xl\:rt-r-size-9){--avatar-size: 160px;--avatar-fallback-one-letter-font-size: var(--font-size-9);border-radius:max(var(--radius-6),var(--radius-full));letter-spacing:var(--letter-spacing-9)}}.rt-AvatarRoot:where(.rt-variant-solid) :where(.rt-AvatarFallback){background-color:var(--accent-9);color:var(--accent-contrast)}.rt-AvatarRoot:where(.rt-variant-solid):where(.rt-high-contrast) :where(.rt-AvatarFallback){background-color:var(--accent-12);color:var(--accent-1)}.rt-AvatarRoot:where(.rt-variant-soft) :where(.rt-AvatarFallback){background-color:var(--accent-a3);color:var(--accent-a11)}.rt-AvatarRoot:where(.rt-variant-soft):where(.rt-high-contrast) :where(.rt-AvatarFallback){color:var(--accent-12)}.rt-Badge{display:inline-flex;align-items:center;white-space:nowrap;font-family:var(--default-font-family);font-weight:var(--font-weight-medium);font-style:normal;flex-shrink:0;line-height:1;height:-moz-fit-content;height:fit-content}.rt-Badge:where(.rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:calc(var(--space-1) * .5) calc(var(--space-1) * 1.5);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-Badge:where(.rt-r-size-2){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:var(--space-1) var(--space-2);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-2),var(--radius-full))}.rt-Badge:where(.rt-r-size-3){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);padding:var(--space-1) calc(var(--space-2) * 1.25);gap:var(--space-2);border-radius:max(var(--radius-2),var(--radius-full))}@media (min-width: 520px){.rt-Badge:where(.xs\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:calc(var(--space-1) * .5) calc(var(--space-1) * 1.5);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-Badge:where(.xs\:rt-r-size-2){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:var(--space-1) var(--space-2);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-2),var(--radius-full))}.rt-Badge:where(.xs\:rt-r-size-3){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);padding:var(--space-1) calc(var(--space-2) * 1.25);gap:var(--space-2);border-radius:max(var(--radius-2),var(--radius-full))}}@media (min-width: 768px){.rt-Badge:where(.sm\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:calc(var(--space-1) * .5) calc(var(--space-1) * 1.5);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-Badge:where(.sm\:rt-r-size-2){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:var(--space-1) var(--space-2);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-2),var(--radius-full))}.rt-Badge:where(.sm\:rt-r-size-3){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);padding:var(--space-1) calc(var(--space-2) * 1.25);gap:var(--space-2);border-radius:max(var(--radius-2),var(--radius-full))}}@media (min-width: 1024px){.rt-Badge:where(.md\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:calc(var(--space-1) * .5) calc(var(--space-1) * 1.5);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-Badge:where(.md\:rt-r-size-2){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:var(--space-1) var(--space-2);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-2),var(--radius-full))}.rt-Badge:where(.md\:rt-r-size-3){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);padding:var(--space-1) calc(var(--space-2) * 1.25);gap:var(--space-2);border-radius:max(var(--radius-2),var(--radius-full))}}@media (min-width: 1280px){.rt-Badge:where(.lg\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:calc(var(--space-1) * .5) calc(var(--space-1) * 1.5);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-Badge:where(.lg\:rt-r-size-2){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:var(--space-1) var(--space-2);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-2),var(--radius-full))}.rt-Badge:where(.lg\:rt-r-size-3){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);padding:var(--space-1) calc(var(--space-2) * 1.25);gap:var(--space-2);border-radius:max(var(--radius-2),var(--radius-full))}}@media (min-width: 1640px){.rt-Badge:where(.xl\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:calc(var(--space-1) * .5) calc(var(--space-1) * 1.5);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-Badge:where(.xl\:rt-r-size-2){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);padding:var(--space-1) var(--space-2);gap:calc(var(--space-1) * 1.5);border-radius:max(var(--radius-2),var(--radius-full))}.rt-Badge:where(.xl\:rt-r-size-3){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);padding:var(--space-1) calc(var(--space-2) * 1.25);gap:var(--space-2);border-radius:max(var(--radius-2),var(--radius-full))}}.rt-Badge:where(.rt-variant-solid){background-color:var(--accent-9);color:var(--accent-contrast)}.rt-Badge:where(.rt-variant-solid)::selection{background-color:var(--accent-7);color:var(--accent-12)}.rt-Badge:where(.rt-variant-solid):where(.rt-high-contrast){background-color:var(--accent-12);color:var(--accent-1)}.rt-Badge:where(.rt-variant-solid):where(.rt-high-contrast)::selection{background-color:var(--accent-a11);color:var(--accent-1)}.rt-Badge:where(.rt-variant-surface){background-color:var(--accent-surface);box-shadow:inset 0 0 0 1px var(--accent-a6);color:var(--accent-a11)}.rt-Badge:where(.rt-variant-surface):where(.rt-high-contrast){color:var(--accent-12)}.rt-Badge:where(.rt-variant-soft){background-color:var(--accent-a3);color:var(--accent-a11)}.rt-Badge:where(.rt-variant-soft):where(.rt-high-contrast){color:var(--accent-12)}.rt-Badge:where(.rt-variant-outline){box-shadow:inset 0 0 0 1px var(--accent-a8);color:var(--accent-a11)}.rt-Badge:where(.rt-variant-outline):where(.rt-high-contrast){box-shadow:inset 0 0 0 1px var(--accent-a7),inset 0 0 0 1px var(--gray-a11);color:var(--accent-12)}.rt-Blockquote{box-sizing:border-box;border-left:max(var(--space-1),.25em) solid var(--accent-a6);padding-left:min(var(--space-5),max(var(--space-3),.5em))}.rt-BaseButton{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-user-select:none;user-select:none;vertical-align:top;font-family:var(--default-font-family);font-style:normal;text-align:center}.rt-BaseButton:where([data-disabled]){--spinner-opacity: 1}.rt-BaseButton:where(.rt-loading){position:relative}.rt-BaseButton:where(:not(.rt-variant-ghost)){height:var(--base-button-height)}.rt-BaseButton:where(.rt-variant-ghost){box-sizing:content-box;height:-moz-fit-content;height:fit-content}.rt-BaseButton:where(.rt-r-size-1){--base-button-classic-active-padding-top: 1px;--base-button-height: var(--space-5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-BaseButton:where(.rt-r-size-2){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-6);border-radius:max(var(--radius-2),var(--radius-full))}.rt-BaseButton:where(.rt-r-size-3){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-7);border-radius:max(var(--radius-3),var(--radius-full))}.rt-BaseButton:where(.rt-r-size-4){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-8);border-radius:max(var(--radius-4),var(--radius-full))}@media (min-width: 520px){.rt-BaseButton:where(.xs\:rt-r-size-1){--base-button-classic-active-padding-top: 1px;--base-button-height: var(--space-5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-BaseButton:where(.xs\:rt-r-size-2){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-6);border-radius:max(var(--radius-2),var(--radius-full))}.rt-BaseButton:where(.xs\:rt-r-size-3){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-7);border-radius:max(var(--radius-3),var(--radius-full))}.rt-BaseButton:where(.xs\:rt-r-size-4){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-8);border-radius:max(var(--radius-4),var(--radius-full))}}@media (min-width: 768px){.rt-BaseButton:where(.sm\:rt-r-size-1){--base-button-classic-active-padding-top: 1px;--base-button-height: var(--space-5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-BaseButton:where(.sm\:rt-r-size-2){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-6);border-radius:max(var(--radius-2),var(--radius-full))}.rt-BaseButton:where(.sm\:rt-r-size-3){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-7);border-radius:max(var(--radius-3),var(--radius-full))}.rt-BaseButton:where(.sm\:rt-r-size-4){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-8);border-radius:max(var(--radius-4),var(--radius-full))}}@media (min-width: 1024px){.rt-BaseButton:where(.md\:rt-r-size-1){--base-button-classic-active-padding-top: 1px;--base-button-height: var(--space-5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-BaseButton:where(.md\:rt-r-size-2){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-6);border-radius:max(var(--radius-2),var(--radius-full))}.rt-BaseButton:where(.md\:rt-r-size-3){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-7);border-radius:max(var(--radius-3),var(--radius-full))}.rt-BaseButton:where(.md\:rt-r-size-4){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-8);border-radius:max(var(--radius-4),var(--radius-full))}}@media (min-width: 1280px){.rt-BaseButton:where(.lg\:rt-r-size-1){--base-button-classic-active-padding-top: 1px;--base-button-height: var(--space-5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-BaseButton:where(.lg\:rt-r-size-2){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-6);border-radius:max(var(--radius-2),var(--radius-full))}.rt-BaseButton:where(.lg\:rt-r-size-3){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-7);border-radius:max(var(--radius-3),var(--radius-full))}.rt-BaseButton:where(.lg\:rt-r-size-4){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-8);border-radius:max(var(--radius-4),var(--radius-full))}}@media (min-width: 1640px){.rt-BaseButton:where(.xl\:rt-r-size-1){--base-button-classic-active-padding-top: 1px;--base-button-height: var(--space-5);border-radius:max(var(--radius-1),var(--radius-full))}.rt-BaseButton:where(.xl\:rt-r-size-2){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-6);border-radius:max(var(--radius-2),var(--radius-full))}.rt-BaseButton:where(.xl\:rt-r-size-3){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-7);border-radius:max(var(--radius-3),var(--radius-full))}.rt-BaseButton:where(.xl\:rt-r-size-4){--base-button-classic-active-padding-top: 2px;--base-button-height: var(--space-8);border-radius:max(var(--radius-4),var(--radius-full))}}.rt-BaseButton:where(.rt-variant-classic){background-color:var(--accent-9);color:var(--accent-contrast);position:relative;z-index:0;background-image:linear-gradient(to bottom,transparent 50%,var(--gray-a4)),linear-gradient(to bottom,transparent 50%,var(--accent-9) 80%);box-shadow:var(--base-button-classic-box-shadow-top),inset 0 0 0 1px var(--accent-9),var(--base-button-classic-box-shadow-bottom)}.rt-BaseButton:where(.rt-variant-classic):after{content:"";position:absolute;border-radius:inherit;pointer-events:none;top:0;right:0;bottom:0;left:0;z-index:-1;border:var(--base-button-classic-after-inset) solid transparent;background-clip:content-box;background-color:inherit;background-image:linear-gradient(var(--black-a1),transparent,var(--white-a2));box-shadow:inset 0 2px 3px -1px var(--white-a4)}.rt-BaseButton:where(.rt-variant-classic):where(.rt-high-contrast){background-color:var(--accent-12);color:var(--gray-1);background-image:linear-gradient(to bottom,transparent 50%,var(--gray-a4)),linear-gradient(to bottom,transparent 50%,var(--accent-12) 80%);box-shadow:var(--base-button-classic-box-shadow-top),inset 0 0 0 1px var(--accent-12),var(--base-button-classic-box-shadow-bottom)}.rt-BaseButton:where(.rt-variant-classic):where(.rt-high-contrast):after{background-image:linear-gradient(var(--black-a3),transparent,var(--white-a2))}@media (pointer: coarse){.rt-BaseButton:where(.rt-variant-classic):where(:active:not([data-state=open])){outline:.5em solid var(--accent-a4);outline-offset:0}}.rt-BaseButton:where(.rt-variant-classic):where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:2px}@media (hover: hover){.rt-BaseButton:where(.rt-variant-classic):where(:hover):after{background-color:var(--accent-10);background-image:linear-gradient(var(--black-a2) -15%,transparent,var(--white-a3))}.rt-BaseButton:where(.rt-variant-classic):where(:hover):where(.rt-high-contrast){filter:var(--base-button-classic-high-contrast-hover-filter)}.rt-BaseButton:where(.rt-variant-classic):where(:hover):where(.rt-high-contrast):after{background-color:var(--accent-12);background-image:linear-gradient(var(--black-a5),transparent,var(--white-a2))}}.rt-BaseButton:where(.rt-variant-classic):where([data-state=open]):after{background-color:var(--accent-10);background-image:linear-gradient(var(--black-a2) -15%,transparent,var(--white-a3))}.rt-BaseButton:where(.rt-variant-classic):where([data-state=open]):where(.rt-high-contrast){filter:var(--base-button-classic-high-contrast-hover-filter)}.rt-BaseButton:where(.rt-variant-classic):where([data-state=open]):where(.rt-high-contrast):after{background-color:var(--accent-12);background-image:linear-gradient(var(--black-a5),transparent,var(--white-a2))}.rt-BaseButton:where(.rt-variant-classic):where(:active:not([data-state=open],[data-disabled])){background-color:var(--accent-9);background-image:linear-gradient(var(--black-a1),transparent);padding-top:var(--base-button-classic-active-padding-top);box-shadow:inset 0 4px 2px -2px var(--gray-a4),inset 0 1px 1px var(--gray-a7),inset 0 0 0 1px var(--gray-a5),inset 0 0 0 1px var(--accent-9),inset 0 3px 2px var(--gray-a3),inset 0 0 0 1px var(--white-a7),inset 0 -2px 1px var(--white-a5)}.rt-BaseButton:where(.rt-variant-classic):where(:active:not([data-state=open],[data-disabled])):after{box-shadow:none;background-color:inherit;background-image:linear-gradient(var(--black-a2),transparent,var(--white-a3))}.rt-BaseButton:where(.rt-variant-classic):where(:active:not([data-state=open],[data-disabled])):where(.rt-high-contrast){background-color:var(--accent-12);filter:var(--base-button-classic-high-contrast-active-filter);box-shadow:var(--base-button__classic-active__shadow-front-layer),inset 0 0 0 1px var(--accent-12),var(--base-button__classic-active__shadow-bottom-layer)}.rt-BaseButton:where(.rt-variant-classic):where(:active:not([data-state=open],[data-disabled])):where(.rt-high-contrast):after{background-image:linear-gradient(var(--black-a5),transparent,var(--white-a3))}.rt-BaseButton:where(.rt-variant-classic):where([data-disabled]){color:var(--gray-a8);background-color:var(--gray-2);background-image:none;box-shadow:var(--base-button-classic-disabled-box-shadow);outline:none;filter:none}.rt-BaseButton:where(.rt-variant-classic):where([data-disabled]):after{box-shadow:none;background-color:var(--gray-a2);background-image:linear-gradient(var(--black-a1) -20%,transparent,var(--white-a1))}.rt-BaseButton:where(.rt-variant-solid){background-color:var(--accent-9);color:var(--accent-contrast)}@media (hover: hover){.rt-BaseButton:where(.rt-variant-solid):where(:hover){background-color:var(--accent-10)}}.rt-BaseButton:where(.rt-variant-solid):where([data-state=open]){background-color:var(--accent-10)}.rt-BaseButton:where(.rt-variant-solid):where(:active:not([data-state=open])){background-color:var(--accent-10);filter:var(--base-button-solid-active-filter)}@media (pointer: coarse){.rt-BaseButton:where(.rt-variant-solid):where(:active:not([data-state=open])){outline:.5em solid var(--accent-a4);outline-offset:0}}.rt-BaseButton:where(.rt-variant-solid):where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:2px}.rt-BaseButton:where(.rt-variant-solid):where(.rt-high-contrast){background-color:var(--accent-12);color:var(--gray-1)}@media (hover: hover){.rt-BaseButton:where(.rt-variant-solid):where(.rt-high-contrast):where(:hover){background-color:var(--accent-12);filter:var(--base-button-solid-high-contrast-hover-filter)}}.rt-BaseButton:where(.rt-variant-solid):where(.rt-high-contrast):where([data-state=open]){background-color:var(--accent-12);filter:var(--base-button-solid-high-contrast-hover-filter)}.rt-BaseButton:where(.rt-variant-solid):where(.rt-high-contrast):where(:active:not([data-state=open])){background-color:var(--accent-12);filter:var(--base-button-solid-high-contrast-active-filter)}.rt-BaseButton:where(.rt-variant-solid):where([data-disabled]){color:var(--gray-a8);background-color:var(--gray-a3);outline:none;filter:none}.rt-BaseButton:where(.rt-variant-soft,.rt-variant-ghost){color:var(--accent-a11)}.rt-BaseButton:where(.rt-variant-soft,.rt-variant-ghost):where(.rt-high-contrast){color:var(--accent-12)}.rt-BaseButton:where(.rt-variant-soft,.rt-variant-ghost):where([data-disabled]){color:var(--gray-a8);background-color:var(--gray-a3)}.rt-BaseButton:where(.rt-variant-soft){background-color:var(--accent-a3)}.rt-BaseButton:where(.rt-variant-soft):where(:focus-visible){outline:2px solid var(--accent-8);outline-offset:-1px}@media (hover: hover){.rt-BaseButton:where(.rt-variant-soft):where(:hover){background-color:var(--accent-a4)}}.rt-BaseButton:where(.rt-variant-soft):where([data-state=open]){background-color:var(--accent-a4)}.rt-BaseButton:where(.rt-variant-soft):where(:active:not([data-state=open])){background-color:var(--accent-a5)}.rt-BaseButton:where(.rt-variant-soft):where([data-disabled]){color:var(--gray-a8);background-color:var(--gray-a3)}@media (hover: hover){.rt-BaseButton:where(.rt-variant-ghost):where(:hover){background-color:var(--accent-a3)}}.rt-BaseButton:where(.rt-variant-ghost):where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-BaseButton:where(.rt-variant-ghost):where([data-state=open]){background-color:var(--accent-a3)}.rt-BaseButton:where(.rt-variant-ghost):where(:active:not([data-state=open])){background-color:var(--accent-a4)}.rt-BaseButton:where(.rt-variant-ghost):where([data-disabled]){color:var(--gray-a8);background-color:transparent}.rt-BaseButton:where(.rt-variant-outline){box-shadow:inset 0 0 0 1px var(--accent-a8);color:var(--accent-a11)}@media (hover: hover){.rt-BaseButton:where(.rt-variant-outline):where(:hover){background-color:var(--accent-a2)}}.rt-BaseButton:where(.rt-variant-outline):where([data-state=open]){background-color:var(--accent-a2)}.rt-BaseButton:where(.rt-variant-outline):where(:active:not([data-state=open])){background-color:var(--accent-a3)}.rt-BaseButton:where(.rt-variant-outline):where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-BaseButton:where(.rt-variant-outline):where(.rt-high-contrast){box-shadow:inset 0 0 0 1px var(--accent-a7),inset 0 0 0 1px var(--gray-a11);color:var(--accent-12)}.rt-BaseButton:where(.rt-variant-outline):where([data-disabled]){color:var(--gray-a8);box-shadow:inset 0 0 0 1px var(--gray-a7);background-color:transparent}.rt-BaseButton:where(.rt-variant-surface){background-color:var(--accent-surface);box-shadow:inset 0 0 0 1px var(--accent-a7);color:var(--accent-a11)}@media (hover: hover){.rt-BaseButton:where(.rt-variant-surface):where(:hover){box-shadow:inset 0 0 0 1px var(--accent-a8)}}.rt-BaseButton:where(.rt-variant-surface):where([data-state=open]){box-shadow:inset 0 0 0 1px var(--accent-a8)}.rt-BaseButton:where(.rt-variant-surface):where(:active:not([data-state=open])){background-color:var(--accent-a3);box-shadow:inset 0 0 0 1px var(--accent-a8)}.rt-BaseButton:where(.rt-variant-surface):where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-BaseButton:where(.rt-variant-surface):where(.rt-high-contrast){color:var(--accent-12)}.rt-BaseButton:where(.rt-variant-surface):where([data-disabled]){color:var(--gray-a8);box-shadow:inset 0 0 0 1px var(--gray-a6);background-color:var(--gray-a2)}.rt-Button:where(:not(.rt-variant-ghost)) :where(svg){opacity:.9}.rt-Button:where(.rt-variant-ghost){padding:var(--button-ghost-padding-y) var(--button-ghost-padding-x);--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px;--margin-top-override: calc(var(--margin-top) - var(--button-ghost-padding-y));--margin-right-override: calc(var(--margin-right) - var(--button-ghost-padding-x));--margin-bottom-override: calc(var(--margin-bottom) - var(--button-ghost-padding-y));--margin-left-override: calc(var(--margin-left) - var(--button-ghost-padding-x));margin:var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override) var(--margin-left-override)}:where(.rt-Button:where(.rt-variant-ghost))>*{--margin-top-override: initial;--margin-right-override: initial;--margin-bottom-override: initial;--margin-left-override: initial}.rt-Button:where(.rt-r-size-1){gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-Button:where(.rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-Button:where(.rt-r-size-1):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.rt-r-size-2){gap:var(--space-2);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-Button:where(.rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-Button:where(.rt-r-size-2):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.rt-r-size-3){gap:var(--space-3);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}.rt-Button:where(.rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-Button:where(.rt-r-size-3):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-3);--button-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-Button:where(.rt-r-size-4){gap:var(--space-3);font-size:var(--font-size-4);line-height:var(--line-height-4);letter-spacing:var(--letter-spacing-4)}.rt-Button:where(.rt-r-size-4):where(:not(.rt-variant-ghost)){padding-left:var(--space-5);padding-right:var(--space-5)}.rt-Button:where(.rt-r-size-4):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-4);--button-ghost-padding-y: var(--space-2)}@media (min-width: 520px){.rt-Button:where(.xs\:rt-r-size-1){gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-Button:where(.xs\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-Button:where(.xs\:rt-r-size-1):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.xs\:rt-r-size-2){gap:var(--space-2);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-Button:where(.xs\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-Button:where(.xs\:rt-r-size-2):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.xs\:rt-r-size-3){gap:var(--space-3);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}.rt-Button:where(.xs\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-Button:where(.xs\:rt-r-size-3):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-3);--button-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-Button:where(.xs\:rt-r-size-4){gap:var(--space-3);font-size:var(--font-size-4);line-height:var(--line-height-4);letter-spacing:var(--letter-spacing-4)}.rt-Button:where(.xs\:rt-r-size-4):where(:not(.rt-variant-ghost)){padding-left:var(--space-5);padding-right:var(--space-5)}.rt-Button:where(.xs\:rt-r-size-4):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-4);--button-ghost-padding-y: var(--space-2)}}@media (min-width: 768px){.rt-Button:where(.sm\:rt-r-size-1){gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-Button:where(.sm\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-Button:where(.sm\:rt-r-size-1):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.sm\:rt-r-size-2){gap:var(--space-2);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-Button:where(.sm\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-Button:where(.sm\:rt-r-size-2):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.sm\:rt-r-size-3){gap:var(--space-3);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}.rt-Button:where(.sm\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-Button:where(.sm\:rt-r-size-3):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-3);--button-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-Button:where(.sm\:rt-r-size-4){gap:var(--space-3);font-size:var(--font-size-4);line-height:var(--line-height-4);letter-spacing:var(--letter-spacing-4)}.rt-Button:where(.sm\:rt-r-size-4):where(:not(.rt-variant-ghost)){padding-left:var(--space-5);padding-right:var(--space-5)}.rt-Button:where(.sm\:rt-r-size-4):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-4);--button-ghost-padding-y: var(--space-2)}}@media (min-width: 1024px){.rt-Button:where(.md\:rt-r-size-1){gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-Button:where(.md\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-Button:where(.md\:rt-r-size-1):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.md\:rt-r-size-2){gap:var(--space-2);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-Button:where(.md\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-Button:where(.md\:rt-r-size-2):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.md\:rt-r-size-3){gap:var(--space-3);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}.rt-Button:where(.md\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-Button:where(.md\:rt-r-size-3):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-3);--button-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-Button:where(.md\:rt-r-size-4){gap:var(--space-3);font-size:var(--font-size-4);line-height:var(--line-height-4);letter-spacing:var(--letter-spacing-4)}.rt-Button:where(.md\:rt-r-size-4):where(:not(.rt-variant-ghost)){padding-left:var(--space-5);padding-right:var(--space-5)}.rt-Button:where(.md\:rt-r-size-4):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-4);--button-ghost-padding-y: var(--space-2)}}@media (min-width: 1280px){.rt-Button:where(.lg\:rt-r-size-1){gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-Button:where(.lg\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-Button:where(.lg\:rt-r-size-1):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.lg\:rt-r-size-2){gap:var(--space-2);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-Button:where(.lg\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-Button:where(.lg\:rt-r-size-2):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.lg\:rt-r-size-3){gap:var(--space-3);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}.rt-Button:where(.lg\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-Button:where(.lg\:rt-r-size-3):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-3);--button-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-Button:where(.lg\:rt-r-size-4){gap:var(--space-3);font-size:var(--font-size-4);line-height:var(--line-height-4);letter-spacing:var(--letter-spacing-4)}.rt-Button:where(.lg\:rt-r-size-4):where(:not(.rt-variant-ghost)){padding-left:var(--space-5);padding-right:var(--space-5)}.rt-Button:where(.lg\:rt-r-size-4):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-4);--button-ghost-padding-y: var(--space-2)}}@media (min-width: 1640px){.rt-Button:where(.xl\:rt-r-size-1){gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-Button:where(.xl\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-Button:where(.xl\:rt-r-size-1):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.xl\:rt-r-size-2){gap:var(--space-2);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-Button:where(.xl\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-Button:where(.xl\:rt-r-size-2):where(.rt-variant-ghost){gap:var(--space-1);--button-ghost-padding-x: var(--space-2);--button-ghost-padding-y: var(--space-1)}.rt-Button:where(.xl\:rt-r-size-3){gap:var(--space-3);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}.rt-Button:where(.xl\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-Button:where(.xl\:rt-r-size-3):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-3);--button-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-Button:where(.xl\:rt-r-size-4){gap:var(--space-3);font-size:var(--font-size-4);line-height:var(--line-height-4);letter-spacing:var(--letter-spacing-4)}.rt-Button:where(.xl\:rt-r-size-4):where(:not(.rt-variant-ghost)){padding-left:var(--space-5);padding-right:var(--space-5)}.rt-Button:where(.xl\:rt-r-size-4):where(.rt-variant-ghost){gap:var(--space-2);--button-ghost-padding-x: var(--space-4);--button-ghost-padding-y: var(--space-2)}}.rt-Button:where(:not(.rt-variant-ghost)){font-weight:var(--font-weight-medium)}.rt-CalloutRoot{box-sizing:border-box;display:grid;align-items:flex-start;justify-content:flex-start;text-align:left;color:var(--accent-a11)}.rt-CalloutRoot:where(.rt-high-contrast){color:var(--accent-12)}.rt-CalloutIcon{display:flex;align-items:center;grid-column-start:-2;height:var(--callout-icon-height)}.rt-CalloutRoot>:where(:not(.rt-CalloutIcon)){grid-column-start:-1}.rt-CalloutRoot:where(.rt-r-size-1){row-gap:var(--space-2);column-gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-3);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.rt-r-size-2){row-gap:var(--space-2);column-gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-4);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.rt-r-size-3){row-gap:var(--space-3);column-gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-5);--callout-icon-height: var(--line-height-3)}@media (min-width: 520px){.rt-CalloutRoot:where(.xs\:rt-r-size-1){row-gap:var(--space-2);column-gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-3);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.xs\:rt-r-size-2){row-gap:var(--space-2);column-gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-4);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.xs\:rt-r-size-3){row-gap:var(--space-3);column-gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-5);--callout-icon-height: var(--line-height-3)}}@media (min-width: 768px){.rt-CalloutRoot:where(.sm\:rt-r-size-1){row-gap:var(--space-2);column-gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-3);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.sm\:rt-r-size-2){row-gap:var(--space-2);column-gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-4);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.sm\:rt-r-size-3){row-gap:var(--space-3);column-gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-5);--callout-icon-height: var(--line-height-3)}}@media (min-width: 1024px){.rt-CalloutRoot:where(.md\:rt-r-size-1){row-gap:var(--space-2);column-gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-3);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.md\:rt-r-size-2){row-gap:var(--space-2);column-gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-4);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.md\:rt-r-size-3){row-gap:var(--space-3);column-gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-5);--callout-icon-height: var(--line-height-3)}}@media (min-width: 1280px){.rt-CalloutRoot:where(.lg\:rt-r-size-1){row-gap:var(--space-2);column-gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-3);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.lg\:rt-r-size-2){row-gap:var(--space-2);column-gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-4);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.lg\:rt-r-size-3){row-gap:var(--space-3);column-gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-5);--callout-icon-height: var(--line-height-3)}}@media (min-width: 1640px){.rt-CalloutRoot:where(.xl\:rt-r-size-1){row-gap:var(--space-2);column-gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-3);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.xl\:rt-r-size-2){row-gap:var(--space-2);column-gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-4);--callout-icon-height: var(--line-height-2)}.rt-CalloutRoot:where(.xl\:rt-r-size-3){row-gap:var(--space-3);column-gap:var(--space-4);padding:var(--space-5);border-radius:var(--radius-5);--callout-icon-height: var(--line-height-3)}}.rt-CalloutRoot:where(.rt-variant-soft){background-color:var(--accent-a3)}.rt-CalloutRoot:where(.rt-variant-surface){box-shadow:inset 0 0 0 1px var(--accent-a6);background-color:var(--accent-a2)}.rt-CalloutRoot:where(.rt-variant-outline){box-shadow:inset 0 0 0 1px var(--accent-a7)}.rt-BaseCard{display:block;position:relative;overflow:hidden;border-radius:var(--base-card-border-radius);font-family:var(--default-font-family);font-weight:var(--font-weight-normal);font-style:normal;text-align:start;--inset-border-width: var(--base-card-border-width);--inset-border-radius: var(--base-card-border-radius);padding-top:var(--base-card-padding-top);padding-right:var(--base-card-padding-right);padding-bottom:var(--base-card-padding-bottom);padding-left:var(--base-card-padding-left);box-sizing:border-box;--inset-padding-top: calc(var(--base-card-padding-top) - var(--base-card-border-width));--inset-padding-right: calc(var(--base-card-padding-right) - var(--base-card-border-width));--inset-padding-bottom: calc(var(--base-card-padding-bottom) - var(--base-card-border-width));--inset-padding-left: calc(var(--base-card-padding-left) - var(--base-card-border-width));contain:paint}.rt-BaseCard:before,.rt-BaseCard:after{content:"";position:absolute;pointer-events:none;transition:inherit;border-radius:calc(var(--base-card-border-radius) - var(--base-card-border-width));inset:var(--base-card-border-width)}.rt-BaseCard:before{z-index:-1}.rt-Card{--base-card-padding-top: var(--card-padding);--base-card-padding-right: var(--card-padding);--base-card-padding-bottom: var(--card-padding);--base-card-padding-left: var(--card-padding);--base-card-border-radius: var(--card-border-radius);--base-card-border-width: var(--card-border-width)}.rt-Card:where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-Card:where(:focus-visible):after{outline:inherit}.rt-Card:where(:focus-visible):where(:active:not([data-state=open])):before{background-image:linear-gradient(var(--focus-a2),var(--focus-a2))}.rt-Card:where(.rt-r-size-1){--card-padding: var(--space-3);--card-border-radius: var(--radius-4)}.rt-Card:where(.rt-r-size-2){--card-padding: var(--space-4);--card-border-radius: var(--radius-4)}.rt-Card:where(.rt-r-size-3){--card-padding: var(--space-5);--card-border-radius: var(--radius-5)}.rt-Card:where(.rt-r-size-4){--card-padding: var(--space-6);--card-border-radius: var(--radius-5)}.rt-Card:where(.rt-r-size-5){--card-padding: var(--space-8);--card-border-radius: var(--radius-6)}@media (min-width: 520px){.rt-Card:where(.xs\:rt-r-size-1){--card-padding: var(--space-3);--card-border-radius: var(--radius-4)}.rt-Card:where(.xs\:rt-r-size-2){--card-padding: var(--space-4);--card-border-radius: var(--radius-4)}.rt-Card:where(.xs\:rt-r-size-3){--card-padding: var(--space-5);--card-border-radius: var(--radius-5)}.rt-Card:where(.xs\:rt-r-size-4){--card-padding: var(--space-6);--card-border-radius: var(--radius-5)}.rt-Card:where(.xs\:rt-r-size-5){--card-padding: var(--space-8);--card-border-radius: var(--radius-6)}}@media (min-width: 768px){.rt-Card:where(.sm\:rt-r-size-1){--card-padding: var(--space-3);--card-border-radius: var(--radius-4)}.rt-Card:where(.sm\:rt-r-size-2){--card-padding: var(--space-4);--card-border-radius: var(--radius-4)}.rt-Card:where(.sm\:rt-r-size-3){--card-padding: var(--space-5);--card-border-radius: var(--radius-5)}.rt-Card:where(.sm\:rt-r-size-4){--card-padding: var(--space-6);--card-border-radius: var(--radius-5)}.rt-Card:where(.sm\:rt-r-size-5){--card-padding: var(--space-8);--card-border-radius: var(--radius-6)}}@media (min-width: 1024px){.rt-Card:where(.md\:rt-r-size-1){--card-padding: var(--space-3);--card-border-radius: var(--radius-4)}.rt-Card:where(.md\:rt-r-size-2){--card-padding: var(--space-4);--card-border-radius: var(--radius-4)}.rt-Card:where(.md\:rt-r-size-3){--card-padding: var(--space-5);--card-border-radius: var(--radius-5)}.rt-Card:where(.md\:rt-r-size-4){--card-padding: var(--space-6);--card-border-radius: var(--radius-5)}.rt-Card:where(.md\:rt-r-size-5){--card-padding: var(--space-8);--card-border-radius: var(--radius-6)}}@media (min-width: 1280px){.rt-Card:where(.lg\:rt-r-size-1){--card-padding: var(--space-3);--card-border-radius: var(--radius-4)}.rt-Card:where(.lg\:rt-r-size-2){--card-padding: var(--space-4);--card-border-radius: var(--radius-4)}.rt-Card:where(.lg\:rt-r-size-3){--card-padding: var(--space-5);--card-border-radius: var(--radius-5)}.rt-Card:where(.lg\:rt-r-size-4){--card-padding: var(--space-6);--card-border-radius: var(--radius-5)}.rt-Card:where(.lg\:rt-r-size-5){--card-padding: var(--space-8);--card-border-radius: var(--radius-6)}}@media (min-width: 1640px){.rt-Card:where(.xl\:rt-r-size-1){--card-padding: var(--space-3);--card-border-radius: var(--radius-4)}.rt-Card:where(.xl\:rt-r-size-2){--card-padding: var(--space-4);--card-border-radius: var(--radius-4)}.rt-Card:where(.xl\:rt-r-size-3){--card-padding: var(--space-5);--card-border-radius: var(--radius-5)}.rt-Card:where(.xl\:rt-r-size-4){--card-padding: var(--space-6);--card-border-radius: var(--radius-5)}.rt-Card:where(.xl\:rt-r-size-5){--card-padding: var(--space-8);--card-border-radius: var(--radius-6)}}.rt-Card:where(.rt-variant-surface){--card-border-width: 1px;--card-background-color: var(--color-panel)}.rt-Card:where(.rt-variant-surface):before{background-color:var(--card-background-color);-webkit-backdrop-filter:var(--backdrop-filter-panel);backdrop-filter:var(--backdrop-filter-panel)}.rt-Card:where(.rt-variant-surface):after{box-shadow:var(--base-card-surface-box-shadow)}@media (hover: hover){.rt-Card:where(.rt-variant-surface):where(:any-link,button,label):where(:hover):after{box-shadow:var(--base-card-surface-hover-box-shadow)}}.rt-Card:where(.rt-variant-surface):where(:any-link,button,label):where([data-state=open]):after{box-shadow:var(--base-card-surface-hover-box-shadow)}.rt-Card:where(.rt-variant-surface):where(:any-link,button,label):where(:active:not([data-state=open])):after{box-shadow:var(--base-card-surface-active-box-shadow)}.rt-Card:where(.rt-variant-classic){--card-border-width: 1px;--card-background-color: var(--color-panel);transition:box-shadow .12s;box-shadow:var(--base-card-classic-box-shadow-outer)}.rt-Card:where(.rt-variant-classic):before{background-color:var(--card-background-color);-webkit-backdrop-filter:var(--backdrop-filter-panel);backdrop-filter:var(--backdrop-filter-panel)}.rt-Card:where(.rt-variant-classic):after{box-shadow:var(--base-card-classic-box-shadow-inner)}@media (hover: hover){.rt-Card:where(.rt-variant-classic):where(:any-link,button,label):where(:hover){transition-duration:40ms;box-shadow:var(--base-card-classic-hover-box-shadow-outer)}.rt-Card:where(.rt-variant-classic):where(:any-link,button,label):where(:hover):after{box-shadow:var(--base-card-classic-hover-box-shadow-inner)}}.rt-Card:where(.rt-variant-classic):where(:any-link,button,label):where([data-state=open]){transition-duration:40ms;box-shadow:var(--base-card-classic-hover-box-shadow-outer)}.rt-Card:where(.rt-variant-classic):where(:any-link,button,label):where([data-state=open]):after{box-shadow:var(--base-card-classic-hover-box-shadow-inner)}.rt-Card:where(.rt-variant-classic):where(:any-link,button,label):where(:active:not([data-state=open])){transition-duration:40ms;box-shadow:var(--base-card-classic-active-box-shadow-outer)}.rt-Card:where(.rt-variant-classic):where(:any-link,button,label):where(:active:not([data-state=open])):after{box-shadow:var(--base-card-classic-active-box-shadow-inner)}.rt-Card:where(.rt-variant-ghost){--card-border-width: 0px;--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px;--margin-top-override: calc(var(--margin-top) - var(--card-padding));--margin-right-override: calc(var(--margin-right) - var(--card-padding));--margin-bottom-override: calc(var(--margin-bottom) - var(--card-padding));--margin-left-override: calc(var(--margin-left) - var(--card-padding));margin-top:var(--margin-top-override);margin-right:var(--margin-right-override);margin-bottom:var(--margin-bottom-override);margin-left:var(--margin-left-override)}:where(.rt-Card:where(.rt-variant-ghost))>*{--margin-top-override: initial;--margin-right-override: initial;--margin-bottom-override: initial;--margin-left-override: initial}@media (hover: hover){.rt-Card:where(.rt-variant-ghost):where(:any-link,button,label):where(:hover){background-color:var(--gray-a3)}.rt-Card:where(.rt-variant-ghost):where(:any-link,button,label):where(:hover):where(:focus-visible){background-color:var(--focus-a2)}}.rt-Card:where(.rt-variant-ghost):where(:any-link,button,label):where([data-state=open]){background-color:var(--gray-a3)}.rt-Card:where(.rt-variant-ghost):where(:any-link,button,label):where([data-state=open]):where(:focus-visible){background-color:var(--focus-a2)}.rt-Card:where(.rt-variant-ghost):where(:any-link,button,label):where(:active:not([data-state=open])){background-color:var(--gray-a4)}.rt-Card:where(.rt-variant-ghost):where(:any-link,button,label):where(:active:not([data-state=open])):where(:focus-visible){background-color:var(--focus-a2)}@media (pointer: coarse){.rt-Card:where(:any-link,button,label):where(:active:not(:focus-visible,[data-state=open])):before{background-image:linear-gradient(var(--gray-a4),var(--gray-a4))}}.rt-BaseCheckboxRoot{position:relative;display:inline-flex;align-items:center;justify-content:center;vertical-align:top;flex-shrink:0;cursor:var(--cursor-checkbox);height:var(--skeleton-height, var(--line-height, var(--checkbox-size)));--skeleton-height-override: var(--checkbox-size);border-radius:var(--skeleton-radius);--skeleton-radius-override: var(--checkbox-border-radius)}.rt-BaseCheckboxRoot:before{content:"";display:block;height:var(--checkbox-size);width:var(--checkbox-size);border-radius:var(--checkbox-border-radius)}.rt-BaseCheckboxIndicator{position:absolute;width:var(--checkbox-indicator-size);height:var(--checkbox-indicator-size);transform:translate(-50%,-50%);top:50%;left:50%}.rt-BaseCheckboxRoot:where(.rt-r-size-1){--checkbox-size: calc(var(--space-4) * .875);--checkbox-indicator-size: calc(9px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * .875)}.rt-BaseCheckboxRoot:where(.rt-r-size-2){--checkbox-size: var(--space-4);--checkbox-indicator-size: calc(10px * var(--scaling));--checkbox-border-radius: var(--radius-1)}.rt-BaseCheckboxRoot:where(.rt-r-size-3){--checkbox-size: calc(var(--space-4) * 1.25);--checkbox-indicator-size: calc(12px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * 1.25)}@media (min-width: 520px){.rt-BaseCheckboxRoot:where(.xs\:rt-r-size-1){--checkbox-size: calc(var(--space-4) * .875);--checkbox-indicator-size: calc(9px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * .875)}.rt-BaseCheckboxRoot:where(.xs\:rt-r-size-2){--checkbox-size: var(--space-4);--checkbox-indicator-size: calc(10px * var(--scaling));--checkbox-border-radius: var(--radius-1)}.rt-BaseCheckboxRoot:where(.xs\:rt-r-size-3){--checkbox-size: calc(var(--space-4) * 1.25);--checkbox-indicator-size: calc(12px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * 1.25)}}@media (min-width: 768px){.rt-BaseCheckboxRoot:where(.sm\:rt-r-size-1){--checkbox-size: calc(var(--space-4) * .875);--checkbox-indicator-size: calc(9px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * .875)}.rt-BaseCheckboxRoot:where(.sm\:rt-r-size-2){--checkbox-size: var(--space-4);--checkbox-indicator-size: calc(10px * var(--scaling));--checkbox-border-radius: var(--radius-1)}.rt-BaseCheckboxRoot:where(.sm\:rt-r-size-3){--checkbox-size: calc(var(--space-4) * 1.25);--checkbox-indicator-size: calc(12px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * 1.25)}}@media (min-width: 1024px){.rt-BaseCheckboxRoot:where(.md\:rt-r-size-1){--checkbox-size: calc(var(--space-4) * .875);--checkbox-indicator-size: calc(9px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * .875)}.rt-BaseCheckboxRoot:where(.md\:rt-r-size-2){--checkbox-size: var(--space-4);--checkbox-indicator-size: calc(10px * var(--scaling));--checkbox-border-radius: var(--radius-1)}.rt-BaseCheckboxRoot:where(.md\:rt-r-size-3){--checkbox-size: calc(var(--space-4) * 1.25);--checkbox-indicator-size: calc(12px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * 1.25)}}@media (min-width: 1280px){.rt-BaseCheckboxRoot:where(.lg\:rt-r-size-1){--checkbox-size: calc(var(--space-4) * .875);--checkbox-indicator-size: calc(9px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * .875)}.rt-BaseCheckboxRoot:where(.lg\:rt-r-size-2){--checkbox-size: var(--space-4);--checkbox-indicator-size: calc(10px * var(--scaling));--checkbox-border-radius: var(--radius-1)}.rt-BaseCheckboxRoot:where(.lg\:rt-r-size-3){--checkbox-size: calc(var(--space-4) * 1.25);--checkbox-indicator-size: calc(12px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * 1.25)}}@media (min-width: 1640px){.rt-BaseCheckboxRoot:where(.xl\:rt-r-size-1){--checkbox-size: calc(var(--space-4) * .875);--checkbox-indicator-size: calc(9px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * .875)}.rt-BaseCheckboxRoot:where(.xl\:rt-r-size-2){--checkbox-size: var(--space-4);--checkbox-indicator-size: calc(10px * var(--scaling));--checkbox-border-radius: var(--radius-1)}.rt-BaseCheckboxRoot:where(.xl\:rt-r-size-3){--checkbox-size: calc(var(--space-4) * 1.25);--checkbox-indicator-size: calc(12px * var(--scaling));--checkbox-border-radius: calc(var(--radius-1) * 1.25)}}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where([data-state=unchecked]):before{background-color:var(--color-surface);box-shadow:inset 0 0 0 1px var(--gray-a7)}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where([data-state=checked],[data-state=indeterminate]):before{background-color:var(--accent-indicator)}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where([data-state=checked],[data-state=indeterminate]) :where(.rt-BaseCheckboxIndicator){color:var(--accent-contrast)}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where([data-state=checked],[data-state=indeterminate]):where(.rt-high-contrast):before{background-color:var(--accent-12)}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where([data-state=checked],[data-state=indeterminate]):where(.rt-high-contrast) :where(.rt-BaseCheckboxIndicator){color:var(--accent-1)}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where(:disabled):before{box-shadow:inset 0 0 0 1px var(--gray-a6);background-color:transparent}.rt-BaseCheckboxRoot:where(.rt-variant-surface):where(:disabled) :where(.rt-BaseCheckboxIndicator){color:var(--gray-a8)}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where([data-state=unchecked]):before{background-color:var(--color-surface);box-shadow:inset 0 0 0 1px var(--gray-a3),var(--shadow-1)}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where([data-state=checked],[data-state=indeterminate]):before{background-color:var(--accent-indicator);background-image:linear-gradient(to bottom,var(--white-a3),transparent,var(--black-a1));box-shadow:inset 0 .5px .5px var(--white-a4),inset 0 -.5px .5px var(--black-a4)}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where([data-state=checked],[data-state=indeterminate]) :where(.rt-BaseCheckboxIndicator){color:var(--accent-contrast)}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where([data-state=checked],[data-state=indeterminate]):where(.rt-high-contrast):before{background-color:var(--accent-12)}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where([data-state=checked],[data-state=indeterminate]):where(.rt-high-contrast) :where(.rt-BaseCheckboxIndicator){color:var(--accent-1)}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where(:disabled):before{box-shadow:var(--shadow-1);background-color:transparent;background-image:none}.rt-BaseCheckboxRoot:where(.rt-variant-classic):where(:disabled) :where(.rt-BaseCheckboxIndicator){color:var(--gray-a8)}.rt-BaseCheckboxRoot:where(.rt-variant-soft):before{background-color:var(--accent-a5)}.rt-BaseCheckboxRoot:where(.rt-variant-soft):where([data-state=checked],[data-state=indeterminate]) :where(.rt-BaseCheckboxIndicator){color:var(--accent-a11)}.rt-BaseCheckboxRoot:where(.rt-variant-soft):where([data-state=checked],[data-state=indeterminate]):where(.rt-high-contrast) :where(.rt-BaseCheckboxIndicator){color:var(--accent-12)}.rt-BaseCheckboxRoot:where(.rt-variant-soft):where(:disabled):before{background-color:transparent}.rt-BaseCheckboxRoot:where(.rt-variant-soft):where(:disabled) :where(.rt-BaseCheckboxIndicator){color:var(--gray-a8)}.rt-CheckboxCardsRoot{line-height:var(--line-height);letter-spacing:var(--letter-spacing);cursor:default}.rt-CheckboxCardsItem:where(:has(:focus-visible)){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-CheckboxCardsItem:where(:has(:focus-visible)):after{outline:inherit}.rt-CheckboxCardsItem>*{pointer-events:none}.rt-CheckboxCardsItem>:where(svg){flex-shrink:0}.rt-CheckboxCardCheckbox{position:absolute;right:var(--checkbox-cards-item-padding-left)}.rt-CheckboxCardsItem{--checkbox-cards-item-padding-right: calc(var(--checkbox-cards-item-padding-left) * 2 + var(--checkbox-cards-item-checkbox-size));--base-card-padding-top: var(--checkbox-cards-item-padding-top);--base-card-padding-right: var(--checkbox-cards-item-padding-right);--base-card-padding-bottom: var(--checkbox-cards-item-padding-bottom);--base-card-padding-left: var(--checkbox-cards-item-padding-left);--base-card-border-radius: var(--checkbox-cards-item-border-radius);--base-card-border-width: var(--checkbox-cards-item-border-width);display:flex;align-items:center;gap:var(--space-2);cursor:var(--cursor-button);-webkit-tap-highlight-color:transparent}.rt-CheckboxCardsRoot:where(.rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-left: var(--space-3);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * .875)}.rt-CheckboxCardsRoot:where(.rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-4) * .875);--checkbox-cards-item-padding-bottom: calc(var(--space-4) * .875);--checkbox-cards-item-padding-left: var(--space-4);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: var(--space-4)}.rt-CheckboxCardsRoot:where(.rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-left: var(--space-5);--checkbox-cards-item-border-radius: var(--radius-4);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25)}@media (min-width: 520px){.rt-CheckboxCardsRoot:where(.xs\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-left: var(--space-3);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * .875)}.rt-CheckboxCardsRoot:where(.xs\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-4) * .875);--checkbox-cards-item-padding-bottom: calc(var(--space-4) * .875);--checkbox-cards-item-padding-left: var(--space-4);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: var(--space-4)}.rt-CheckboxCardsRoot:where(.xs\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-left: var(--space-5);--checkbox-cards-item-border-radius: var(--radius-4);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25)}}@media (min-width: 768px){.rt-CheckboxCardsRoot:where(.sm\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-left: var(--space-3);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * .875)}.rt-CheckboxCardsRoot:where(.sm\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-4) * .875);--checkbox-cards-item-padding-bottom: calc(var(--space-4) * .875);--checkbox-cards-item-padding-left: var(--space-4);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: var(--space-4)}.rt-CheckboxCardsRoot:where(.sm\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-left: var(--space-5);--checkbox-cards-item-border-radius: var(--radius-4);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25)}}@media (min-width: 1024px){.rt-CheckboxCardsRoot:where(.md\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-left: var(--space-3);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * .875)}.rt-CheckboxCardsRoot:where(.md\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-4) * .875);--checkbox-cards-item-padding-bottom: calc(var(--space-4) * .875);--checkbox-cards-item-padding-left: var(--space-4);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: var(--space-4)}.rt-CheckboxCardsRoot:where(.md\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-left: var(--space-5);--checkbox-cards-item-border-radius: var(--radius-4);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25)}}@media (min-width: 1280px){.rt-CheckboxCardsRoot:where(.lg\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-left: var(--space-3);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * .875)}.rt-CheckboxCardsRoot:where(.lg\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-4) * .875);--checkbox-cards-item-padding-bottom: calc(var(--space-4) * .875);--checkbox-cards-item-padding-left: var(--space-4);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: var(--space-4)}.rt-CheckboxCardsRoot:where(.lg\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-left: var(--space-5);--checkbox-cards-item-border-radius: var(--radius-4);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25)}}@media (min-width: 1640px){.rt-CheckboxCardsRoot:where(.xl\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);--checkbox-cards-item-padding-left: var(--space-3);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * .875)}.rt-CheckboxCardsRoot:where(.xl\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--checkbox-cards-item-padding-top: calc(var(--space-4) * .875);--checkbox-cards-item-padding-bottom: calc(var(--space-4) * .875);--checkbox-cards-item-padding-left: var(--space-4);--checkbox-cards-item-border-radius: var(--radius-3);--checkbox-cards-item-checkbox-size: var(--space-4)}.rt-CheckboxCardsRoot:where(.xl\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);--checkbox-cards-item-padding-left: var(--space-5);--checkbox-cards-item-border-radius: var(--radius-4);--checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25)}}:where(.rt-CheckboxCardsRoot.rt-variant-surface) .rt-CheckboxCardsItem{--checkbox-cards-item-border-width: 1px;--checkbox-cards-item-background-color: var(--color-surface)}:where(.rt-CheckboxCardsRoot.rt-variant-surface) .rt-CheckboxCardsItem:before{background-color:var(--checkbox-cards-item-background-color)}:where(.rt-CheckboxCardsRoot.rt-variant-surface) .rt-CheckboxCardsItem:after{box-shadow:var(--base-card-surface-box-shadow)}@media (hover: hover){:where(.rt-CheckboxCardsRoot.rt-variant-surface) .rt-CheckboxCardsItem:where(:not(:has(:disabled)):hover):after{box-shadow:var(--base-card-surface-hover-box-shadow)}}:where(.rt-CheckboxCardsRoot.rt-variant-classic) .rt-CheckboxCardsItem{--checkbox-cards-item-border-width: 1px;--checkbox-cards-item-background-color: var(--color-surface);transition:box-shadow .12s;box-shadow:var(--base-card-classic-box-shadow-outer)}:where(.rt-CheckboxCardsRoot.rt-variant-classic) .rt-CheckboxCardsItem:before{background-color:var(--checkbox-cards-item-background-color)}:where(.rt-CheckboxCardsRoot.rt-variant-classic) .rt-CheckboxCardsItem:after{box-shadow:var(--base-card-classic-box-shadow-inner)}@media (hover: hover){:where(.rt-CheckboxCardsRoot.rt-variant-classic) .rt-CheckboxCardsItem:where(:not(:has(:disabled)):hover){transition-duration:40ms;box-shadow:var(--base-card-classic-hover-box-shadow-outer)}:where(.rt-CheckboxCardsRoot.rt-variant-classic) .rt-CheckboxCardsItem:where(:not(:has(:disabled)):hover):after{box-shadow:var(--base-card-classic-hover-box-shadow-inner)}}@media (pointer: coarse){.rt-CheckboxCardsItem:where(:active:not(:focus-visible)):before{background-image:linear-gradient(var(--gray-a4),var(--gray-a4))}}.rt-CheckboxCardsItem:where(:has(:disabled)){cursor:var(--cursor-disabled);color:var(--gray-a9)}.rt-CheckboxCardsItem:where(:has(:disabled)):before{background-image:linear-gradient(var(--gray-a2),var(--gray-a2))}.rt-CheckboxCardsItem:where(:has(:disabled))::selection{background-color:var(--gray-a5)}.rt-CheckboxGroupRoot{display:flex;flex-direction:column;gap:var(--space-1)}.rt-CheckboxGroupItem{display:flex;gap:.5em;width:-moz-fit-content;width:fit-content}.rt-CheckboxGroupItemCheckbox:where(:focus-visible):before{outline:2px solid var(--focus-8);outline-offset:2px}.rt-CheckboxGroupItemCheckbox:where(:disabled){cursor:var(--cursor-disabled)}.rt-CheckboxGroupItemCheckbox:where(:disabled):before{background-color:var(--gray-a3)}.rt-CheckboxGroupItemInner{min-width:0}.rt-CheckboxRoot:where(:focus-visible):before{outline:2px solid var(--focus-8);outline-offset:2px}.rt-CheckboxRoot:where(:disabled){cursor:var(--cursor-disabled)}.rt-CheckboxRoot:where(:disabled):before{background-color:var(--gray-a3)}.rt-Code{--code-variant-font-size-adjust: calc(var(--code-font-size-adjust) * .95);font-family:var(--code-font-family);font-size:calc(var(--code-variant-font-size-adjust) * 1em);font-style:var(--code-font-style);font-weight:var(--code-font-weight);line-height:1.25;letter-spacing:calc(var(--code-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));border-radius:calc((.5px + .2em) * var(--radius-factor));box-sizing:border-box;padding-top:var(--code-padding-top);padding-left:var(--code-padding-left);padding-bottom:var(--code-padding-bottom);padding-right:var(--code-padding-right);height:-moz-fit-content;height:fit-content}.rt-Code :where(.rt-Code){font-size:inherit}.rt-Code:where(.rt-r-size-1){font-size:calc(var(--font-size-1) * var(--code-variant-font-size-adjust));line-height:var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Code:where(.rt-r-size-2){font-size:calc(var(--font-size-2) * var(--code-variant-font-size-adjust));line-height:var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Code:where(.rt-r-size-3){font-size:calc(var(--font-size-3) * var(--code-variant-font-size-adjust));line-height:var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Code:where(.rt-r-size-4){font-size:calc(var(--font-size-4) * var(--code-variant-font-size-adjust));line-height:var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Code:where(.rt-r-size-5){font-size:calc(var(--font-size-5) * var(--code-variant-font-size-adjust));line-height:var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Code:where(.rt-r-size-6){font-size:calc(var(--font-size-6) * var(--code-variant-font-size-adjust));line-height:var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Code:where(.rt-r-size-7){font-size:calc(var(--font-size-7) * var(--code-variant-font-size-adjust));line-height:var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Code:where(.rt-r-size-8){font-size:calc(var(--font-size-8) * var(--code-variant-font-size-adjust));line-height:var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Code:where(.rt-r-size-9){font-size:calc(var(--font-size-9) * var(--code-variant-font-size-adjust));line-height:var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}@media (min-width: 520px){.rt-Code:where(.xs\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--code-variant-font-size-adjust));line-height:var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Code:where(.xs\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--code-variant-font-size-adjust));line-height:var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Code:where(.xs\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--code-variant-font-size-adjust));line-height:var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Code:where(.xs\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--code-variant-font-size-adjust));line-height:var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Code:where(.xs\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--code-variant-font-size-adjust));line-height:var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Code:where(.xs\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--code-variant-font-size-adjust));line-height:var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Code:where(.xs\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--code-variant-font-size-adjust));line-height:var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Code:where(.xs\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--code-variant-font-size-adjust));line-height:var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Code:where(.xs\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--code-variant-font-size-adjust));line-height:var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 768px){.rt-Code:where(.sm\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--code-variant-font-size-adjust));line-height:var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Code:where(.sm\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--code-variant-font-size-adjust));line-height:var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Code:where(.sm\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--code-variant-font-size-adjust));line-height:var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Code:where(.sm\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--code-variant-font-size-adjust));line-height:var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Code:where(.sm\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--code-variant-font-size-adjust));line-height:var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Code:where(.sm\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--code-variant-font-size-adjust));line-height:var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Code:where(.sm\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--code-variant-font-size-adjust));line-height:var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Code:where(.sm\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--code-variant-font-size-adjust));line-height:var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Code:where(.sm\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--code-variant-font-size-adjust));line-height:var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1024px){.rt-Code:where(.md\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--code-variant-font-size-adjust));line-height:var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Code:where(.md\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--code-variant-font-size-adjust));line-height:var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Code:where(.md\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--code-variant-font-size-adjust));line-height:var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Code:where(.md\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--code-variant-font-size-adjust));line-height:var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Code:where(.md\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--code-variant-font-size-adjust));line-height:var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Code:where(.md\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--code-variant-font-size-adjust));line-height:var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Code:where(.md\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--code-variant-font-size-adjust));line-height:var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Code:where(.md\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--code-variant-font-size-adjust));line-height:var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Code:where(.md\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--code-variant-font-size-adjust));line-height:var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1280px){.rt-Code:where(.lg\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--code-variant-font-size-adjust));line-height:var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Code:where(.lg\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--code-variant-font-size-adjust));line-height:var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Code:where(.lg\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--code-variant-font-size-adjust));line-height:var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Code:where(.lg\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--code-variant-font-size-adjust));line-height:var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Code:where(.lg\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--code-variant-font-size-adjust));line-height:var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Code:where(.lg\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--code-variant-font-size-adjust));line-height:var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Code:where(.lg\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--code-variant-font-size-adjust));line-height:var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Code:where(.lg\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--code-variant-font-size-adjust));line-height:var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Code:where(.lg\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--code-variant-font-size-adjust));line-height:var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1640px){.rt-Code:where(.xl\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--code-variant-font-size-adjust));line-height:var(--line-height-1);--letter-spacing: var(--letter-spacing-1)}.rt-Code:where(.xl\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--code-variant-font-size-adjust));line-height:var(--line-height-2);--letter-spacing: var(--letter-spacing-2)}.rt-Code:where(.xl\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--code-variant-font-size-adjust));line-height:var(--line-height-3);--letter-spacing: var(--letter-spacing-3)}.rt-Code:where(.xl\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--code-variant-font-size-adjust));line-height:var(--line-height-4);--letter-spacing: var(--letter-spacing-4)}.rt-Code:where(.xl\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--code-variant-font-size-adjust));line-height:var(--line-height-5);--letter-spacing: var(--letter-spacing-5)}.rt-Code:where(.xl\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--code-variant-font-size-adjust));line-height:var(--line-height-6);--letter-spacing: var(--letter-spacing-6)}.rt-Code:where(.xl\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--code-variant-font-size-adjust));line-height:var(--line-height-7);--letter-spacing: var(--letter-spacing-7)}.rt-Code:where(.xl\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--code-variant-font-size-adjust));line-height:var(--line-height-8);--letter-spacing: var(--letter-spacing-8)}.rt-Code:where(.xl\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--code-variant-font-size-adjust));line-height:var(--line-height-9);--letter-spacing: var(--letter-spacing-9)}}.rt-Code:where(.rt-variant-ghost){--code-variant-font-size-adjust: var(--code-font-size-adjust);padding:0}.rt-Code:where(.rt-variant-ghost):where([data-accent-color]){color:var(--accent-a11)}.rt-Code:where(.rt-variant-ghost):where([data-accent-color].rt-high-contrast),:where([data-accent-color]:not(.radix-themes)) .rt-Code:where(.rt-variant-ghost):where(.rt-high-contrast){color:var(--accent-12)}.rt-Code:where(.rt-variant-solid){background-color:var(--accent-a9);color:var(--accent-contrast)}.rt-Code:where(.rt-variant-solid)::selection{background-color:var(--accent-7);color:var(--accent-12)}.rt-Code:where(.rt-variant-solid):where(.rt-high-contrast){background-color:var(--accent-12);color:var(--accent-1)}.rt-Code:where(.rt-variant-solid):where(.rt-high-contrast)::selection{background-color:var(--accent-a11);color:var(--accent-1)}:where(.rt-Link) .rt-Code:where(.rt-variant-solid),.rt-Code:where(.rt-variant-solid):where(:any-link,button){isolation:isolate}@media (hover: hover){:where(.rt-Link) .rt-Code:where(.rt-variant-solid):where(:hover),.rt-Code:where(.rt-variant-solid):where(:any-link,button):where(:hover){background-color:var(--accent-10)}:where(.rt-Link) .rt-Code:where(.rt-variant-solid):where(.rt-high-contrast:hover),.rt-Code:where(.rt-variant-solid):where(:any-link,button):where(.rt-high-contrast:hover){background-color:var(--accent-12);filter:var(--base-button-solid-high-contrast-hover-filter)}}.rt-Code:where(.rt-variant-soft){background-color:var(--accent-a3);color:var(--accent-a11)}.rt-Code:where(.rt-variant-soft):where(.rt-high-contrast){color:var(--accent-12)}:where(.rt-Link) .rt-Code:where(.rt-variant-soft),.rt-Code:where(.rt-variant-soft):where(:any-link,button){isolation:isolate}@media (hover: hover){:where(.rt-Link) .rt-Code:where(.rt-variant-soft):where(:hover),.rt-Code:where(.rt-variant-soft):where(:any-link,button):where(:hover){background-color:var(--accent-a4)}}.rt-Code:where(.rt-variant-outline){box-shadow:inset 0 0 0 max(1px,.033em) var(--accent-a8);color:var(--accent-a11)}.rt-Code:where(.rt-variant-outline):where(.rt-high-contrast){box-shadow:inset 0 0 0 max(1px,.033em) var(--accent-a7),inset 0 0 0 max(1px,.033em) var(--gray-a11);color:var(--accent-12)}:where(.rt-Link) .rt-Code:where(.rt-variant-outline),.rt-Code:where(.rt-variant-outline):where(:any-link,button){isolation:isolate}@media (hover: hover){:where(.rt-Link) .rt-Code:where(.rt-variant-outline):where(:hover),.rt-Code:where(.rt-variant-outline):where(:any-link,button):where(:hover){background-color:var(--accent-a2)}}.rt-BaseMenuContent{--scrollarea-scrollbar-vertical-margin-top: var(--base-menu-content-padding);--scrollarea-scrollbar-vertical-margin-bottom: var(--base-menu-content-padding);--scrollarea-scrollbar-horizontal-margin-left: var(--base-menu-content-padding);--scrollarea-scrollbar-horizontal-margin-right: var(--base-menu-content-padding);display:flex;flex-direction:column;box-sizing:border-box;overflow:hidden;background-color:var(--base-menu-bg);--base-menu-bg: var(--color-panel-solid);box-shadow:var(--shadow-5)}.rt-BaseMenuViewport{flex:1 1 0%;display:flex;flex-direction:column;overflow:auto;padding:var(--base-menu-content-padding);box-sizing:border-box}:where(.rt-BaseMenuContent:has(.rt-ScrollAreaScrollbar[data-orientation=vertical])) .rt-BaseMenuViewport{padding-right:var(--space-3)}.rt-BaseMenuItem{display:flex;align-items:center;gap:var(--space-2);height:var(--base-menu-item-height);padding-left:var(--base-menu-item-padding-left);padding-right:var(--base-menu-item-padding-right);box-sizing:border-box;position:relative;outline:none;scroll-margin:var(--base-menu-content-padding) 0;-webkit-user-select:none;user-select:none;cursor:var(--cursor-menu-item)}.rt-BaseMenuShortcut{display:flex;align-items:center;margin-left:auto;padding-left:var(--space-4);color:var(--gray-a11)}.rt-BaseMenuSubTriggerIcon{color:var(--gray-12);margin-right:calc(-2px * var(--scaling))}.rt-BaseMenuItemIndicator{position:absolute;left:0;width:var(--base-menu-item-padding-left);display:inline-flex;align-items:center;justify-content:center}.rt-BaseMenuSeparator{height:1px;margin-top:var(--space-2);margin-bottom:var(--space-2);margin-left:var(--base-menu-item-padding-left);margin-right:var(--base-menu-item-padding-right);background-color:var(--gray-a6)}.rt-BaseMenuLabel{display:flex;align-items:center;height:var(--base-menu-item-height);padding-left:var(--base-menu-item-padding-left);padding-right:var(--base-menu-item-padding-right);box-sizing:border-box;color:var(--gray-a10);-webkit-user-select:none;user-select:none;cursor:default}:where(.rt-BaseMenuItem)+.rt-BaseMenuLabel{margin-top:var(--space-2)}.rt-BaseMenuArrow{fill:var(--base-menu-bg)}.rt-BaseMenuContent:where(.rt-r-size-1){--base-menu-content-padding: var(--space-1);--base-menu-item-padding-left: calc(var(--space-5) / 1.2);--base-menu-item-padding-right: var(--space-2);--base-menu-item-height: var(--space-5);border-radius:var(--radius-3)}.rt-BaseMenuContent:where(.rt-r-size-1) :where(.rt-BaseMenuItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-BaseMenuContent:where(.rt-r-size-1) :where(.rt-BaseMenuLabel){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-BaseMenuContent:where(.rt-r-size-1) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-BaseMenuContent:where(.rt-r-size-1):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-2)}.rt-BaseMenuContent:where(.rt-r-size-1):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: calc(var(--space-5) / 1.2)}.rt-BaseMenuContent:where(.rt-r-size-2){--base-menu-content-padding: var(--space-2);--base-menu-item-padding-left: var(--space-3);--base-menu-item-padding-right: var(--space-3);--base-menu-item-height: var(--space-6);border-radius:var(--radius-4)}.rt-BaseMenuContent:where(.rt-r-size-2) :where(.rt-BaseMenuItem){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:var(--radius-2)}.rt-BaseMenuContent:where(.rt-r-size-2) :where(.rt-BaseMenuLabel){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-BaseMenuContent:where(.rt-r-size-2) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-BaseMenuContent:where(.rt-r-size-2):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-3)}.rt-BaseMenuContent:where(.rt-r-size-2):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: var(--space-5)}@media (min-width: 520px){.rt-BaseMenuContent:where(.xs\:rt-r-size-1){--base-menu-content-padding: var(--space-1);--base-menu-item-padding-left: calc(var(--space-5) / 1.2);--base-menu-item-padding-right: var(--space-2);--base-menu-item-height: var(--space-5);border-radius:var(--radius-3)}.rt-BaseMenuContent:where(.xs\:rt-r-size-1) :where(.rt-BaseMenuItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-BaseMenuContent:where(.xs\:rt-r-size-1) :where(.rt-BaseMenuLabel){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-BaseMenuContent:where(.xs\:rt-r-size-1) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-BaseMenuContent:where(.xs\:rt-r-size-1):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-2)}.rt-BaseMenuContent:where(.xs\:rt-r-size-1):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: calc(var(--space-5) / 1.2)}.rt-BaseMenuContent:where(.xs\:rt-r-size-2){--base-menu-content-padding: var(--space-2);--base-menu-item-padding-left: var(--space-3);--base-menu-item-padding-right: var(--space-3);--base-menu-item-height: var(--space-6);border-radius:var(--radius-4)}.rt-BaseMenuContent:where(.xs\:rt-r-size-2) :where(.rt-BaseMenuItem){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:var(--radius-2)}.rt-BaseMenuContent:where(.xs\:rt-r-size-2) :where(.rt-BaseMenuLabel){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-BaseMenuContent:where(.xs\:rt-r-size-2) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-BaseMenuContent:where(.xs\:rt-r-size-2):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-3)}.rt-BaseMenuContent:where(.xs\:rt-r-size-2):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: var(--space-5)}}@media (min-width: 768px){.rt-BaseMenuContent:where(.sm\:rt-r-size-1){--base-menu-content-padding: var(--space-1);--base-menu-item-padding-left: calc(var(--space-5) / 1.2);--base-menu-item-padding-right: var(--space-2);--base-menu-item-height: var(--space-5);border-radius:var(--radius-3)}.rt-BaseMenuContent:where(.sm\:rt-r-size-1) :where(.rt-BaseMenuItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-BaseMenuContent:where(.sm\:rt-r-size-1) :where(.rt-BaseMenuLabel){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-BaseMenuContent:where(.sm\:rt-r-size-1) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-BaseMenuContent:where(.sm\:rt-r-size-1):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-2)}.rt-BaseMenuContent:where(.sm\:rt-r-size-1):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: calc(var(--space-5) / 1.2)}.rt-BaseMenuContent:where(.sm\:rt-r-size-2){--base-menu-content-padding: var(--space-2);--base-menu-item-padding-left: var(--space-3);--base-menu-item-padding-right: var(--space-3);--base-menu-item-height: var(--space-6);border-radius:var(--radius-4)}.rt-BaseMenuContent:where(.sm\:rt-r-size-2) :where(.rt-BaseMenuItem){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:var(--radius-2)}.rt-BaseMenuContent:where(.sm\:rt-r-size-2) :where(.rt-BaseMenuLabel){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-BaseMenuContent:where(.sm\:rt-r-size-2) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-BaseMenuContent:where(.sm\:rt-r-size-2):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-3)}.rt-BaseMenuContent:where(.sm\:rt-r-size-2):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: var(--space-5)}}@media (min-width: 1024px){.rt-BaseMenuContent:where(.md\:rt-r-size-1){--base-menu-content-padding: var(--space-1);--base-menu-item-padding-left: calc(var(--space-5) / 1.2);--base-menu-item-padding-right: var(--space-2);--base-menu-item-height: var(--space-5);border-radius:var(--radius-3)}.rt-BaseMenuContent:where(.md\:rt-r-size-1) :where(.rt-BaseMenuItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-BaseMenuContent:where(.md\:rt-r-size-1) :where(.rt-BaseMenuLabel){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-BaseMenuContent:where(.md\:rt-r-size-1) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-BaseMenuContent:where(.md\:rt-r-size-1):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-2)}.rt-BaseMenuContent:where(.md\:rt-r-size-1):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: calc(var(--space-5) / 1.2)}.rt-BaseMenuContent:where(.md\:rt-r-size-2){--base-menu-content-padding: var(--space-2);--base-menu-item-padding-left: var(--space-3);--base-menu-item-padding-right: var(--space-3);--base-menu-item-height: var(--space-6);border-radius:var(--radius-4)}.rt-BaseMenuContent:where(.md\:rt-r-size-2) :where(.rt-BaseMenuItem){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:var(--radius-2)}.rt-BaseMenuContent:where(.md\:rt-r-size-2) :where(.rt-BaseMenuLabel){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-BaseMenuContent:where(.md\:rt-r-size-2) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-BaseMenuContent:where(.md\:rt-r-size-2):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-3)}.rt-BaseMenuContent:where(.md\:rt-r-size-2):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: var(--space-5)}}@media (min-width: 1280px){.rt-BaseMenuContent:where(.lg\:rt-r-size-1){--base-menu-content-padding: var(--space-1);--base-menu-item-padding-left: calc(var(--space-5) / 1.2);--base-menu-item-padding-right: var(--space-2);--base-menu-item-height: var(--space-5);border-radius:var(--radius-3)}.rt-BaseMenuContent:where(.lg\:rt-r-size-1) :where(.rt-BaseMenuItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-BaseMenuContent:where(.lg\:rt-r-size-1) :where(.rt-BaseMenuLabel){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-BaseMenuContent:where(.lg\:rt-r-size-1) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-BaseMenuContent:where(.lg\:rt-r-size-1):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-2)}.rt-BaseMenuContent:where(.lg\:rt-r-size-1):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: calc(var(--space-5) / 1.2)}.rt-BaseMenuContent:where(.lg\:rt-r-size-2){--base-menu-content-padding: var(--space-2);--base-menu-item-padding-left: var(--space-3);--base-menu-item-padding-right: var(--space-3);--base-menu-item-height: var(--space-6);border-radius:var(--radius-4)}.rt-BaseMenuContent:where(.lg\:rt-r-size-2) :where(.rt-BaseMenuItem){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:var(--radius-2)}.rt-BaseMenuContent:where(.lg\:rt-r-size-2) :where(.rt-BaseMenuLabel){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-BaseMenuContent:where(.lg\:rt-r-size-2) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-BaseMenuContent:where(.lg\:rt-r-size-2):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-3)}.rt-BaseMenuContent:where(.lg\:rt-r-size-2):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: var(--space-5)}}@media (min-width: 1640px){.rt-BaseMenuContent:where(.xl\:rt-r-size-1){--base-menu-content-padding: var(--space-1);--base-menu-item-padding-left: calc(var(--space-5) / 1.2);--base-menu-item-padding-right: var(--space-2);--base-menu-item-height: var(--space-5);border-radius:var(--radius-3)}.rt-BaseMenuContent:where(.xl\:rt-r-size-1) :where(.rt-BaseMenuItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-BaseMenuContent:where(.xl\:rt-r-size-1) :where(.rt-BaseMenuLabel){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-BaseMenuContent:where(.xl\:rt-r-size-1) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-BaseMenuContent:where(.xl\:rt-r-size-1):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-2)}.rt-BaseMenuContent:where(.xl\:rt-r-size-1):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: calc(var(--space-5) / 1.2)}.rt-BaseMenuContent:where(.xl\:rt-r-size-2){--base-menu-content-padding: var(--space-2);--base-menu-item-padding-left: var(--space-3);--base-menu-item-padding-right: var(--space-3);--base-menu-item-height: var(--space-6);border-radius:var(--radius-4)}.rt-BaseMenuContent:where(.xl\:rt-r-size-2) :where(.rt-BaseMenuItem){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:var(--radius-2)}.rt-BaseMenuContent:where(.xl\:rt-r-size-2) :where(.rt-BaseMenuLabel){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-BaseMenuContent:where(.xl\:rt-r-size-2) :where(.rt-BaseMenuItemIndicatorIcon,.rt-BaseMenuSubTriggerIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-BaseMenuContent:where(.xl\:rt-r-size-2):where(:not(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem))){--base-menu-item-padding-left: var(--space-3)}.rt-BaseMenuContent:where(.xl\:rt-r-size-2):where(:has(.rt-BaseMenuCheckboxItem,.rt-BaseMenuRadioItem)){--base-menu-item-padding-left: var(--space-5)}}.rt-BaseMenuItem:where([data-accent-color]){color:var(--accent-a11)}.rt-BaseMenuItem:where([data-disabled]){color:var(--gray-a8);cursor:default}.rt-BaseMenuItem:where([data-disabled],[data-highlighted]) :where(.rt-BaseMenuShortcut),.rt-BaseMenuSubTrigger:where([data-state=open]) :where(.rt-BaseMenuShortcut){color:inherit}.rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-BaseMenuSubTrigger[data-state=open]){background-color:var(--gray-a3)}.rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-BaseMenuItem[data-highlighted]){background-color:var(--accent-9);color:var(--accent-contrast)}.rt-BaseMenuContent:where(.rt-variant-solid) :where(.rt-BaseMenuItem[data-highlighted]) :where(.rt-BaseMenuSubTriggerIcon){color:var(--accent-contrast)}.rt-BaseMenuContent:where(.rt-variant-solid):where(.rt-high-contrast) :where(.rt-BaseMenuItem[data-highlighted]){background-color:var(--accent-12);color:var(--accent-1)}.rt-BaseMenuContent:where(.rt-variant-solid):where(.rt-high-contrast) :where(.rt-BaseMenuItem[data-highlighted]) :where(.rt-BaseMenuSubTriggerIcon){color:var(--accent-1)}.rt-BaseMenuContent:where(.rt-variant-solid):where(.rt-high-contrast) :where(.rt-BaseMenuItem[data-highlighted]):where([data-accent-color]){background-color:var(--accent-9);color:var(--accent-contrast)}.rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-BaseMenuSubTrigger[data-state=open]){background-color:var(--accent-a3)}.rt-BaseMenuContent:where(.rt-variant-soft) :where(.rt-BaseMenuItem[data-highlighted]){background-color:var(--accent-a4)}.rt-ContextMenuContent{max-height:var(--radix-context-menu-content-available-height);transform-origin:var(--radix-context-menu-content-transform-origin)}.rt-DataListRoot{overflow-wrap:anywhere;font-family:var(--default-font-family);font-weight:var(--font-weight-normal);font-style:normal;text-align:start;--data-list-leading-trim-start: calc(var(--default-leading-trim-start) - var(--line-height) / 2);--data-list-leading-trim-end: calc(var(--default-leading-trim-end) - var(--line-height) / 2)}.rt-DataListLabel{display:flex;color:var(--gray-a11)}.rt-DataListLabel:where(.rt-high-contrast){color:var(--gray-12)}.rt-DataListLabel:where([data-accent-color]){color:var(--accent-a11)}.rt-DataListLabel:where([data-accent-color]):where(.rt-high-contrast){color:var(--accent-12)}.rt-DataListValue{display:flex;margin:0;min-width:0px;margin-top:var(--data-list-value-margin-top);margin-bottom:var(--data-list-value-margin-bottom)}.rt-DataListItem{--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}:where(.rt-DataListItem:first-child) .rt-DataListValue{margin-top:var(--data-list-first-item-value-margin-top)}:where(.rt-DataListItem:last-child) .rt-DataListValue{margin-bottom:var(--data-list-last-item-value-margin-bottom)}.rt-DataListRoot:where(.rt-r-size-1){gap:var(--space-3)}.rt-DataListRoot:where(.rt-r-size-2){gap:var(--space-4)}.rt-DataListRoot:where(.rt-r-size-3){gap:calc(var(--space-4) * 1.25)}@media (min-width: 520px){.rt-DataListRoot:where(.xs\:rt-r-size-1){gap:var(--space-3)}.rt-DataListRoot:where(.xs\:rt-r-size-2){gap:var(--space-4)}.rt-DataListRoot:where(.xs\:rt-r-size-3){gap:calc(var(--space-4) * 1.25)}}@media (min-width: 768px){.rt-DataListRoot:where(.sm\:rt-r-size-1){gap:var(--space-3)}.rt-DataListRoot:where(.sm\:rt-r-size-2){gap:var(--space-4)}.rt-DataListRoot:where(.sm\:rt-r-size-3){gap:calc(var(--space-4) * 1.25)}}@media (min-width: 1024px){.rt-DataListRoot:where(.md\:rt-r-size-1){gap:var(--space-3)}.rt-DataListRoot:where(.md\:rt-r-size-2){gap:var(--space-4)}.rt-DataListRoot:where(.md\:rt-r-size-3){gap:calc(var(--space-4) * 1.25)}}@media (min-width: 1280px){.rt-DataListRoot:where(.lg\:rt-r-size-1){gap:var(--space-3)}.rt-DataListRoot:where(.lg\:rt-r-size-2){gap:var(--space-4)}.rt-DataListRoot:where(.lg\:rt-r-size-3){gap:calc(var(--space-4) * 1.25)}}@media (min-width: 1640px){.rt-DataListRoot:where(.xl\:rt-r-size-1){gap:var(--space-3)}.rt-DataListRoot:where(.xl\:rt-r-size-2){gap:var(--space-4)}.rt-DataListRoot:where(.xl\:rt-r-size-3){gap:calc(var(--space-4) * 1.25)}}.rt-DataListRoot:where(.rt-r-orientation-vertical){display:flex;flex-direction:column}.rt-DataListRoot:where(.rt-r-orientation-vertical) :where(.rt-DataListItem){--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;display:flex;flex-direction:column;gap:var(--space-1)}.rt-DataListRoot:where(.rt-r-orientation-vertical) :where(.rt-DataListLabel){min-width:0px}.rt-DataListRoot:where(.rt-r-orientation-horizontal){display:grid;grid-template-columns:auto 1fr}.rt-DataListRoot:where(.rt-r-orientation-horizontal) :where(.rt-DataListItem){--data-list-value-margin-top: var(--data-list-value-trim-start);--data-list-value-margin-bottom: var(--data-list-value-trim-end);--data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);--data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);display:grid;grid-template-columns:inherit;grid-template-columns:subgrid;gap:inherit;grid-column:span 2;align-items:baseline}.rt-DataListRoot:where(.rt-r-orientation-horizontal) :where(.rt-DataListLabel){min-width:120px}@media (min-width: 520px){.rt-DataListRoot:where(.xs\:rt-r-orientation-vertical){display:flex;flex-direction:column}.rt-DataListRoot:where(.xs\:rt-r-orientation-vertical) :where(.rt-DataListItem){--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;display:flex;flex-direction:column;gap:var(--space-1)}.rt-DataListRoot:where(.xs\:rt-r-orientation-vertical) :where(.rt-DataListLabel){min-width:0px}.rt-DataListRoot:where(.xs\:rt-r-orientation-horizontal){display:grid;grid-template-columns:auto 1fr}.rt-DataListRoot:where(.xs\:rt-r-orientation-horizontal) :where(.rt-DataListItem){--data-list-value-margin-top: var(--data-list-value-trim-start);--data-list-value-margin-bottom: var(--data-list-value-trim-end);--data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);--data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);display:grid;grid-template-columns:inherit;grid-template-columns:subgrid;gap:inherit;grid-column:span 2;align-items:baseline}.rt-DataListRoot:where(.xs\:rt-r-orientation-horizontal) :where(.rt-DataListLabel){min-width:120px}}@media (min-width: 768px){.rt-DataListRoot:where(.sm\:rt-r-orientation-vertical){display:flex;flex-direction:column}.rt-DataListRoot:where(.sm\:rt-r-orientation-vertical) :where(.rt-DataListItem){--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;display:flex;flex-direction:column;gap:var(--space-1)}.rt-DataListRoot:where(.sm\:rt-r-orientation-vertical) :where(.rt-DataListLabel){min-width:0px}.rt-DataListRoot:where(.sm\:rt-r-orientation-horizontal){display:grid;grid-template-columns:auto 1fr}.rt-DataListRoot:where(.sm\:rt-r-orientation-horizontal) :where(.rt-DataListItem){--data-list-value-margin-top: var(--data-list-value-trim-start);--data-list-value-margin-bottom: var(--data-list-value-trim-end);--data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);--data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);display:grid;grid-template-columns:inherit;grid-template-columns:subgrid;gap:inherit;grid-column:span 2;align-items:baseline}.rt-DataListRoot:where(.sm\:rt-r-orientation-horizontal) :where(.rt-DataListLabel){min-width:120px}}@media (min-width: 1024px){.rt-DataListRoot:where(.md\:rt-r-orientation-vertical){display:flex;flex-direction:column}.rt-DataListRoot:where(.md\:rt-r-orientation-vertical) :where(.rt-DataListItem){--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;display:flex;flex-direction:column;gap:var(--space-1)}.rt-DataListRoot:where(.md\:rt-r-orientation-vertical) :where(.rt-DataListLabel){min-width:0px}.rt-DataListRoot:where(.md\:rt-r-orientation-horizontal){display:grid;grid-template-columns:auto 1fr}.rt-DataListRoot:where(.md\:rt-r-orientation-horizontal) :where(.rt-DataListItem){--data-list-value-margin-top: var(--data-list-value-trim-start);--data-list-value-margin-bottom: var(--data-list-value-trim-end);--data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);--data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);display:grid;grid-template-columns:inherit;grid-template-columns:subgrid;gap:inherit;grid-column:span 2;align-items:baseline}.rt-DataListRoot:where(.md\:rt-r-orientation-horizontal) :where(.rt-DataListLabel){min-width:120px}}@media (min-width: 1280px){.rt-DataListRoot:where(.lg\:rt-r-orientation-vertical){display:flex;flex-direction:column}.rt-DataListRoot:where(.lg\:rt-r-orientation-vertical) :where(.rt-DataListItem){--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;display:flex;flex-direction:column;gap:var(--space-1)}.rt-DataListRoot:where(.lg\:rt-r-orientation-vertical) :where(.rt-DataListLabel){min-width:0px}.rt-DataListRoot:where(.lg\:rt-r-orientation-horizontal){display:grid;grid-template-columns:auto 1fr}.rt-DataListRoot:where(.lg\:rt-r-orientation-horizontal) :where(.rt-DataListItem){--data-list-value-margin-top: var(--data-list-value-trim-start);--data-list-value-margin-bottom: var(--data-list-value-trim-end);--data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);--data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);display:grid;grid-template-columns:inherit;grid-template-columns:subgrid;gap:inherit;grid-column:span 2;align-items:baseline}.rt-DataListRoot:where(.lg\:rt-r-orientation-horizontal) :where(.rt-DataListLabel){min-width:120px}}@media (min-width: 1640px){.rt-DataListRoot:where(.xl\:rt-r-orientation-vertical){display:flex;flex-direction:column}.rt-DataListRoot:where(.xl\:rt-r-orientation-vertical) :where(.rt-DataListItem){--data-list-value-margin-top: 0px;--data-list-value-margin-bottom: 0px;--data-list-first-item-value-margin-top: 0px;--data-list-last-item-value-margin-bottom: 0px;display:flex;flex-direction:column;gap:var(--space-1)}.rt-DataListRoot:where(.xl\:rt-r-orientation-vertical) :where(.rt-DataListLabel){min-width:0px}.rt-DataListRoot:where(.xl\:rt-r-orientation-horizontal){display:grid;grid-template-columns:auto 1fr}.rt-DataListRoot:where(.xl\:rt-r-orientation-horizontal) :where(.rt-DataListItem){--data-list-value-margin-top: var(--data-list-value-trim-start);--data-list-value-margin-bottom: var(--data-list-value-trim-end);--data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);--data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);display:grid;grid-template-columns:inherit;grid-template-columns:subgrid;gap:inherit;grid-column:span 2;align-items:baseline}.rt-DataListRoot:where(.xl\:rt-r-orientation-horizontal) :where(.rt-DataListLabel){min-width:120px}}.rt-DataListLabel:before,.rt-DataListValue:before{content:"‍"}.rt-DataListItem:where(.rt-r-ai-baseline){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.rt-r-ai-start){--data-list-value-trim-start: 0px;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.rt-r-ai-center){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: -.25em;--data-list-last-item-value-trim-end: -.25em}.rt-DataListItem:where(.rt-r-ai-end){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.rt-r-ai-stretch){--data-list-value-trim-start: 0px;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}@media (min-width: 520px){.rt-DataListItem:where(.xs\:rt-r-ai-baseline){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.xs\:rt-r-ai-start){--data-list-value-trim-start: 0px;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.xs\:rt-r-ai-center){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: -.25em;--data-list-last-item-value-trim-end: -.25em}.rt-DataListItem:where(.xs\:rt-r-ai-end){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.xs\:rt-r-ai-stretch){--data-list-value-trim-start: 0px;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}}@media (min-width: 768px){.rt-DataListItem:where(.sm\:rt-r-ai-baseline){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.sm\:rt-r-ai-start){--data-list-value-trim-start: 0px;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.sm\:rt-r-ai-center){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: -.25em;--data-list-last-item-value-trim-end: -.25em}.rt-DataListItem:where(.sm\:rt-r-ai-end){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.sm\:rt-r-ai-stretch){--data-list-value-trim-start: 0px;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}}@media (min-width: 1024px){.rt-DataListItem:where(.md\:rt-r-ai-baseline){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.md\:rt-r-ai-start){--data-list-value-trim-start: 0px;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.md\:rt-r-ai-center){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: -.25em;--data-list-last-item-value-trim-end: -.25em}.rt-DataListItem:where(.md\:rt-r-ai-end){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.md\:rt-r-ai-stretch){--data-list-value-trim-start: 0px;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}}@media (min-width: 1280px){.rt-DataListItem:where(.lg\:rt-r-ai-baseline){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.lg\:rt-r-ai-start){--data-list-value-trim-start: 0px;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.lg\:rt-r-ai-center){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: -.25em;--data-list-last-item-value-trim-end: -.25em}.rt-DataListItem:where(.lg\:rt-r-ai-end){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.lg\:rt-r-ai-stretch){--data-list-value-trim-start: 0px;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}}@media (min-width: 1640px){.rt-DataListItem:where(.xl\:rt-r-ai-baseline){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.xl\:rt-r-ai-start){--data-list-value-trim-start: 0px;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.xl\:rt-r-ai-center){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: -.25em;--data-list-first-item-value-trim-start: -.25em;--data-list-last-item-value-trim-end: -.25em}.rt-DataListItem:where(.xl\:rt-r-ai-end){--data-list-value-trim-start: -.25em;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}.rt-DataListItem:where(.xl\:rt-r-ai-stretch){--data-list-value-trim-start: 0px;--data-list-value-trim-end: 0px;--data-list-first-item-value-trim-start: 0px;--data-list-last-item-value-trim-end: 0px}}.rt-DataListItem:where(:first-child){margin-top:var(--leading-trim-start)}.rt-DataListItem:where(:last-child){margin-bottom:var(--leading-trim-end)}.rt-DataListRoot:where(.rt-r-trim-normal){--leading-trim-start: initial;--leading-trim-end: initial}.rt-DataListRoot:where(.rt-r-trim-start){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: initial}.rt-DataListRoot:where(.rt-r-trim-end){--leading-trim-start: initial;--leading-trim-end: var(--data-list-leading-trim-end)}.rt-DataListRoot:where(.rt-r-trim-both){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: var(--data-list-leading-trim-end)}@media (min-width: 520px){.rt-DataListRoot:where(.xs\:rt-r-trim-normal){--leading-trim-start: initial;--leading-trim-end: initial}.rt-DataListRoot:where(.xs\:rt-r-trim-start){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: initial}.rt-DataListRoot:where(.xs\:rt-r-trim-end){--leading-trim-start: initial;--leading-trim-end: var(--data-list-leading-trim-end)}.rt-DataListRoot:where(.xs\:rt-r-trim-both){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: var(--data-list-leading-trim-end)}}@media (min-width: 768px){.rt-DataListRoot:where(.sm\:rt-r-trim-normal){--leading-trim-start: initial;--leading-trim-end: initial}.rt-DataListRoot:where(.sm\:rt-r-trim-start){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: initial}.rt-DataListRoot:where(.sm\:rt-r-trim-end){--leading-trim-start: initial;--leading-trim-end: var(--data-list-leading-trim-end)}.rt-DataListRoot:where(.sm\:rt-r-trim-both){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: var(--data-list-leading-trim-end)}}@media (min-width: 1024px){.rt-DataListRoot:where(.md\:rt-r-trim-normal){--leading-trim-start: initial;--leading-trim-end: initial}.rt-DataListRoot:where(.md\:rt-r-trim-start){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: initial}.rt-DataListRoot:where(.md\:rt-r-trim-end){--leading-trim-start: initial;--leading-trim-end: var(--data-list-leading-trim-end)}.rt-DataListRoot:where(.md\:rt-r-trim-both){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: var(--data-list-leading-trim-end)}}@media (min-width: 1280px){.rt-DataListRoot:where(.lg\:rt-r-trim-normal){--leading-trim-start: initial;--leading-trim-end: initial}.rt-DataListRoot:where(.lg\:rt-r-trim-start){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: initial}.rt-DataListRoot:where(.lg\:rt-r-trim-end){--leading-trim-start: initial;--leading-trim-end: var(--data-list-leading-trim-end)}.rt-DataListRoot:where(.lg\:rt-r-trim-both){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: var(--data-list-leading-trim-end)}}@media (min-width: 1640px){.rt-DataListRoot:where(.xl\:rt-r-trim-normal){--leading-trim-start: initial;--leading-trim-end: initial}.rt-DataListRoot:where(.xl\:rt-r-trim-start){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: initial}.rt-DataListRoot:where(.xl\:rt-r-trim-end){--leading-trim-start: initial;--leading-trim-end: var(--data-list-leading-trim-end)}.rt-DataListRoot:where(.xl\:rt-r-trim-both){--leading-trim-start: var(--data-list-leading-trim-start);--leading-trim-end: var(--data-list-leading-trim-end)}}.rt-DropdownMenuContent{max-height:var(--radix-dropdown-menu-content-available-height);transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.rt-Em{box-sizing:border-box;font-family:var(--em-font-family);font-size:calc(var(--em-font-size-adjust) * 1em);font-style:var(--em-font-style);font-weight:var(--em-font-weight);line-height:1.25;letter-spacing:calc(var(--em-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));color:inherit}.rt-Em :where(.rt-Em){font-size:inherit}.rt-Heading{--leading-trim-start: var(--heading-leading-trim-start);--leading-trim-end: var(--heading-leading-trim-end);font-family:var(--heading-font-family);font-style:var(--heading-font-style);font-weight:var(--font-weight-bold);line-height:var(--line-height)}:where(.rt-Heading){margin:0}.rt-Heading:where([data-accent-color]){color:var(--accent-a11)}.rt-Heading:where([data-accent-color].rt-high-contrast),:where([data-accent-color]:not(.radix-themes)) .rt-Heading:where(.rt-high-contrast){color:var(--accent-12)}.rt-Heading:where(.rt-r-size-1){font-size:calc(var(--font-size-1) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-1);letter-spacing:calc(var(--letter-spacing-1) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-2){font-size:calc(var(--font-size-2) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-2);letter-spacing:calc(var(--letter-spacing-2) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-3){font-size:calc(var(--font-size-3) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-3);letter-spacing:calc(var(--letter-spacing-3) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-4){font-size:calc(var(--font-size-4) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-4);letter-spacing:calc(var(--letter-spacing-4) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-5){font-size:calc(var(--font-size-5) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-5);letter-spacing:calc(var(--letter-spacing-5) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-6){font-size:calc(var(--font-size-6) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-6);letter-spacing:calc(var(--letter-spacing-6) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-7){font-size:calc(var(--font-size-7) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-7);letter-spacing:calc(var(--letter-spacing-7) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-8){font-size:calc(var(--font-size-8) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-8);letter-spacing:calc(var(--letter-spacing-8) + var(--heading-letter-spacing))}.rt-Heading:where(.rt-r-size-9){font-size:calc(var(--font-size-9) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-9);letter-spacing:calc(var(--letter-spacing-9) + var(--heading-letter-spacing))}@media (min-width: 520px){.rt-Heading:where(.xs\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-1);letter-spacing:calc(var(--letter-spacing-1) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-2);letter-spacing:calc(var(--letter-spacing-2) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-3);letter-spacing:calc(var(--letter-spacing-3) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-4);letter-spacing:calc(var(--letter-spacing-4) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-5);letter-spacing:calc(var(--letter-spacing-5) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-6);letter-spacing:calc(var(--letter-spacing-6) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-7);letter-spacing:calc(var(--letter-spacing-7) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-8);letter-spacing:calc(var(--letter-spacing-8) + var(--heading-letter-spacing))}.rt-Heading:where(.xs\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-9);letter-spacing:calc(var(--letter-spacing-9) + var(--heading-letter-spacing))}}@media (min-width: 768px){.rt-Heading:where(.sm\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-1);letter-spacing:calc(var(--letter-spacing-1) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-2);letter-spacing:calc(var(--letter-spacing-2) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-3);letter-spacing:calc(var(--letter-spacing-3) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-4);letter-spacing:calc(var(--letter-spacing-4) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-5);letter-spacing:calc(var(--letter-spacing-5) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-6);letter-spacing:calc(var(--letter-spacing-6) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-7);letter-spacing:calc(var(--letter-spacing-7) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-8);letter-spacing:calc(var(--letter-spacing-8) + var(--heading-letter-spacing))}.rt-Heading:where(.sm\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-9);letter-spacing:calc(var(--letter-spacing-9) + var(--heading-letter-spacing))}}@media (min-width: 1024px){.rt-Heading:where(.md\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-1);letter-spacing:calc(var(--letter-spacing-1) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-2);letter-spacing:calc(var(--letter-spacing-2) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-3);letter-spacing:calc(var(--letter-spacing-3) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-4);letter-spacing:calc(var(--letter-spacing-4) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-5);letter-spacing:calc(var(--letter-spacing-5) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-6);letter-spacing:calc(var(--letter-spacing-6) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-7);letter-spacing:calc(var(--letter-spacing-7) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-8);letter-spacing:calc(var(--letter-spacing-8) + var(--heading-letter-spacing))}.rt-Heading:where(.md\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-9);letter-spacing:calc(var(--letter-spacing-9) + var(--heading-letter-spacing))}}@media (min-width: 1280px){.rt-Heading:where(.lg\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-1);letter-spacing:calc(var(--letter-spacing-1) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-2);letter-spacing:calc(var(--letter-spacing-2) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-3);letter-spacing:calc(var(--letter-spacing-3) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-4);letter-spacing:calc(var(--letter-spacing-4) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-5);letter-spacing:calc(var(--letter-spacing-5) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-6);letter-spacing:calc(var(--letter-spacing-6) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-7);letter-spacing:calc(var(--letter-spacing-7) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-8);letter-spacing:calc(var(--letter-spacing-8) + var(--heading-letter-spacing))}.rt-Heading:where(.lg\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-9);letter-spacing:calc(var(--letter-spacing-9) + var(--heading-letter-spacing))}}@media (min-width: 1640px){.rt-Heading:where(.xl\:rt-r-size-1){font-size:calc(var(--font-size-1) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-1);letter-spacing:calc(var(--letter-spacing-1) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-2){font-size:calc(var(--font-size-2) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-2);letter-spacing:calc(var(--letter-spacing-2) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-3){font-size:calc(var(--font-size-3) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-3);letter-spacing:calc(var(--letter-spacing-3) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-4){font-size:calc(var(--font-size-4) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-4);letter-spacing:calc(var(--letter-spacing-4) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-5){font-size:calc(var(--font-size-5) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-5);letter-spacing:calc(var(--letter-spacing-5) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-6){font-size:calc(var(--font-size-6) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-6);letter-spacing:calc(var(--letter-spacing-6) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-7){font-size:calc(var(--font-size-7) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-7);letter-spacing:calc(var(--letter-spacing-7) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-8){font-size:calc(var(--font-size-8) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-8);letter-spacing:calc(var(--letter-spacing-8) + var(--heading-letter-spacing))}.rt-Heading:where(.xl\:rt-r-size-9){font-size:calc(var(--font-size-9) * var(--heading-font-size-adjust));--line-height: var(--heading-line-height-9);letter-spacing:calc(var(--letter-spacing-9) + var(--heading-letter-spacing))}}.rt-HoverCardContent{background-color:var(--color-panel-solid);box-shadow:var(--shadow-4);overflow:auto;position:relative;--inset-padding-top: var(--hover-card-content-padding);--inset-padding-right: var(--hover-card-content-padding);--inset-padding-bottom: var(--hover-card-content-padding);--inset-padding-left: var(--hover-card-content-padding);padding:var(--hover-card-content-padding);box-sizing:border-box;transform-origin:var(--radix-hover-card-content-transform-origin)}.rt-HoverCardContent:where(.rt-r-size-1){--hover-card-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.rt-r-size-2){--hover-card-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.rt-r-size-3){--hover-card-content-padding: var(--space-5);border-radius:var(--radius-5)}@media (min-width: 520px){.rt-HoverCardContent:where(.xs\:rt-r-size-1){--hover-card-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.xs\:rt-r-size-2){--hover-card-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.xs\:rt-r-size-3){--hover-card-content-padding: var(--space-5);border-radius:var(--radius-5)}}@media (min-width: 768px){.rt-HoverCardContent:where(.sm\:rt-r-size-1){--hover-card-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.sm\:rt-r-size-2){--hover-card-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.sm\:rt-r-size-3){--hover-card-content-padding: var(--space-5);border-radius:var(--radius-5)}}@media (min-width: 1024px){.rt-HoverCardContent:where(.md\:rt-r-size-1){--hover-card-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.md\:rt-r-size-2){--hover-card-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.md\:rt-r-size-3){--hover-card-content-padding: var(--space-5);border-radius:var(--radius-5)}}@media (min-width: 1280px){.rt-HoverCardContent:where(.lg\:rt-r-size-1){--hover-card-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.lg\:rt-r-size-2){--hover-card-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.lg\:rt-r-size-3){--hover-card-content-padding: var(--space-5);border-radius:var(--radius-5)}}@media (min-width: 1640px){.rt-HoverCardContent:where(.xl\:rt-r-size-1){--hover-card-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.xl\:rt-r-size-2){--hover-card-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-HoverCardContent:where(.xl\:rt-r-size-3){--hover-card-content-padding: var(--space-5);border-radius:var(--radius-5)}}.rt-IconButton:where(:not(.rt-variant-ghost)){height:var(--base-button-height);width:var(--base-button-height)}.rt-IconButton:where(.rt-variant-ghost){padding:var(--icon-button-ghost-padding);--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px;--margin-top-override: calc(var(--margin-top) - var(--icon-button-ghost-padding));--margin-right-override: calc(var(--margin-right) - var(--icon-button-ghost-padding));--margin-bottom-override: calc(var(--margin-bottom) - var(--icon-button-ghost-padding));--margin-left-override: calc(var(--margin-left) - var(--icon-button-ghost-padding));margin:var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override) var(--margin-left-override)}:where(.rt-IconButton:where(.rt-variant-ghost))>*{--margin-top-override: initial;--margin-right-override: initial;--margin-bottom-override: initial;--margin-left-override: initial}.rt-IconButton:where(.rt-variant-ghost):where(.rt-r-size-1){--icon-button-ghost-padding: var(--space-1)}.rt-IconButton:where(.rt-variant-ghost):where(.rt-r-size-2){--icon-button-ghost-padding: calc(var(--space-1) * 1.5)}.rt-IconButton:where(.rt-variant-ghost):where(.rt-r-size-3){--icon-button-ghost-padding: var(--space-2)}.rt-IconButton:where(.rt-variant-ghost):where(.rt-r-size-4){--icon-button-ghost-padding: var(--space-3)}@media (min-width: 520px){.rt-IconButton:where(.rt-variant-ghost):where(.xs\:rt-r-size-1){--icon-button-ghost-padding: var(--space-1)}.rt-IconButton:where(.rt-variant-ghost):where(.xs\:rt-r-size-2){--icon-button-ghost-padding: calc(var(--space-1) * 1.5)}.rt-IconButton:where(.rt-variant-ghost):where(.xs\:rt-r-size-3){--icon-button-ghost-padding: var(--space-2)}.rt-IconButton:where(.rt-variant-ghost):where(.xs\:rt-r-size-4){--icon-button-ghost-padding: var(--space-3)}}@media (min-width: 768px){.rt-IconButton:where(.rt-variant-ghost):where(.sm\:rt-r-size-1){--icon-button-ghost-padding: var(--space-1)}.rt-IconButton:where(.rt-variant-ghost):where(.sm\:rt-r-size-2){--icon-button-ghost-padding: calc(var(--space-1) * 1.5)}.rt-IconButton:where(.rt-variant-ghost):where(.sm\:rt-r-size-3){--icon-button-ghost-padding: var(--space-2)}.rt-IconButton:where(.rt-variant-ghost):where(.sm\:rt-r-size-4){--icon-button-ghost-padding: var(--space-3)}}@media (min-width: 1024px){.rt-IconButton:where(.rt-variant-ghost):where(.md\:rt-r-size-1){--icon-button-ghost-padding: var(--space-1)}.rt-IconButton:where(.rt-variant-ghost):where(.md\:rt-r-size-2){--icon-button-ghost-padding: calc(var(--space-1) * 1.5)}.rt-IconButton:where(.rt-variant-ghost):where(.md\:rt-r-size-3){--icon-button-ghost-padding: var(--space-2)}.rt-IconButton:where(.rt-variant-ghost):where(.md\:rt-r-size-4){--icon-button-ghost-padding: var(--space-3)}}@media (min-width: 1280px){.rt-IconButton:where(.rt-variant-ghost):where(.lg\:rt-r-size-1){--icon-button-ghost-padding: var(--space-1)}.rt-IconButton:where(.rt-variant-ghost):where(.lg\:rt-r-size-2){--icon-button-ghost-padding: calc(var(--space-1) * 1.5)}.rt-IconButton:where(.rt-variant-ghost):where(.lg\:rt-r-size-3){--icon-button-ghost-padding: var(--space-2)}.rt-IconButton:where(.rt-variant-ghost):where(.lg\:rt-r-size-4){--icon-button-ghost-padding: var(--space-3)}}@media (min-width: 1640px){.rt-IconButton:where(.rt-variant-ghost):where(.xl\:rt-r-size-1){--icon-button-ghost-padding: var(--space-1)}.rt-IconButton:where(.rt-variant-ghost):where(.xl\:rt-r-size-2){--icon-button-ghost-padding: calc(var(--space-1) * 1.5)}.rt-IconButton:where(.rt-variant-ghost):where(.xl\:rt-r-size-3){--icon-button-ghost-padding: var(--space-2)}.rt-IconButton:where(.rt-variant-ghost):where(.xl\:rt-r-size-4){--icon-button-ghost-padding: var(--space-3)}}.rt-Inset{box-sizing:border-box;--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px;overflow:hidden;margin-top:var(--margin-top-override);margin-right:var(--margin-right-override);margin-bottom:var(--margin-bottom-override);margin-left:var(--margin-left-override)}:where(.rt-Inset)>*{--margin-top-override: initial;--margin-right-override: initial;--margin-bottom-override: initial;--margin-left-override: initial}.rt-Inset:where(.rt-r-clip-border-box){--inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));--inset-padding-top-calc: var(--inset-padding-top, 0px);--inset-padding-right-calc: var(--inset-padding-right, 0px);--inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);--inset-padding-left-calc: var(--inset-padding-left, 0px)}.rt-Inset:where(.rt-r-clip-padding-box){--inset-border-radius-calc: var(--inset-border-radius, 0px);--inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));--inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));--inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));--inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px))}.rt-Inset:where(.rt-r-side-top){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:0}.rt-Inset:where(.rt-r-side-bottom){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.rt-r-side-left){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));--margin-right-override: var(--margin-right);border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:0}.rt-Inset:where(.rt-r-side-right){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-top-left-radius:0;border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.rt-r-side-x){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:0}.rt-Inset:where(.rt-r-side-y){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: var(--margin-right);--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-radius:0}.rt-Inset:where(.rt-r-side-all){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:var(--inset-border-radius-calc)}@media (min-width: 520px){.rt-Inset:where(.xs\:rt-r-clip-border-box){--inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));--inset-padding-top-calc: var(--inset-padding-top, 0px);--inset-padding-right-calc: var(--inset-padding-right, 0px);--inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);--inset-padding-left-calc: var(--inset-padding-left, 0px)}.rt-Inset:where(.xs\:rt-r-clip-padding-box){--inset-border-radius-calc: var(--inset-border-radius, 0px);--inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));--inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));--inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));--inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px))}.rt-Inset:where(.xs\:rt-r-side-top){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:0}.rt-Inset:where(.xs\:rt-r-side-bottom){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.xs\:rt-r-side-left){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));--margin-right-override: var(--margin-right);border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:0}.rt-Inset:where(.xs\:rt-r-side-right){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-top-left-radius:0;border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.xs\:rt-r-side-x){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:0}.rt-Inset:where(.xs\:rt-r-side-y){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: var(--margin-right);--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-radius:0}.rt-Inset:where(.xs\:rt-r-side-all){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:var(--inset-border-radius-calc)}}@media (min-width: 768px){.rt-Inset:where(.sm\:rt-r-clip-border-box){--inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));--inset-padding-top-calc: var(--inset-padding-top, 0px);--inset-padding-right-calc: var(--inset-padding-right, 0px);--inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);--inset-padding-left-calc: var(--inset-padding-left, 0px)}.rt-Inset:where(.sm\:rt-r-clip-padding-box){--inset-border-radius-calc: var(--inset-border-radius, 0px);--inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));--inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));--inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));--inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px))}.rt-Inset:where(.sm\:rt-r-side-top){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:0}.rt-Inset:where(.sm\:rt-r-side-bottom){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.sm\:rt-r-side-left){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));--margin-right-override: var(--margin-right);border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:0}.rt-Inset:where(.sm\:rt-r-side-right){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-top-left-radius:0;border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.sm\:rt-r-side-x){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:0}.rt-Inset:where(.sm\:rt-r-side-y){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: var(--margin-right);--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-radius:0}.rt-Inset:where(.sm\:rt-r-side-all){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:var(--inset-border-radius-calc)}}@media (min-width: 1024px){.rt-Inset:where(.md\:rt-r-clip-border-box){--inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));--inset-padding-top-calc: var(--inset-padding-top, 0px);--inset-padding-right-calc: var(--inset-padding-right, 0px);--inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);--inset-padding-left-calc: var(--inset-padding-left, 0px)}.rt-Inset:where(.md\:rt-r-clip-padding-box){--inset-border-radius-calc: var(--inset-border-radius, 0px);--inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));--inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));--inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));--inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px))}.rt-Inset:where(.md\:rt-r-side-top){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:0}.rt-Inset:where(.md\:rt-r-side-bottom){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.md\:rt-r-side-left){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));--margin-right-override: var(--margin-right);border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:0}.rt-Inset:where(.md\:rt-r-side-right){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-top-left-radius:0;border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.md\:rt-r-side-x){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:0}.rt-Inset:where(.md\:rt-r-side-y){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: var(--margin-right);--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-radius:0}.rt-Inset:where(.md\:rt-r-side-all){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:var(--inset-border-radius-calc)}}@media (min-width: 1280px){.rt-Inset:where(.lg\:rt-r-clip-border-box){--inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));--inset-padding-top-calc: var(--inset-padding-top, 0px);--inset-padding-right-calc: var(--inset-padding-right, 0px);--inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);--inset-padding-left-calc: var(--inset-padding-left, 0px)}.rt-Inset:where(.lg\:rt-r-clip-padding-box){--inset-border-radius-calc: var(--inset-border-radius, 0px);--inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));--inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));--inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));--inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px))}.rt-Inset:where(.lg\:rt-r-side-top){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:0}.rt-Inset:where(.lg\:rt-r-side-bottom){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.lg\:rt-r-side-left){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));--margin-right-override: var(--margin-right);border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:0}.rt-Inset:where(.lg\:rt-r-side-right){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-top-left-radius:0;border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.lg\:rt-r-side-x){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:0}.rt-Inset:where(.lg\:rt-r-side-y){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: var(--margin-right);--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-radius:0}.rt-Inset:where(.lg\:rt-r-side-all){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:var(--inset-border-radius-calc)}}@media (min-width: 1640px){.rt-Inset:where(.xl\:rt-r-clip-border-box){--inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));--inset-padding-top-calc: var(--inset-padding-top, 0px);--inset-padding-right-calc: var(--inset-padding-right, 0px);--inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);--inset-padding-left-calc: var(--inset-padding-left, 0px)}.rt-Inset:where(.xl\:rt-r-clip-padding-box){--inset-border-radius-calc: var(--inset-border-radius, 0px);--inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));--inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));--inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));--inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px))}.rt-Inset:where(.xl\:rt-r-side-top){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:0}.rt-Inset:where(.xl\:rt-r-side-bottom){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.xl\:rt-r-side-left){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));--margin-right-override: var(--margin-right);border-top-left-radius:var(--inset-border-radius-calc);border-top-right-radius:0;border-bottom-left-radius:var(--inset-border-radius-calc);border-bottom-right-radius:0}.rt-Inset:where(.xl\:rt-r-side-right){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-top-left-radius:0;border-top-right-radius:var(--inset-border-radius-calc);border-bottom-left-radius:0;border-bottom-right-radius:var(--inset-border-radius-calc)}.rt-Inset:where(.xl\:rt-r-side-x){--margin-top-override: var(--margin-top);--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: var(--margin-bottom);--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:0}.rt-Inset:where(.xl\:rt-r-side-y){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: var(--margin-right);--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: var(--margin-left);border-radius:0}.rt-Inset:where(.xl\:rt-r-side-all){--margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));--margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));--margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));--margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));border-radius:var(--inset-border-radius-calc)}}.rt-Kbd{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--default-font-family);font-weight:400;vertical-align:text-top;white-space:nowrap;-webkit-user-select:none;user-select:none;position:relative;top:-.03em;font-size:.75em;min-width:1.75em;line-height:1.7em;box-sizing:border-box;padding-left:.5em;padding-right:.5em;padding-bottom:.05em;word-spacing:-.1em;border-radius:calc(var(--radius-factor) * .35em);letter-spacing:var(--letter-spacing, var(--default-letter-spacing));height:-moz-fit-content;height:fit-content;color:var(--gray-12);background-color:var(--gray-1);box-shadow:var(--kbd-box-shadow);transition:box-shadow .12s,background-color .12s}@media (hover: hover){.rt-Kbd:where(:any-link,button):where(:hover){transition-duration:40ms,40ms;background-color:var(--color-background);box-shadow:var(--kbd-box-shadow),0 0 0 .05em var(--gray-a5)}}.rt-Kbd:where(:any-link,button):where([data-state=open]){transition-duration:40ms,40ms;background-color:var(--color-background);box-shadow:var(--kbd-box-shadow),0 0 0 .05em var(--gray-a5)}.rt-Kbd:where(:any-link,button):where(:active:not([data-state=open])){padding-top:.05em;padding-bottom:0;transition-duration:40ms,40ms;background-color:var(--gray-2);box-shadow:inset 0 .05em var(--black-a3),0 0 0 .05em var(--gray-a7)}.rt-Kbd:where(:any-link,button):where(:focus-visible){outline:2px solid var(--focus-8)}.rt-Kbd:where(.rt-r-size-1){font-size:calc(var(--font-size-1) * .8);--letter-spacing: var(--letter-spacing-1)}.rt-Kbd:where(.rt-r-size-2){font-size:calc(var(--font-size-2) * .8);--letter-spacing: var(--letter-spacing-2)}.rt-Kbd:where(.rt-r-size-3){font-size:calc(var(--font-size-3) * .8);--letter-spacing: var(--letter-spacing-3)}.rt-Kbd:where(.rt-r-size-4){font-size:calc(var(--font-size-4) * .8);--letter-spacing: var(--letter-spacing-4)}.rt-Kbd:where(.rt-r-size-5){font-size:calc(var(--font-size-5) * .8);--letter-spacing: var(--letter-spacing-5)}.rt-Kbd:where(.rt-r-size-6){font-size:calc(var(--font-size-6) * .8);--letter-spacing: var(--letter-spacing-6)}.rt-Kbd:where(.rt-r-size-7){font-size:calc(var(--font-size-7) * .8);--letter-spacing: var(--letter-spacing-7)}.rt-Kbd:where(.rt-r-size-8){font-size:calc(var(--font-size-8) * .8);--letter-spacing: var(--letter-spacing-8)}.rt-Kbd:where(.rt-r-size-9){font-size:calc(var(--font-size-9) * .8);--letter-spacing: var(--letter-spacing-9)}@media (min-width: 520px){.rt-Kbd:where(.xs\:rt-r-size-1){font-size:calc(var(--font-size-1) * .8);--letter-spacing: var(--letter-spacing-1)}.rt-Kbd:where(.xs\:rt-r-size-2){font-size:calc(var(--font-size-2) * .8);--letter-spacing: var(--letter-spacing-2)}.rt-Kbd:where(.xs\:rt-r-size-3){font-size:calc(var(--font-size-3) * .8);--letter-spacing: var(--letter-spacing-3)}.rt-Kbd:where(.xs\:rt-r-size-4){font-size:calc(var(--font-size-4) * .8);--letter-spacing: var(--letter-spacing-4)}.rt-Kbd:where(.xs\:rt-r-size-5){font-size:calc(var(--font-size-5) * .8);--letter-spacing: var(--letter-spacing-5)}.rt-Kbd:where(.xs\:rt-r-size-6){font-size:calc(var(--font-size-6) * .8);--letter-spacing: var(--letter-spacing-6)}.rt-Kbd:where(.xs\:rt-r-size-7){font-size:calc(var(--font-size-7) * .8);--letter-spacing: var(--letter-spacing-7)}.rt-Kbd:where(.xs\:rt-r-size-8){font-size:calc(var(--font-size-8) * .8);--letter-spacing: var(--letter-spacing-8)}.rt-Kbd:where(.xs\:rt-r-size-9){font-size:calc(var(--font-size-9) * .8);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 768px){.rt-Kbd:where(.sm\:rt-r-size-1){font-size:calc(var(--font-size-1) * .8);--letter-spacing: var(--letter-spacing-1)}.rt-Kbd:where(.sm\:rt-r-size-2){font-size:calc(var(--font-size-2) * .8);--letter-spacing: var(--letter-spacing-2)}.rt-Kbd:where(.sm\:rt-r-size-3){font-size:calc(var(--font-size-3) * .8);--letter-spacing: var(--letter-spacing-3)}.rt-Kbd:where(.sm\:rt-r-size-4){font-size:calc(var(--font-size-4) * .8);--letter-spacing: var(--letter-spacing-4)}.rt-Kbd:where(.sm\:rt-r-size-5){font-size:calc(var(--font-size-5) * .8);--letter-spacing: var(--letter-spacing-5)}.rt-Kbd:where(.sm\:rt-r-size-6){font-size:calc(var(--font-size-6) * .8);--letter-spacing: var(--letter-spacing-6)}.rt-Kbd:where(.sm\:rt-r-size-7){font-size:calc(var(--font-size-7) * .8);--letter-spacing: var(--letter-spacing-7)}.rt-Kbd:where(.sm\:rt-r-size-8){font-size:calc(var(--font-size-8) * .8);--letter-spacing: var(--letter-spacing-8)}.rt-Kbd:where(.sm\:rt-r-size-9){font-size:calc(var(--font-size-9) * .8);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1024px){.rt-Kbd:where(.md\:rt-r-size-1){font-size:calc(var(--font-size-1) * .8);--letter-spacing: var(--letter-spacing-1)}.rt-Kbd:where(.md\:rt-r-size-2){font-size:calc(var(--font-size-2) * .8);--letter-spacing: var(--letter-spacing-2)}.rt-Kbd:where(.md\:rt-r-size-3){font-size:calc(var(--font-size-3) * .8);--letter-spacing: var(--letter-spacing-3)}.rt-Kbd:where(.md\:rt-r-size-4){font-size:calc(var(--font-size-4) * .8);--letter-spacing: var(--letter-spacing-4)}.rt-Kbd:where(.md\:rt-r-size-5){font-size:calc(var(--font-size-5) * .8);--letter-spacing: var(--letter-spacing-5)}.rt-Kbd:where(.md\:rt-r-size-6){font-size:calc(var(--font-size-6) * .8);--letter-spacing: var(--letter-spacing-6)}.rt-Kbd:where(.md\:rt-r-size-7){font-size:calc(var(--font-size-7) * .8);--letter-spacing: var(--letter-spacing-7)}.rt-Kbd:where(.md\:rt-r-size-8){font-size:calc(var(--font-size-8) * .8);--letter-spacing: var(--letter-spacing-8)}.rt-Kbd:where(.md\:rt-r-size-9){font-size:calc(var(--font-size-9) * .8);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1280px){.rt-Kbd:where(.lg\:rt-r-size-1){font-size:calc(var(--font-size-1) * .8);--letter-spacing: var(--letter-spacing-1)}.rt-Kbd:where(.lg\:rt-r-size-2){font-size:calc(var(--font-size-2) * .8);--letter-spacing: var(--letter-spacing-2)}.rt-Kbd:where(.lg\:rt-r-size-3){font-size:calc(var(--font-size-3) * .8);--letter-spacing: var(--letter-spacing-3)}.rt-Kbd:where(.lg\:rt-r-size-4){font-size:calc(var(--font-size-4) * .8);--letter-spacing: var(--letter-spacing-4)}.rt-Kbd:where(.lg\:rt-r-size-5){font-size:calc(var(--font-size-5) * .8);--letter-spacing: var(--letter-spacing-5)}.rt-Kbd:where(.lg\:rt-r-size-6){font-size:calc(var(--font-size-6) * .8);--letter-spacing: var(--letter-spacing-6)}.rt-Kbd:where(.lg\:rt-r-size-7){font-size:calc(var(--font-size-7) * .8);--letter-spacing: var(--letter-spacing-7)}.rt-Kbd:where(.lg\:rt-r-size-8){font-size:calc(var(--font-size-8) * .8);--letter-spacing: var(--letter-spacing-8)}.rt-Kbd:where(.lg\:rt-r-size-9){font-size:calc(var(--font-size-9) * .8);--letter-spacing: var(--letter-spacing-9)}}@media (min-width: 1640px){.rt-Kbd:where(.xl\:rt-r-size-1){font-size:calc(var(--font-size-1) * .8);--letter-spacing: var(--letter-spacing-1)}.rt-Kbd:where(.xl\:rt-r-size-2){font-size:calc(var(--font-size-2) * .8);--letter-spacing: var(--letter-spacing-2)}.rt-Kbd:where(.xl\:rt-r-size-3){font-size:calc(var(--font-size-3) * .8);--letter-spacing: var(--letter-spacing-3)}.rt-Kbd:where(.xl\:rt-r-size-4){font-size:calc(var(--font-size-4) * .8);--letter-spacing: var(--letter-spacing-4)}.rt-Kbd:where(.xl\:rt-r-size-5){font-size:calc(var(--font-size-5) * .8);--letter-spacing: var(--letter-spacing-5)}.rt-Kbd:where(.xl\:rt-r-size-6){font-size:calc(var(--font-size-6) * .8);--letter-spacing: var(--letter-spacing-6)}.rt-Kbd:where(.xl\:rt-r-size-7){font-size:calc(var(--font-size-7) * .8);--letter-spacing: var(--letter-spacing-7)}.rt-Kbd:where(.xl\:rt-r-size-8){font-size:calc(var(--font-size-8) * .8);--letter-spacing: var(--letter-spacing-8)}.rt-Kbd:where(.xl\:rt-r-size-9){font-size:calc(var(--font-size-9) * .8);--letter-spacing: var(--letter-spacing-9)}}.rt-Link:where(:any-link,button){cursor:var(--cursor-link);text-decoration-line:none;text-decoration-style:solid;text-decoration-thickness:min(2px,max(1px,.05em));text-underline-offset:calc(.025em + 2px);text-decoration-color:var(--accent-a5)}.rt-Link:where(:disabled,[data-disabled]){cursor:var(--cursor-disabled)}:where([data-accent-color]:not(.radix-themes,.rt-high-contrast)) .rt-Link:where([data-accent-color=""]){color:var(--accent-12)}@supports (color: color-mix(in oklab,white,black)){.rt-Link:where(:any-link,button){text-decoration-color:color-mix(in oklab,var(--accent-a5),var(--gray-a6))}}@media (pointer: coarse){.rt-Link:where(:any-link,button):where(:active:not(:focus-visible,[data-state=open])){outline:.75em solid var(--accent-a4);outline-offset:-.6em}}@media (hover: hover){.rt-Link:where(:any-link,button):where(.rt-underline-auto):where(:hover){text-decoration-line:underline}}.rt-Link:where(:any-link,button):where(.rt-underline-auto):where(.rt-high-contrast),:where([data-accent-color]:not(.radix-themes,.rt-high-contrast)) .rt-Link:where(:any-link,button):where(.rt-underline-auto):where([data-accent-color=""]){text-decoration-line:underline;text-decoration-color:var(--accent-a6)}@supports (color: color-mix(in oklab,white,black)){.rt-Link:where(:any-link,button):where(.rt-underline-auto):where(.rt-high-contrast),:where([data-accent-color]:not(.radix-themes,.rt-high-contrast)) .rt-Link:where(:any-link,button):where(.rt-underline-auto):where([data-accent-color=""]){text-decoration-color:color-mix(in oklab,var(--accent-a6),var(--gray-a6))}}@media (hover: hover){.rt-Link:where(:any-link,button):where(.rt-underline-hover):where(:hover){text-decoration-line:underline}}.rt-Link:where(:any-link,button):where(.rt-underline-always){text-decoration-line:underline}.rt-Link:where(:focus-visible){text-decoration-line:none;border-radius:calc(.07em * var(--radius-factor));outline-color:var(--focus-8);outline-width:2px;outline-style:solid;outline-offset:2px}.rt-Link:where(:has(.rt-Code:not(.rt-variant-ghost):only-child)){text-decoration-color:transparent}.rt-PopoverContent{background-color:var(--color-panel-solid);box-shadow:var(--shadow-5);min-width:var(--radix-popover-trigger-width);outline:0;overflow:auto;position:relative;--inset-padding-top: var(--popover-content-padding);--inset-padding-right: var(--popover-content-padding);--inset-padding-bottom: var(--popover-content-padding);--inset-padding-left: var(--popover-content-padding);padding:var(--popover-content-padding);box-sizing:border-box;transform-origin:var(--radix-popover-content-transform-origin)}.rt-PopoverContent:where(.rt-r-size-1){--popover-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-PopoverContent:where(.rt-r-size-2){--popover-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-PopoverContent:where(.rt-r-size-3){--popover-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-PopoverContent:where(.rt-r-size-4){--popover-content-padding: var(--space-6);border-radius:var(--radius-5)}@media (min-width: 520px){.rt-PopoverContent:where(.xs\:rt-r-size-1){--popover-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-PopoverContent:where(.xs\:rt-r-size-2){--popover-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-PopoverContent:where(.xs\:rt-r-size-3){--popover-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-PopoverContent:where(.xs\:rt-r-size-4){--popover-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 768px){.rt-PopoverContent:where(.sm\:rt-r-size-1){--popover-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-PopoverContent:where(.sm\:rt-r-size-2){--popover-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-PopoverContent:where(.sm\:rt-r-size-3){--popover-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-PopoverContent:where(.sm\:rt-r-size-4){--popover-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 1024px){.rt-PopoverContent:where(.md\:rt-r-size-1){--popover-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-PopoverContent:where(.md\:rt-r-size-2){--popover-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-PopoverContent:where(.md\:rt-r-size-3){--popover-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-PopoverContent:where(.md\:rt-r-size-4){--popover-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 1280px){.rt-PopoverContent:where(.lg\:rt-r-size-1){--popover-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-PopoverContent:where(.lg\:rt-r-size-2){--popover-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-PopoverContent:where(.lg\:rt-r-size-3){--popover-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-PopoverContent:where(.lg\:rt-r-size-4){--popover-content-padding: var(--space-6);border-radius:var(--radius-5)}}@media (min-width: 1640px){.rt-PopoverContent:where(.xl\:rt-r-size-1){--popover-content-padding: var(--space-3);border-radius:var(--radius-4)}.rt-PopoverContent:where(.xl\:rt-r-size-2){--popover-content-padding: var(--space-4);border-radius:var(--radius-4)}.rt-PopoverContent:where(.xl\:rt-r-size-3){--popover-content-padding: var(--space-5);border-radius:var(--radius-5)}.rt-PopoverContent:where(.xl\:rt-r-size-4){--popover-content-padding: var(--space-6);border-radius:var(--radius-5)}}.rt-ProgressRoot{--progress-value: 0;--progress-max: 100;--progress-duration: 5s;pointer-events:none;position:relative;overflow:hidden;flex-grow:1;height:var(--progress-height);border-radius:max(calc(var(--radius-factor) * var(--progress-height) / 3),calc(var(--radius-factor) * var(--radius-thumb)))}.rt-ProgressRoot:after{position:absolute;top:0;right:0;bottom:0;left:0;content:"";border-radius:inherit}.rt-ProgressIndicator{display:block;height:100%;width:100%;transform:scaleX(calc(var(--progress-value) / var(--progress-max)));transform-origin:left center;transition:transform .12s}.rt-ProgressIndicator:where([data-state=indeterminate]){animation-name:rt-progress-indicator-indeterminate-grow,var(--progress-indicator-indeterminate-animation-start),var(--progress-indicator-indeterminate-animation-repeat);animation-delay:0s,calc(var(--progress-duration) + 5s),calc(var(--progress-duration) + 7.5s);animation-duration:var(--progress-duration),2.5s,5s;animation-iteration-count:1,1,infinite;animation-fill-mode:both,none,none;animation-direction:normal,normal,alternate}.rt-ProgressIndicator:where([data-state=indeterminate]):after{position:absolute;top:0;right:0;bottom:0;left:0;content:"";width:400%;animation-name:rt-progress-indicator-indeterminate-shine-from-left;animation-delay:calc(var(--progress-duration) + 5s);animation-duration:5s;animation-fill-mode:backwards;animation-iteration-count:infinite;background-image:linear-gradient(to right,transparent 25%,var(--progress-indicator-after-linear-gradient),transparent 75%)}@keyframes rt-progress-indicator-indeterminate-grow{0%{transform:scaleX(.01)}20%{transform:scaleX(.1)}30%{transform:scaleX(.6)}40%,50%{transform:scaleX(.9)}to{transform:scaleX(1)}}@keyframes rt-progress-indicator-indeterminate-shine-from-left{0%{transform:translate(-100%)}to{transform:translate(0)}}.rt-ProgressRoot:where(.rt-r-size-1){--progress-height: var(--space-1)}.rt-ProgressRoot:where(.rt-r-size-2){--progress-height: calc(var(--space-2) * .75)}.rt-ProgressRoot:where(.rt-r-size-3){--progress-height: var(--space-2)}@media (min-width: 520px){.rt-ProgressRoot:where(.xs\:rt-r-size-1){--progress-height: var(--space-1)}.rt-ProgressRoot:where(.xs\:rt-r-size-2){--progress-height: calc(var(--space-2) * .75)}.rt-ProgressRoot:where(.xs\:rt-r-size-3){--progress-height: var(--space-2)}}@media (min-width: 768px){.rt-ProgressRoot:where(.sm\:rt-r-size-1){--progress-height: var(--space-1)}.rt-ProgressRoot:where(.sm\:rt-r-size-2){--progress-height: calc(var(--space-2) * .75)}.rt-ProgressRoot:where(.sm\:rt-r-size-3){--progress-height: var(--space-2)}}@media (min-width: 1024px){.rt-ProgressRoot:where(.md\:rt-r-size-1){--progress-height: var(--space-1)}.rt-ProgressRoot:where(.md\:rt-r-size-2){--progress-height: calc(var(--space-2) * .75)}.rt-ProgressRoot:where(.md\:rt-r-size-3){--progress-height: var(--space-2)}}@media (min-width: 1280px){.rt-ProgressRoot:where(.lg\:rt-r-size-1){--progress-height: var(--space-1)}.rt-ProgressRoot:where(.lg\:rt-r-size-2){--progress-height: calc(var(--space-2) * .75)}.rt-ProgressRoot:where(.lg\:rt-r-size-3){--progress-height: var(--space-2)}}@media (min-width: 1640px){.rt-ProgressRoot:where(.xl\:rt-r-size-1){--progress-height: var(--space-1)}.rt-ProgressRoot:where(.xl\:rt-r-size-2){--progress-height: calc(var(--space-2) * .75)}.rt-ProgressRoot:where(.xl\:rt-r-size-3){--progress-height: var(--space-2)}}.rt-ProgressRoot:where(.rt-variant-surface){--progress-indicator-indeterminate-animation-start: rt-progress-indicator-surface-indeterminate-fade;--progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-surface-indeterminate-pulse;background-color:var(--gray-a3)}.rt-ProgressRoot:where(.rt-variant-surface):after{box-shadow:inset 0 0 0 1px var(--gray-a4)}.rt-ProgressRoot:where(.rt-variant-surface) :where(.rt-ProgressIndicator){background-color:var(--accent-track)}@keyframes rt-progress-indicator-surface-indeterminate-fade{to{background-color:var(--accent-7)}}@keyframes rt-progress-indicator-surface-indeterminate-pulse{0%{background-color:var(--accent-7)}to{background-color:var(--accent-track)}}.rt-ProgressRoot:where(.rt-variant-classic){--progress-indicator-indeterminate-animation-start: rt-progress-indicator-classic-indeterminate-fade;--progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-classic-indeterminate-pulse;background-color:var(--gray-a3)}.rt-ProgressRoot:where(.rt-variant-classic):after{box-shadow:var(--shadow-1)}.rt-ProgressRoot:where(.rt-variant-classic) :where(.rt-ProgressIndicator){background-color:var(--accent-track)}@keyframes rt-progress-indicator-classic-indeterminate-fade{to{background-color:var(--accent-7)}}@keyframes rt-progress-indicator-classic-indeterminate-pulse{0%{background-color:var(--accent-7)}to{background-color:var(--accent-track)}}.rt-ProgressRoot:where(.rt-variant-soft){--progress-indicator-indeterminate-animation-start: rt-progress-indicator-soft-indeterminate-fade;--progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-soft-indeterminate-pulse;background-color:var(--gray-a4);background-image:linear-gradient(var(--white-a1),var(--white-a1))}.rt-ProgressRoot:where(.rt-variant-soft) :where(.rt-ProgressIndicator){background-image:linear-gradient(var(--accent-a5),var(--accent-a5));background-color:var(--accent-8)}.rt-ProgressRoot:where(.rt-variant-soft) :where(.rt-ProgressIndicator):after{opacity:.75}@keyframes rt-progress-indicator-soft-indeterminate-fade{to{background-color:var(--accent-5)}}@keyframes rt-progress-indicator-soft-indeterminate-pulse{0%{background-color:var(--accent-5)}to{background-color:var(--accent-7)}}.rt-ProgressRoot:where(.rt-high-contrast){--progress-indicator-indeterminate-animation-start: rt-progress-indicator-high-contrast-indeterminate-fade;--progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-high-contrast-indeterminate-pulse}.rt-ProgressRoot:where(.rt-high-contrast) :where(.rt-ProgressIndicator){background-color:var(--accent-12)}.rt-ProgressRoot:where(.rt-high-contrast) :where(.rt-ProgressIndicator):after{opacity:.75}@keyframes rt-progress-indicator-high-contrast-indeterminate-fade{to{opacity:.8}}@keyframes rt-progress-indicator-high-contrast-indeterminate-pulse{0%{opacity:.8}to{opacity:1}}.rt-Quote{box-sizing:border-box;font-family:var(--quote-font-family);font-size:calc(var(--quote-font-size-adjust) * 1em);font-style:var(--quote-font-style);font-weight:var(--quote-font-weight);line-height:1.25;letter-spacing:calc(var(--quote-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));color:inherit}.rt-Quote :where(.rt-Quote){font-size:inherit}.rt-RadioCardsRoot{line-height:var(--line-height);letter-spacing:var(--letter-spacing);cursor:default}.rt-RadioCardsItem{--base-card-padding-top: var(--radio-cards-item-padding-y);--base-card-padding-right: var(--radio-cards-item-padding-x);--base-card-padding-bottom: var(--radio-cards-item-padding-y);--base-card-padding-left: var(--radio-cards-item-padding-x);--base-card-border-radius: var(--radio-cards-item-border-radius);--base-card-border-width: var(--radio-cards-item-border-width);display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.rt-RadioCardsItem>*{pointer-events:none}.rt-RadioCardsItem>:where(svg){flex-shrink:0}.rt-RadioCardsItem:after{outline-offset:-1px}.rt-RadioCardsRoot:where(.rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-3);--radio-cards-item-padding-y: calc(var(--space-3) / 1.2);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-4);--radio-cards-item-padding-y: calc(var(--space-4) * .875);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--radio-cards-item-padding-x: var(--space-5);--radio-cards-item-padding-y: calc(var(--space-5) / 1.2);--radio-cards-item-border-radius: var(--radius-4)}@media (min-width: 520px){.rt-RadioCardsRoot:where(.xs\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-3);--radio-cards-item-padding-y: calc(var(--space-3) / 1.2);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.xs\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-4);--radio-cards-item-padding-y: calc(var(--space-4) * .875);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.xs\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--radio-cards-item-padding-x: var(--space-5);--radio-cards-item-padding-y: calc(var(--space-5) / 1.2);--radio-cards-item-border-radius: var(--radius-4)}}@media (min-width: 768px){.rt-RadioCardsRoot:where(.sm\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-3);--radio-cards-item-padding-y: calc(var(--space-3) / 1.2);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.sm\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-4);--radio-cards-item-padding-y: calc(var(--space-4) * .875);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.sm\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--radio-cards-item-padding-x: var(--space-5);--radio-cards-item-padding-y: calc(var(--space-5) / 1.2);--radio-cards-item-border-radius: var(--radius-4)}}@media (min-width: 1024px){.rt-RadioCardsRoot:where(.md\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-3);--radio-cards-item-padding-y: calc(var(--space-3) / 1.2);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.md\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-4);--radio-cards-item-padding-y: calc(var(--space-4) * .875);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.md\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--radio-cards-item-padding-x: var(--space-5);--radio-cards-item-padding-y: calc(var(--space-5) / 1.2);--radio-cards-item-border-radius: var(--radius-4)}}@media (min-width: 1280px){.rt-RadioCardsRoot:where(.lg\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-3);--radio-cards-item-padding-y: calc(var(--space-3) / 1.2);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.lg\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-4);--radio-cards-item-padding-y: calc(var(--space-4) * .875);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.lg\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--radio-cards-item-padding-x: var(--space-5);--radio-cards-item-padding-y: calc(var(--space-5) / 1.2);--radio-cards-item-border-radius: var(--radius-4)}}@media (min-width: 1640px){.rt-RadioCardsRoot:where(.xl\:rt-r-size-1){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-3);--radio-cards-item-padding-y: calc(var(--space-3) / 1.2);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.xl\:rt-r-size-2){font-size:var(--font-size-2);--line-height: var(--line-height-2);--letter-spacing: var(--letter-spacing-2);--radio-cards-item-padding-x: var(--space-4);--radio-cards-item-padding-y: calc(var(--space-4) * .875);--radio-cards-item-border-radius: var(--radius-3)}.rt-RadioCardsRoot:where(.xl\:rt-r-size-3){font-size:var(--font-size-3);--line-height: var(--line-height-3);--letter-spacing: var(--letter-spacing-3);--radio-cards-item-padding-x: var(--space-5);--radio-cards-item-padding-y: calc(var(--space-5) / 1.2);--radio-cards-item-border-radius: var(--radius-4)}}:where(.rt-RadioCardsRoot.rt-variant-surface) .rt-RadioCardsItem{--radio-cards-item-border-width: 1px;--radio-cards-item-background-color: var(--color-surface)}:where(.rt-RadioCardsRoot.rt-variant-surface) .rt-RadioCardsItem:before{background-color:var(--radio-cards-item-background-color)}:where(.rt-RadioCardsRoot.rt-variant-surface) .rt-RadioCardsItem:after{box-shadow:var(--base-card-surface-box-shadow)}@media (hover: hover){:where(.rt-RadioCardsRoot.rt-variant-surface) .rt-RadioCardsItem:where(:not(:disabled):not([data-state=checked]):hover):after{box-shadow:var(--base-card-surface-hover-box-shadow)}}:where(.rt-RadioCardsRoot.rt-variant-classic) .rt-RadioCardsItem{--radio-cards-item-border-width: 1px;--radio-cards-item-background-color: var(--color-surface);transition:box-shadow .12s;box-shadow:var(--base-card-classic-box-shadow-outer)}:where(.rt-RadioCardsRoot.rt-variant-classic) .rt-RadioCardsItem:before{background-color:var(--radio-cards-item-background-color)}:where(.rt-RadioCardsRoot.rt-variant-classic) .rt-RadioCardsItem:after{box-shadow:var(--base-card-classic-box-shadow-inner)}@media (hover: hover){:where(.rt-RadioCardsRoot.rt-variant-classic) .rt-RadioCardsItem:where(:not(:disabled):not([data-state=checked]):hover){transition-duration:40ms;box-shadow:var(--base-card-classic-hover-box-shadow-outer)}:where(.rt-RadioCardsRoot.rt-variant-classic) .rt-RadioCardsItem:where(:not(:disabled):not([data-state=checked]):hover):after{box-shadow:var(--base-card-classic-hover-box-shadow-inner)}}.rt-RadioCardsItem:where([data-state=checked]):after{outline:2px solid var(--accent-indicator)}:where(.rt-RadioCardsRoot.rt-high-contrast) .rt-RadioCardsItem:where([data-state=checked]):after{outline-color:var(--accent-12)}.rt-RadioCardsItem:where(:focus-visible):after{outline:2px solid var(--focus-8)}.rt-RadioCardsItem:where(:focus-visible):where([data-state=checked]):before{background-image:linear-gradient(var(--focus-a3),var(--focus-a3))}.rt-RadioCardsItem:where(:focus-visible):where([data-state=checked]):after{outline-color:var(--focus-10)}.rt-RadioCardsItem:where(:disabled){cursor:var(--cursor-disabled);color:var(--gray-a9)}.rt-RadioCardsItem:where(:disabled)::selection{background-color:var(--gray-a5)}.rt-RadioCardsItem:where(:disabled):before{background-image:linear-gradient(var(--gray-a2),var(--gray-a2))}.rt-RadioCardsItem:where(:disabled):after{outline-color:var(--gray-8)}.rt-RadioGroupRoot{display:flex;flex-direction:column;gap:var(--space-1)}.rt-RadioGroupItem{display:flex;gap:.5em;width:-moz-fit-content;width:fit-content}.rt-RadioGroupItemInner{min-width:0}.rt-BaseRadioRoot{position:relative;display:inline-flex;align-items:center;justify-content:center;vertical-align:top;flex-shrink:0;cursor:var(--cursor-radio);height:var(--skeleton-height, var(--line-height, var(--radio-size)));--skeleton-height-override: var(--radio-size);border-radius:var(--skeleton-radius);--skeleton-radius-override: 100%}.rt-BaseRadioRoot:where(:disabled,[data-disabled]){cursor:var(--cursor-disabled)}.rt-BaseRadioRoot:before{content:"";display:block;height:var(--radio-size);width:var(--radio-size);border-radius:100%}.rt-BaseRadioRoot:after{pointer-events:none;position:absolute;height:var(--radio-size);width:var(--radio-size);border-radius:100%;transform:scale(.4)}.rt-BaseRadioRoot:where(:checked,[data-state=checked]):after{content:""}.rt-BaseRadioRoot:where(:focus-visible):before{outline:2px solid var(--focus-8);outline-offset:2px}.rt-BaseRadioRoot:where(.rt-r-size-1){--radio-size: calc(var(--space-4) * .875)}.rt-BaseRadioRoot:where(.rt-r-size-2){--radio-size: var(--space-4)}.rt-BaseRadioRoot:where(.rt-r-size-3){--radio-size: calc(var(--space-4) * 1.25)}@media (min-width: 520px){.rt-BaseRadioRoot:where(.xs\:rt-r-size-1){--radio-size: calc(var(--space-4) * .875)}.rt-BaseRadioRoot:where(.xs\:rt-r-size-2){--radio-size: var(--space-4)}.rt-BaseRadioRoot:where(.xs\:rt-r-size-3){--radio-size: calc(var(--space-4) * 1.25)}}@media (min-width: 768px){.rt-BaseRadioRoot:where(.sm\:rt-r-size-1){--radio-size: calc(var(--space-4) * .875)}.rt-BaseRadioRoot:where(.sm\:rt-r-size-2){--radio-size: var(--space-4)}.rt-BaseRadioRoot:where(.sm\:rt-r-size-3){--radio-size: calc(var(--space-4) * 1.25)}}@media (min-width: 1024px){.rt-BaseRadioRoot:where(.md\:rt-r-size-1){--radio-size: calc(var(--space-4) * .875)}.rt-BaseRadioRoot:where(.md\:rt-r-size-2){--radio-size: var(--space-4)}.rt-BaseRadioRoot:where(.md\:rt-r-size-3){--radio-size: calc(var(--space-4) * 1.25)}}@media (min-width: 1280px){.rt-BaseRadioRoot:where(.lg\:rt-r-size-1){--radio-size: calc(var(--space-4) * .875)}.rt-BaseRadioRoot:where(.lg\:rt-r-size-2){--radio-size: var(--space-4)}.rt-BaseRadioRoot:where(.lg\:rt-r-size-3){--radio-size: calc(var(--space-4) * 1.25)}}@media (min-width: 1640px){.rt-BaseRadioRoot:where(.xl\:rt-r-size-1){--radio-size: calc(var(--space-4) * .875)}.rt-BaseRadioRoot:where(.xl\:rt-r-size-2){--radio-size: var(--space-4)}.rt-BaseRadioRoot:where(.xl\:rt-r-size-3){--radio-size: calc(var(--space-4) * 1.25)}}.rt-BaseRadioRoot:where(.rt-variant-surface):where(:not(:checked),[data-state=unchecked]):before{background-color:var(--color-surface);box-shadow:inset 0 0 0 1px var(--gray-a7)}.rt-BaseRadioRoot:where(.rt-variant-surface):where(:checked,[data-state=checked]):before{background-color:var(--accent-indicator)}.rt-BaseRadioRoot:where(.rt-variant-surface):after{background-color:var(--accent-contrast)}.rt-BaseRadioRoot:where(.rt-variant-surface):where(.rt-high-contrast):where(:checked,[data-state=checked]):before{background-color:var(--accent-12)}.rt-BaseRadioRoot:where(.rt-variant-surface):where(.rt-high-contrast):after{background-color:var(--accent-1)}.rt-BaseRadioRoot:where(.rt-variant-surface):where(:disabled,[data-disabled]):before{box-shadow:inset 0 0 0 1px var(--gray-a6);background-color:var(--gray-a3)}.rt-BaseRadioRoot:where(.rt-variant-surface):where(:disabled,[data-disabled]):after{background-color:var(--gray-a8)}.rt-BaseRadioRoot:where(.rt-variant-classic):where(:not(:checked),[data-state=unchecked]):before{background-color:var(--color-surface);box-shadow:inset 0 0 0 1px var(--gray-7),var(--shadow-1)}.rt-BaseRadioRoot:where(.rt-variant-classic):where(:checked,[data-state=checked]):before{background-color:var(--accent-indicator);background-image:linear-gradient(to bottom,var(--white-a3),transparent,var(--black-a3));box-shadow:inset 0 .5px .5px var(--white-a4),inset 0 -.5px .5px var(--black-a4)}.rt-BaseRadioRoot:where(.rt-variant-classic):after{background-color:var(--accent-contrast)}.rt-BaseRadioRoot:where(.rt-variant-classic):where(.rt-high-contrast):where(:checked,[data-state=checked]):before{background-color:var(--accent-12)}.rt-BaseRadioRoot:where(.rt-variant-classic):where(.rt-high-contrast):after{background-color:var(--accent-1)}.rt-BaseRadioRoot:where(.rt-variant-classic):where(:disabled,[data-disabled]):before{box-shadow:var(--shadow-1);background-color:var(--gray-a3);background-image:none}.rt-BaseRadioRoot:where(.rt-variant-classic):where(:disabled,[data-disabled]):after{background-color:var(--gray-a8)}.rt-BaseRadioRoot:where(.rt-variant-soft):before{background-color:var(--accent-a4)}.rt-BaseRadioRoot:where(.rt-variant-soft):after{background-color:var(--accent-a11)}.rt-BaseRadioRoot:where(.rt-variant-soft):where(.rt-high-contrast):after{background-color:var(--accent-12)}.rt-BaseRadioRoot:where(.rt-variant-soft):where(:focus-visible):before{outline-color:var(--accent-a8)}.rt-BaseRadioRoot:where(.rt-variant-soft):where(:disabled,[data-disabled]):before{background-color:var(--gray-a3)}.rt-BaseRadioRoot:where(.rt-variant-soft):where(:disabled,[data-disabled]):after{background-color:var(--gray-a8)}.rt-ScrollAreaRoot{display:flex;flex-direction:column;overflow:hidden;width:100%;height:100%}.rt-ScrollAreaViewport{display:flex;flex-direction:column;width:100%;height:100%}.rt-ScrollAreaViewport:where(:focus-visible)+:where(.rt-ScrollAreaViewportFocusRing){position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;outline:2px solid var(--focus-8);outline-offset:-2px}.rt-ScrollAreaViewport:where(:has(.rt-ScrollAreaScrollbar[data-orientation=horizontal])){overscroll-behavior-x:contain}.rt-ScrollAreaViewport>*{display:block!important;width:-moz-fit-content;width:fit-content;flex-grow:1}.rt-ScrollAreaScrollbar{display:flex;-webkit-user-select:none;user-select:none;touch-action:none;background-color:var(--gray-a3);border-radius:var(--scrollarea-scrollbar-border-radius);animation-duration:.12s;animation-timing-function:ease-out}.rt-ScrollAreaScrollbar:where([data-orientation=vertical]){flex-direction:column;width:var(--scrollarea-scrollbar-size);margin-top:var(--scrollarea-scrollbar-vertical-margin-top);margin-bottom:var(--scrollarea-scrollbar-vertical-margin-bottom);margin-left:var(--scrollarea-scrollbar-vertical-margin-left);margin-right:var(--scrollarea-scrollbar-vertical-margin-right)}.rt-ScrollAreaScrollbar:where([data-orientation=horizontal]){flex-direction:row;height:var(--scrollarea-scrollbar-size);margin-top:var(--scrollarea-scrollbar-horizontal-margin-top);margin-bottom:var(--scrollarea-scrollbar-horizontal-margin-bottom);margin-left:var(--scrollarea-scrollbar-horizontal-margin-left);margin-right:var(--scrollarea-scrollbar-horizontal-margin-right)}.rt-ScrollAreaThumb{position:relative;background-color:var(--gray-a8);border-radius:inherit;transition:background-color .1s}.rt-ScrollAreaThumb:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;min-width:var(--space-4);min-height:var(--space-4)}.rt-ScrollAreaScrollbar:where(.rt-r-size-1){--scrollarea-scrollbar-size: var(--space-1);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.rt-r-size-2){--scrollarea-scrollbar-size: var(--space-2);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.rt-r-size-3){--scrollarea-scrollbar-size: var(--space-3);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}@media (min-width: 520px){.rt-ScrollAreaScrollbar:where(.xs\:rt-r-size-1){--scrollarea-scrollbar-size: var(--space-1);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.xs\:rt-r-size-2){--scrollarea-scrollbar-size: var(--space-2);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.xs\:rt-r-size-3){--scrollarea-scrollbar-size: var(--space-3);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}}@media (min-width: 768px){.rt-ScrollAreaScrollbar:where(.sm\:rt-r-size-1){--scrollarea-scrollbar-size: var(--space-1);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.sm\:rt-r-size-2){--scrollarea-scrollbar-size: var(--space-2);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.sm\:rt-r-size-3){--scrollarea-scrollbar-size: var(--space-3);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}}@media (min-width: 1024px){.rt-ScrollAreaScrollbar:where(.md\:rt-r-size-1){--scrollarea-scrollbar-size: var(--space-1);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.md\:rt-r-size-2){--scrollarea-scrollbar-size: var(--space-2);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.md\:rt-r-size-3){--scrollarea-scrollbar-size: var(--space-3);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}}@media (min-width: 1280px){.rt-ScrollAreaScrollbar:where(.lg\:rt-r-size-1){--scrollarea-scrollbar-size: var(--space-1);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.lg\:rt-r-size-2){--scrollarea-scrollbar-size: var(--space-2);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.lg\:rt-r-size-3){--scrollarea-scrollbar-size: var(--space-3);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}}@media (min-width: 1640px){.rt-ScrollAreaScrollbar:where(.xl\:rt-r-size-1){--scrollarea-scrollbar-size: var(--space-1);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.xl\:rt-r-size-2){--scrollarea-scrollbar-size: var(--space-2);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}.rt-ScrollAreaScrollbar:where(.xl\:rt-r-size-3){--scrollarea-scrollbar-size: var(--space-3);--scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full))}}.rt-ScrollAreaScrollbar:where([data-state=visible]){animation-name:rt-fade-in}.rt-ScrollAreaScrollbar:where([data-state=hidden]){animation-name:rt-fade-out}@media (hover: hover){.rt-ScrollAreaThumb:where(:hover){background-color:var(--gray-a9)}}.rt-SegmentedControlRoot{display:inline-grid;vertical-align:top;grid-auto-flow:column;grid-auto-columns:1fr;align-items:stretch;color:var(--gray-12);background-color:var(--color-surface);background-image:linear-gradient(var(--gray-a3),var(--gray-a3));position:relative;min-width:max-content;font-family:var(--default-font-family);font-style:normal;text-align:center;isolation:isolate;border-radius:var(--segmented-control-border-radius)}.rt-SegmentedControlRoot:where([data-disabled]){color:var(--gray-a8);background-color:var(--gray-3)}.rt-SegmentedControlItem{display:flex;align-items:stretch;-webkit-user-select:none;user-select:none}.rt-SegmentedControlItem:where(:first-child){border-top-left-radius:inherit;border-bottom-left-radius:inherit}.rt-SegmentedControlItem:where(:nth-last-child(2)){border-top-right-radius:inherit;border-bottom-right-radius:inherit}.rt-SegmentedControlItem:where(:focus-visible){border-radius:inherit;outline:2px solid var(--focus-8);outline-offset:-1px}.rt-SegmentedControlItemLabel :where(svg){flex-shrink:0}@media (hover: hover){:where(.rt-SegmentedControlItem[data-state=off]:not([disabled]):hover) .rt-SegmentedControlItemLabel{background-color:var(--gray-a2)}}.rt-SegmentedControlItemLabelInactive{position:absolute;transition:opacity calc(.8 * var(--segmented-control-transition-duration));font-weight:var(--font-weight-regular);letter-spacing:var(--tab-inactive-letter-spacing);word-spacing:var(--tab-inactive-word-spacing);opacity:1;transition-timing-function:ease-out}:where(.rt-SegmentedControlItem[data-state=on]) .rt-SegmentedControlItemLabelInactive{opacity:0;transition-timing-function:ease-in}.rt-SegmentedControlItemLabelActive{transition:opacity calc(.8 * var(--segmented-control-transition-duration));font-weight:var(--font-weight-medium);letter-spacing:var(--tab-active-letter-spacing);word-spacing:var(--tab-active-word-spacing);opacity:0;transition-timing-function:ease-in}:where(.rt-SegmentedControlItem[data-state=on]) .rt-SegmentedControlItemLabelActive{opacity:1;transition-timing-function:ease-out}.rt-SegmentedControlItemSeparator{z-index:-1;margin:3px -.5px;width:1px;background-color:var(--gray-a4);transition:opacity calc(.8 * var(--segmented-control-transition-duration));transition-timing-function:ease-out}:where(.rt-SegmentedControlItem:first-child) .rt-SegmentedControlItemSeparator,:where(.rt-SegmentedControlItem:where([data-state=on],:focus-visible)) .rt-SegmentedControlItemSeparator,:where(.rt-SegmentedControlItem:where([data-state=on],:focus-visible))+* .rt-SegmentedControlItemSeparator{opacity:0;transition-timing-function:ease-in}:where(.rt-SegmentedControlRoot:has(:focus-visible)) .rt-SegmentedControlItemSeparator{transition-duration:0ms}.rt-SegmentedControlIndicator{display:none;position:absolute;z-index:-1;top:0;left:0;height:100%;pointer-events:none;transition-property:transform;transition-timing-function:cubic-bezier(.445,.05,.55,.95);transition-duration:var(--segmented-control-transition-duration)}.rt-SegmentedControlIndicator:before{top:1px;right:1px;bottom:1px;left:1px;position:absolute;border-radius:max(.5px,calc(var(--segmented-control-border-radius) - 1px));background-color:var(--segmented-control-indicator-background-color);content:""}:where(.rt-SegmentedControlItem[data-state=on])~.rt-SegmentedControlIndicator{display:block}:where(.rt-SegmentedControlItem[disabled])~.rt-SegmentedControlIndicator{--segmented-control-indicator-background-color: var(--gray-a3)}:where(.rt-SegmentedControlItem[disabled])~.rt-SegmentedControlIndicator:before{top:0;right:0;bottom:0;left:0;box-shadow:none}.rt-SegmentedControlIndicator:where(:nth-child(2)){width:100%}.rt-SegmentedControlIndicator:where(:nth-child(3)){width:50%}.rt-SegmentedControlIndicator:where(:nth-child(4)){width:calc(100% / 3)}.rt-SegmentedControlIndicator:where(:nth-child(5)){width:25%}.rt-SegmentedControlIndicator:where(:nth-child(6)){width:20%}.rt-SegmentedControlIndicator:where(:nth-child(7)){width:calc(100% / 6)}.rt-SegmentedControlIndicator:where(:nth-child(8)){width:calc(100% / 7)}.rt-SegmentedControlIndicator:where(:nth-child(9)){width:12.5%}.rt-SegmentedControlIndicator:where(:nth-child(10)){width:calc(100% / 9)}.rt-SegmentedControlIndicator:where(:nth-child(11)){width:10%}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(1))~.rt-SegmentedControlIndicator{transform:translate(0)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(2))~.rt-SegmentedControlIndicator{transform:translate(100%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(3))~.rt-SegmentedControlIndicator{transform:translate(200%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(4))~.rt-SegmentedControlIndicator{transform:translate(300%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(5))~.rt-SegmentedControlIndicator{transform:translate(400%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(6))~.rt-SegmentedControlIndicator{transform:translate(500%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(7))~.rt-SegmentedControlIndicator{transform:translate(600%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(8))~.rt-SegmentedControlIndicator{transform:translate(700%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(9))~.rt-SegmentedControlIndicator{transform:translate(800%)}:where(.rt-SegmentedControlItem[data-state=on]:nth-child(10))~.rt-SegmentedControlIndicator{transform:translate(900%)}.rt-SegmentedControlItemLabel{box-sizing:border-box;display:flex;flex-grow:1;align-items:center;justify-content:center;border-radius:inherit}.rt-SegmentedControlRoot:where(.rt-r-size-1){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-5)}.rt-SegmentedControlRoot:where(.rt-r-size-1) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);padding-left:var(--space-3);padding-right:var(--space-3);gap:var(--space-1)}.rt-SegmentedControlRoot:where(.rt-r-size-2){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-6)}.rt-SegmentedControlRoot:where(.rt-r-size-2) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-2)}.rt-SegmentedControlRoot:where(.rt-r-size-3){--segmented-control-border-radius: max(var(--radius-3), var(--radius-full));height:var(--space-7)}.rt-SegmentedControlRoot:where(.rt-r-size-3) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-3)}@media (min-width: 520px){.rt-SegmentedControlRoot:where(.xs\:rt-r-size-1){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-5)}.rt-SegmentedControlRoot:where(.xs\:rt-r-size-1) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);padding-left:var(--space-3);padding-right:var(--space-3);gap:var(--space-1)}.rt-SegmentedControlRoot:where(.xs\:rt-r-size-2){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-6)}.rt-SegmentedControlRoot:where(.xs\:rt-r-size-2) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-2)}.rt-SegmentedControlRoot:where(.xs\:rt-r-size-3){--segmented-control-border-radius: max(var(--radius-3), var(--radius-full));height:var(--space-7)}.rt-SegmentedControlRoot:where(.xs\:rt-r-size-3) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-3)}}@media (min-width: 768px){.rt-SegmentedControlRoot:where(.sm\:rt-r-size-1){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-5)}.rt-SegmentedControlRoot:where(.sm\:rt-r-size-1) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);padding-left:var(--space-3);padding-right:var(--space-3);gap:var(--space-1)}.rt-SegmentedControlRoot:where(.sm\:rt-r-size-2){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-6)}.rt-SegmentedControlRoot:where(.sm\:rt-r-size-2) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-2)}.rt-SegmentedControlRoot:where(.sm\:rt-r-size-3){--segmented-control-border-radius: max(var(--radius-3), var(--radius-full));height:var(--space-7)}.rt-SegmentedControlRoot:where(.sm\:rt-r-size-3) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-3)}}@media (min-width: 1024px){.rt-SegmentedControlRoot:where(.md\:rt-r-size-1){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-5)}.rt-SegmentedControlRoot:where(.md\:rt-r-size-1) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);padding-left:var(--space-3);padding-right:var(--space-3);gap:var(--space-1)}.rt-SegmentedControlRoot:where(.md\:rt-r-size-2){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-6)}.rt-SegmentedControlRoot:where(.md\:rt-r-size-2) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-2)}.rt-SegmentedControlRoot:where(.md\:rt-r-size-3){--segmented-control-border-radius: max(var(--radius-3), var(--radius-full));height:var(--space-7)}.rt-SegmentedControlRoot:where(.md\:rt-r-size-3) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-3)}}@media (min-width: 1280px){.rt-SegmentedControlRoot:where(.lg\:rt-r-size-1){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-5)}.rt-SegmentedControlRoot:where(.lg\:rt-r-size-1) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);padding-left:var(--space-3);padding-right:var(--space-3);gap:var(--space-1)}.rt-SegmentedControlRoot:where(.lg\:rt-r-size-2){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-6)}.rt-SegmentedControlRoot:where(.lg\:rt-r-size-2) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-2)}.rt-SegmentedControlRoot:where(.lg\:rt-r-size-3){--segmented-control-border-radius: max(var(--radius-3), var(--radius-full));height:var(--space-7)}.rt-SegmentedControlRoot:where(.lg\:rt-r-size-3) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-3)}}@media (min-width: 1640px){.rt-SegmentedControlRoot:where(.xl\:rt-r-size-1){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-5)}.rt-SegmentedControlRoot:where(.xl\:rt-r-size-1) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);padding-left:var(--space-3);padding-right:var(--space-3);gap:var(--space-1)}.rt-SegmentedControlRoot:where(.xl\:rt-r-size-2){--segmented-control-border-radius: max(var(--radius-2), var(--radius-full));height:var(--space-6)}.rt-SegmentedControlRoot:where(.xl\:rt-r-size-2) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-2)}.rt-SegmentedControlRoot:where(.xl\:rt-r-size-3){--segmented-control-border-radius: max(var(--radius-3), var(--radius-full));height:var(--space-7)}.rt-SegmentedControlRoot:where(.xl\:rt-r-size-3) :where(.rt-SegmentedControlItemLabel){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3);padding-left:var(--space-4);padding-right:var(--space-4);gap:var(--space-3)}}.rt-SegmentedControlRoot:where(.rt-variant-surface) :where(.rt-SegmentedControlItem:not([disabled])) :where(.rt-SegmentedControlIndicator):before{box-shadow:0 0 0 1px var(--gray-a4)}.rt-SegmentedControlRoot:where(.rt-variant-classic) :where(.rt-SegmentedControlItem:not([disabled])) :where(.rt-SegmentedControlIndicator):before{box-shadow:var(--shadow-2)}.rt-SelectTrigger{display:inline-flex;align-items:center;justify-content:space-between;flex-shrink:0;-webkit-user-select:none;user-select:none;vertical-align:top;line-height:var(--height);font-family:var(--default-font-family);font-weight:var(--font-weight-regular);font-style:normal;text-align:start;color:var(--gray-12)}.rt-SelectTrigger:where(:focus-visible){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-SelectTriggerInner{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rt-SelectIcon{flex-shrink:0}:where(.rt-SelectTrigger:not(.rt-variant-ghost)) .rt-SelectIcon{opacity:.9}.rt-SelectContent:where([data-side]){min-width:var(--radix-select-trigger-width);max-height:var(--radix-select-content-available-height);transform-origin:var(--radix-select-content-transform-origin)}.rt-SelectViewport{box-sizing:border-box;padding:var(--select-content-padding)}:where(.rt-SelectContent:has(.rt-ScrollAreaScrollbar[data-orientation=vertical])) .rt-SelectViewport{padding-right:var(--space-3)}.rt-SelectItem{display:flex;align-items:center;height:var(--select-item-height);padding-left:var(--select-item-indicator-width);padding-right:var(--select-item-indicator-width);position:relative;box-sizing:border-box;outline:none;scroll-margin:var(--select-content-padding) 0;-webkit-user-select:none;user-select:none;cursor:var(--cursor-menu-item)}.rt-SelectItemIndicator{position:absolute;left:0;width:var(--select-item-indicator-width);display:inline-flex;align-items:center;justify-content:center}.rt-SelectSeparator{height:1px;margin-top:var(--space-2);margin-bottom:var(--space-2);margin-left:var(--select-item-indicator-width);margin-right:var(--select-separator-margin-right);background-color:var(--gray-a6)}.rt-SelectLabel{display:flex;align-items:center;height:var(--select-item-height);padding-left:var(--select-item-indicator-width);padding-right:var(--select-item-indicator-width);color:var(--gray-a10);-webkit-user-select:none;user-select:none;cursor:default}:where(.rt-SelectItem)+.rt-SelectLabel{margin-top:var(--space-2)}.rt-SelectTrigger:where(:not(.rt-variant-ghost)){box-sizing:border-box;height:var(--select-trigger-height)}.rt-SelectTrigger:where(.rt-variant-ghost){box-sizing:content-box;height:-moz-fit-content;height:fit-content;padding:var(--select-trigger-ghost-padding-y) var(--select-trigger-ghost-padding-x);--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px;--margin-top-override: calc(var(--margin-top) - var(--select-trigger-ghost-padding-y));--margin-right-override: calc(var(--margin-right) - var(--select-trigger-ghost-padding-x));--margin-bottom-override: calc(var(--margin-bottom) - var(--select-trigger-ghost-padding-y));--margin-left-override: calc(var(--margin-left) - var(--select-trigger-ghost-padding-x));margin:var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override) var(--margin-left-override)}:where(.rt-SelectTrigger:where(.rt-variant-ghost))>*{--margin-top-override: initial;--margin-right-override: initial;--margin-bottom-override: initial;--margin-left-override: initial}.rt-SelectTrigger:where(.rt-r-size-1){--select-trigger-height: var(--space-5);gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:max(var(--radius-1),var(--radius-full))}.rt-SelectTrigger:where(.rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-SelectTrigger:where(.rt-r-size-1):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.rt-r-size-2){--select-trigger-height: var(--space-6);gap:calc(var(--space-1) * 1.5);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:max(var(--radius-2),var(--radius-full))}.rt-SelectTrigger:where(.rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-SelectTrigger:where(.rt-r-size-2):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.rt-r-size-3){--select-trigger-height: var(--space-7);gap:var(--space-2);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3);border-radius:max(var(--radius-3),var(--radius-full))}.rt-SelectTrigger:where(.rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-SelectTrigger:where(.rt-r-size-3):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-3);--select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-SelectTrigger:where(.rt-r-size-3) :where(.rt-SelectIcon){width:11px;height:11px}@media (min-width: 520px){.rt-SelectTrigger:where(.xs\:rt-r-size-1){--select-trigger-height: var(--space-5);gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:max(var(--radius-1),var(--radius-full))}.rt-SelectTrigger:where(.xs\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-SelectTrigger:where(.xs\:rt-r-size-1):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.xs\:rt-r-size-2){--select-trigger-height: var(--space-6);gap:calc(var(--space-1) * 1.5);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:max(var(--radius-2),var(--radius-full))}.rt-SelectTrigger:where(.xs\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-SelectTrigger:where(.xs\:rt-r-size-2):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.xs\:rt-r-size-3){--select-trigger-height: var(--space-7);gap:var(--space-2);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3);border-radius:max(var(--radius-3),var(--radius-full))}.rt-SelectTrigger:where(.xs\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-SelectTrigger:where(.xs\:rt-r-size-3):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-3);--select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-SelectTrigger:where(.xs\:rt-r-size-3) :where(.rt-SelectIcon){width:11px;height:11px}}@media (min-width: 768px){.rt-SelectTrigger:where(.sm\:rt-r-size-1){--select-trigger-height: var(--space-5);gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:max(var(--radius-1),var(--radius-full))}.rt-SelectTrigger:where(.sm\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-SelectTrigger:where(.sm\:rt-r-size-1):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.sm\:rt-r-size-2){--select-trigger-height: var(--space-6);gap:calc(var(--space-1) * 1.5);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:max(var(--radius-2),var(--radius-full))}.rt-SelectTrigger:where(.sm\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-SelectTrigger:where(.sm\:rt-r-size-2):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.sm\:rt-r-size-3){--select-trigger-height: var(--space-7);gap:var(--space-2);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3);border-radius:max(var(--radius-3),var(--radius-full))}.rt-SelectTrigger:where(.sm\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-SelectTrigger:where(.sm\:rt-r-size-3):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-3);--select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-SelectTrigger:where(.sm\:rt-r-size-3) :where(.rt-SelectIcon){width:11px;height:11px}}@media (min-width: 1024px){.rt-SelectTrigger:where(.md\:rt-r-size-1){--select-trigger-height: var(--space-5);gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:max(var(--radius-1),var(--radius-full))}.rt-SelectTrigger:where(.md\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-SelectTrigger:where(.md\:rt-r-size-1):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.md\:rt-r-size-2){--select-trigger-height: var(--space-6);gap:calc(var(--space-1) * 1.5);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:max(var(--radius-2),var(--radius-full))}.rt-SelectTrigger:where(.md\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-SelectTrigger:where(.md\:rt-r-size-2):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.md\:rt-r-size-3){--select-trigger-height: var(--space-7);gap:var(--space-2);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3);border-radius:max(var(--radius-3),var(--radius-full))}.rt-SelectTrigger:where(.md\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-SelectTrigger:where(.md\:rt-r-size-3):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-3);--select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-SelectTrigger:where(.md\:rt-r-size-3) :where(.rt-SelectIcon){width:11px;height:11px}}@media (min-width: 1280px){.rt-SelectTrigger:where(.lg\:rt-r-size-1){--select-trigger-height: var(--space-5);gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:max(var(--radius-1),var(--radius-full))}.rt-SelectTrigger:where(.lg\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-SelectTrigger:where(.lg\:rt-r-size-1):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.lg\:rt-r-size-2){--select-trigger-height: var(--space-6);gap:calc(var(--space-1) * 1.5);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:max(var(--radius-2),var(--radius-full))}.rt-SelectTrigger:where(.lg\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-SelectTrigger:where(.lg\:rt-r-size-2):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.lg\:rt-r-size-3){--select-trigger-height: var(--space-7);gap:var(--space-2);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3);border-radius:max(var(--radius-3),var(--radius-full))}.rt-SelectTrigger:where(.lg\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-SelectTrigger:where(.lg\:rt-r-size-3):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-3);--select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-SelectTrigger:where(.lg\:rt-r-size-3) :where(.rt-SelectIcon){width:11px;height:11px}}@media (min-width: 1640px){.rt-SelectTrigger:where(.xl\:rt-r-size-1){--select-trigger-height: var(--space-5);gap:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:max(var(--radius-1),var(--radius-full))}.rt-SelectTrigger:where(.xl\:rt-r-size-1):where(:not(.rt-variant-ghost)){padding-left:var(--space-2);padding-right:var(--space-2)}.rt-SelectTrigger:where(.xl\:rt-r-size-1):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.xl\:rt-r-size-2){--select-trigger-height: var(--space-6);gap:calc(var(--space-1) * 1.5);font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);border-radius:max(var(--radius-2),var(--radius-full))}.rt-SelectTrigger:where(.xl\:rt-r-size-2):where(:not(.rt-variant-ghost)){padding-left:var(--space-3);padding-right:var(--space-3)}.rt-SelectTrigger:where(.xl\:rt-r-size-2):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-2);--select-trigger-ghost-padding-y: var(--space-1)}.rt-SelectTrigger:where(.xl\:rt-r-size-3){--select-trigger-height: var(--space-7);gap:var(--space-2);font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3);border-radius:max(var(--radius-3),var(--radius-full))}.rt-SelectTrigger:where(.xl\:rt-r-size-3):where(:not(.rt-variant-ghost)){padding-left:var(--space-4);padding-right:var(--space-4)}.rt-SelectTrigger:where(.xl\:rt-r-size-3):where(.rt-variant-ghost){--select-trigger-ghost-padding-x: var(--space-3);--select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5)}.rt-SelectTrigger:where(.xl\:rt-r-size-3) :where(.rt-SelectIcon){width:11px;height:11px}}.rt-SelectContent:where(.rt-r-size-1){--select-content-padding: var(--space-1);--select-item-height: var(--space-5);--select-item-indicator-width: calc(var(--space-5) / 1.2);--select-separator-margin-right: var(--space-2);border-radius:var(--radius-3)}.rt-SelectContent:where(.rt-r-size-1) :where(.rt-SelectLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);line-height:var(--line-height-1)}.rt-SelectContent:where(.rt-r-size-1) :where(.rt-SelectItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-SelectContent:where(.rt-r-size-1) :where(.rt-SelectItemIndicatorIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-SelectContent:where(.rt-r-size-2,.rt-r-size-3){--select-content-padding: var(--space-2);--select-item-height: var(--space-6);--select-item-indicator-width: var(--space-5);--select-separator-margin-right: var(--space-3);border-radius:var(--radius-4)}.rt-SelectContent:where(.rt-r-size-2,.rt-r-size-3) :where(.rt-SelectLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);line-height:var(--line-height-2)}.rt-SelectContent:where(.rt-r-size-2,.rt-r-size-3) :where(.rt-SelectItem){line-height:var(--line-height-2);border-radius:var(--radius-2)}.rt-SelectContent:where(.rt-r-size-2) :where(.rt-SelectItem){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-SelectContent:where(.rt-r-size-2) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-SelectContent:where(.rt-r-size-3) :where(.rt-SelectItem){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-SelectContent:where(.rt-r-size-3) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}@media (min-width: 520px){.rt-SelectContent:where(.xs\:rt-r-size-1){--select-content-padding: var(--space-1);--select-item-height: var(--space-5);--select-item-indicator-width: calc(var(--space-5) / 1.2);--select-separator-margin-right: var(--space-2);border-radius:var(--radius-3)}.rt-SelectContent:where(.xs\:rt-r-size-1) :where(.rt-SelectLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);line-height:var(--line-height-1)}.rt-SelectContent:where(.xs\:rt-r-size-1) :where(.rt-SelectItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-SelectContent:where(.xs\:rt-r-size-1) :where(.rt-SelectItemIndicatorIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-SelectContent:where(.xs\:rt-r-size-2,.xs\:rt-r-size-3){--select-content-padding: var(--space-2);--select-item-height: var(--space-6);--select-item-indicator-width: var(--space-5);--select-separator-margin-right: var(--space-3);border-radius:var(--radius-4)}.rt-SelectContent:where(.xs\:rt-r-size-2,.xs\:rt-r-size-3) :where(.rt-SelectLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);line-height:var(--line-height-2)}.rt-SelectContent:where(.xs\:rt-r-size-2,.xs\:rt-r-size-3) :where(.rt-SelectItem){line-height:var(--line-height-2);border-radius:var(--radius-2)}.rt-SelectContent:where(.xs\:rt-r-size-2) :where(.rt-SelectItem){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-SelectContent:where(.xs\:rt-r-size-2) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-SelectContent:where(.xs\:rt-r-size-3) :where(.rt-SelectItem){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-SelectContent:where(.xs\:rt-r-size-3) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}}@media (min-width: 768px){.rt-SelectContent:where(.sm\:rt-r-size-1){--select-content-padding: var(--space-1);--select-item-height: var(--space-5);--select-item-indicator-width: calc(var(--space-5) / 1.2);--select-separator-margin-right: var(--space-2);border-radius:var(--radius-3)}.rt-SelectContent:where(.sm\:rt-r-size-1) :where(.rt-SelectLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);line-height:var(--line-height-1)}.rt-SelectContent:where(.sm\:rt-r-size-1) :where(.rt-SelectItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-SelectContent:where(.sm\:rt-r-size-1) :where(.rt-SelectItemIndicatorIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-SelectContent:where(.sm\:rt-r-size-2,.sm\:rt-r-size-3){--select-content-padding: var(--space-2);--select-item-height: var(--space-6);--select-item-indicator-width: var(--space-5);--select-separator-margin-right: var(--space-3);border-radius:var(--radius-4)}.rt-SelectContent:where(.sm\:rt-r-size-2,.sm\:rt-r-size-3) :where(.rt-SelectLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);line-height:var(--line-height-2)}.rt-SelectContent:where(.sm\:rt-r-size-2,.sm\:rt-r-size-3) :where(.rt-SelectItem){line-height:var(--line-height-2);border-radius:var(--radius-2)}.rt-SelectContent:where(.sm\:rt-r-size-2) :where(.rt-SelectItem){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-SelectContent:where(.sm\:rt-r-size-2) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-SelectContent:where(.sm\:rt-r-size-3) :where(.rt-SelectItem){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-SelectContent:where(.sm\:rt-r-size-3) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}}@media (min-width: 1024px){.rt-SelectContent:where(.md\:rt-r-size-1){--select-content-padding: var(--space-1);--select-item-height: var(--space-5);--select-item-indicator-width: calc(var(--space-5) / 1.2);--select-separator-margin-right: var(--space-2);border-radius:var(--radius-3)}.rt-SelectContent:where(.md\:rt-r-size-1) :where(.rt-SelectLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);line-height:var(--line-height-1)}.rt-SelectContent:where(.md\:rt-r-size-1) :where(.rt-SelectItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-SelectContent:where(.md\:rt-r-size-1) :where(.rt-SelectItemIndicatorIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-SelectContent:where(.md\:rt-r-size-2,.md\:rt-r-size-3){--select-content-padding: var(--space-2);--select-item-height: var(--space-6);--select-item-indicator-width: var(--space-5);--select-separator-margin-right: var(--space-3);border-radius:var(--radius-4)}.rt-SelectContent:where(.md\:rt-r-size-2,.md\:rt-r-size-3) :where(.rt-SelectLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);line-height:var(--line-height-2)}.rt-SelectContent:where(.md\:rt-r-size-2,.md\:rt-r-size-3) :where(.rt-SelectItem){line-height:var(--line-height-2);border-radius:var(--radius-2)}.rt-SelectContent:where(.md\:rt-r-size-2) :where(.rt-SelectItem){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-SelectContent:where(.md\:rt-r-size-2) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-SelectContent:where(.md\:rt-r-size-3) :where(.rt-SelectItem){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-SelectContent:where(.md\:rt-r-size-3) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}}@media (min-width: 1280px){.rt-SelectContent:where(.lg\:rt-r-size-1){--select-content-padding: var(--space-1);--select-item-height: var(--space-5);--select-item-indicator-width: calc(var(--space-5) / 1.2);--select-separator-margin-right: var(--space-2);border-radius:var(--radius-3)}.rt-SelectContent:where(.lg\:rt-r-size-1) :where(.rt-SelectLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);line-height:var(--line-height-1)}.rt-SelectContent:where(.lg\:rt-r-size-1) :where(.rt-SelectItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-SelectContent:where(.lg\:rt-r-size-1) :where(.rt-SelectItemIndicatorIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-SelectContent:where(.lg\:rt-r-size-2,.lg\:rt-r-size-3){--select-content-padding: var(--space-2);--select-item-height: var(--space-6);--select-item-indicator-width: var(--space-5);--select-separator-margin-right: var(--space-3);border-radius:var(--radius-4)}.rt-SelectContent:where(.lg\:rt-r-size-2,.lg\:rt-r-size-3) :where(.rt-SelectLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);line-height:var(--line-height-2)}.rt-SelectContent:where(.lg\:rt-r-size-2,.lg\:rt-r-size-3) :where(.rt-SelectItem){line-height:var(--line-height-2);border-radius:var(--radius-2)}.rt-SelectContent:where(.lg\:rt-r-size-2) :where(.rt-SelectItem){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-SelectContent:where(.lg\:rt-r-size-2) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-SelectContent:where(.lg\:rt-r-size-3) :where(.rt-SelectItem){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-SelectContent:where(.lg\:rt-r-size-3) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}}@media (min-width: 1640px){.rt-SelectContent:where(.xl\:rt-r-size-1){--select-content-padding: var(--space-1);--select-item-height: var(--space-5);--select-item-indicator-width: calc(var(--space-5) / 1.2);--select-separator-margin-right: var(--space-2);border-radius:var(--radius-3)}.rt-SelectContent:where(.xl\:rt-r-size-1) :where(.rt-SelectLabel){font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1);line-height:var(--line-height-1)}.rt-SelectContent:where(.xl\:rt-r-size-1) :where(.rt-SelectItem){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);border-radius:var(--radius-1)}.rt-SelectContent:where(.xl\:rt-r-size-1) :where(.rt-SelectItemIndicatorIcon){width:calc(8px * var(--scaling));height:calc(8px * var(--scaling))}.rt-SelectContent:where(.xl\:rt-r-size-2,.xl\:rt-r-size-3){--select-content-padding: var(--space-2);--select-item-height: var(--space-6);--select-item-indicator-width: var(--space-5);--select-separator-margin-right: var(--space-3);border-radius:var(--radius-4)}.rt-SelectContent:where(.xl\:rt-r-size-2,.xl\:rt-r-size-3) :where(.rt-SelectLabel){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2);line-height:var(--line-height-2)}.rt-SelectContent:where(.xl\:rt-r-size-2,.xl\:rt-r-size-3) :where(.rt-SelectItem){line-height:var(--line-height-2);border-radius:var(--radius-2)}.rt-SelectContent:where(.xl\:rt-r-size-2) :where(.rt-SelectItem){font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-SelectContent:where(.xl\:rt-r-size-2) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}.rt-SelectContent:where(.xl\:rt-r-size-3) :where(.rt-SelectItem){font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-SelectContent:where(.xl\:rt-r-size-3) :where(.rt-SelectItemIndicatorIcon){width:calc(10px * var(--scaling));height:calc(10px * var(--scaling))}}.rt-SelectTrigger:where(.rt-variant-surface){color:var(--gray-12);background-color:var(--color-surface);box-shadow:inset 0 0 0 1px var(--gray-a7)}@media (hover: hover){.rt-SelectTrigger:where(.rt-variant-surface):where(:hover){box-shadow:inset 0 0 0 1px var(--gray-a8)}}.rt-SelectTrigger:where(.rt-variant-surface):where([data-state=open]){box-shadow:inset 0 0 0 1px var(--gray-a8)}.rt-SelectTrigger:where(.rt-variant-surface):where(:disabled){color:var(--gray-a11);background-color:var(--gray-a2);box-shadow:inset 0 0 0 1px var(--gray-a6)}.rt-SelectTrigger:where(.rt-variant-surface):where([data-placeholder]) :where(.rt-SelectTriggerInner){color:var(--gray-a10)}.rt-SelectTrigger:where(.rt-variant-classic){color:var(--gray-12);background-image:linear-gradient(var(--gray-2),var(--gray-1));box-shadow:var(--select-trigger-classic-box-shadow);position:relative;z-index:0}.rt-SelectTrigger:where(.rt-variant-classic):before{content:"";position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border:2px solid transparent;background-clip:content-box;border-radius:inherit;pointer-events:none;background-image:linear-gradient(var(--black-a1) -20%,transparent,var(--white-a1) 130%),linear-gradient(var(--color-surface),transparent)}@media (hover: hover){.rt-SelectTrigger:where(.rt-variant-classic):where(:hover){box-shadow:inset 0 0 0 1px var(--gray-a3),var(--select-trigger-classic-box-shadow)}.rt-SelectTrigger:where(.rt-variant-classic):where(:hover):before{background-image:linear-gradient(var(--black-a1) -15%,transparent,var(--white-a1) 120%),linear-gradient(var(--gray-2),var(--gray-1))}}.rt-SelectTrigger:where(.rt-variant-classic):where([data-state=open]){box-shadow:inset 0 0 0 1px var(--gray-a3),var(--select-trigger-classic-box-shadow)}.rt-SelectTrigger:where(.rt-variant-classic):where([data-state=open]):before{background-image:linear-gradient(var(--black-a1) -15%,transparent,var(--white-a1) 120%),linear-gradient(var(--gray-2),var(--gray-1))}.rt-SelectTrigger:where(.rt-variant-classic):where(:disabled){color:var(--gray-a11);background-color:var(--gray-2);background-image:none;box-shadow:var(--base-button-classic-disabled-box-shadow)}.rt-SelectTrigger:where(.rt-variant-classic):where(:disabled):before{background-color:var(--gray-a2);background-image:linear-gradient(var(--black-a1) -20%,transparent,var(--white-a1))}.rt-SelectTrigger:where(.rt-variant-classic):where([data-placeholder]) :where(.rt-SelectTriggerInner){color:var(--gray-a10)}.rt-SelectTrigger:where(.rt-variant-soft),.rt-SelectTrigger:where(.rt-variant-ghost){color:var(--accent-12)}.rt-SelectTrigger:where(.rt-variant-soft):where([data-placeholder]) :where(.rt-SelectTriggerInner),.rt-SelectTrigger:where(.rt-variant-ghost):where([data-placeholder]) :where(.rt-SelectTriggerInner){color:var(--accent-12);opacity:.6}.rt-SelectTrigger:where(.rt-variant-soft){background-color:var(--accent-a3)}@media (hover: hover){.rt-SelectTrigger:where(.rt-variant-soft):where(:hover){background-color:var(--accent-a4)}}.rt-SelectTrigger:where(.rt-variant-soft):where([data-state=open]){background-color:var(--accent-a4)}.rt-SelectTrigger:where(.rt-variant-soft):where(:focus-visible){outline-color:var(--accent-8)}.rt-SelectTrigger:where(.rt-variant-soft):where(:disabled){color:var(--gray-a11);background-color:var(--gray-a3)}@media (hover: hover){.rt-SelectTrigger:where(.rt-variant-ghost):where(:hover){background-color:var(--accent-a3)}}.rt-SelectTrigger:where(.rt-variant-ghost):where([data-state=open]){background-color:var(--accent-a3)}.rt-SelectTrigger:where(.rt-variant-ghost):where(:disabled){color:var(--gray-a11);background-color:transparent}.rt-SelectTrigger:where(:disabled) :where(.rt-SelectIcon){color:var(--gray-a9)}.rt-SelectContent{box-shadow:var(--shadow-5);--scrollarea-scrollbar-vertical-margin-top: var(--select-content-padding);--scrollarea-scrollbar-vertical-margin-bottom: var(--select-content-padding);--scrollarea-scrollbar-horizontal-margin-left: var(--select-content-padding);--scrollarea-scrollbar-horizontal-margin-right: var(--select-content-padding);overflow:hidden;background-color:var(--color-panel-solid)}.rt-SelectItem:where([data-disabled]){color:var(--gray-a8);cursor:default}.rt-SelectContent:where(.rt-variant-solid) :where(.rt-SelectItem[data-highlighted]){background-color:var(--accent-9);color:var(--accent-contrast)}.rt-SelectContent:where(.rt-variant-solid):where(.rt-high-contrast) :where(.rt-SelectItem[data-highlighted]){background-color:var(--accent-12);color:var(--accent-1)}.rt-SelectContent:where(.rt-variant-soft) :where(.rt-SelectItem[data-highlighted]){background-color:var(--accent-a4)}.rt-Separator{display:block;background-color:var(--accent-a6)}.rt-Separator:where(.rt-r-orientation-horizontal){width:var(--separator-size);height:1px}.rt-Separator:where(.rt-r-orientation-vertical){width:1px;height:var(--separator-size)}@media (min-width: 520px){.rt-Separator:where(.xs\:rt-r-orientation-horizontal){width:var(--separator-size);height:1px}.rt-Separator:where(.xs\:rt-r-orientation-vertical){width:1px;height:var(--separator-size)}}@media (min-width: 768px){.rt-Separator:where(.sm\:rt-r-orientation-horizontal){width:var(--separator-size);height:1px}.rt-Separator:where(.sm\:rt-r-orientation-vertical){width:1px;height:var(--separator-size)}}@media (min-width: 1024px){.rt-Separator:where(.md\:rt-r-orientation-horizontal){width:var(--separator-size);height:1px}.rt-Separator:where(.md\:rt-r-orientation-vertical){width:1px;height:var(--separator-size)}}@media (min-width: 1280px){.rt-Separator:where(.lg\:rt-r-orientation-horizontal){width:var(--separator-size);height:1px}.rt-Separator:where(.lg\:rt-r-orientation-vertical){width:1px;height:var(--separator-size)}}@media (min-width: 1640px){.rt-Separator:where(.xl\:rt-r-orientation-horizontal){width:var(--separator-size);height:1px}.rt-Separator:where(.xl\:rt-r-orientation-vertical){width:1px;height:var(--separator-size)}}.rt-Separator:where(.rt-r-size-1){--separator-size: var(--space-4)}.rt-Separator:where(.rt-r-size-2){--separator-size: var(--space-6)}.rt-Separator:where(.rt-r-size-3){--separator-size: var(--space-9)}.rt-Separator:where(.rt-r-size-4){--separator-size: 100%}@media (min-width: 520px){.rt-Separator:where(.xs\:rt-r-size-1){--separator-size: var(--space-4)}.rt-Separator:where(.xs\:rt-r-size-2){--separator-size: var(--space-6)}.rt-Separator:where(.xs\:rt-r-size-3){--separator-size: var(--space-9)}.rt-Separator:where(.xs\:rt-r-size-4){--separator-size: 100%}}@media (min-width: 768px){.rt-Separator:where(.sm\:rt-r-size-1){--separator-size: var(--space-4)}.rt-Separator:where(.sm\:rt-r-size-2){--separator-size: var(--space-6)}.rt-Separator:where(.sm\:rt-r-size-3){--separator-size: var(--space-9)}.rt-Separator:where(.sm\:rt-r-size-4){--separator-size: 100%}}@media (min-width: 1024px){.rt-Separator:where(.md\:rt-r-size-1){--separator-size: var(--space-4)}.rt-Separator:where(.md\:rt-r-size-2){--separator-size: var(--space-6)}.rt-Separator:where(.md\:rt-r-size-3){--separator-size: var(--space-9)}.rt-Separator:where(.md\:rt-r-size-4){--separator-size: 100%}}@media (min-width: 1280px){.rt-Separator:where(.lg\:rt-r-size-1){--separator-size: var(--space-4)}.rt-Separator:where(.lg\:rt-r-size-2){--separator-size: var(--space-6)}.rt-Separator:where(.lg\:rt-r-size-3){--separator-size: var(--space-9)}.rt-Separator:where(.lg\:rt-r-size-4){--separator-size: 100%}}@media (min-width: 1640px){.rt-Separator:where(.xl\:rt-r-size-1){--separator-size: var(--space-4)}.rt-Separator:where(.xl\:rt-r-size-2){--separator-size: var(--space-6)}.rt-Separator:where(.xl\:rt-r-size-3){--separator-size: var(--space-9)}.rt-Separator:where(.xl\:rt-r-size-4){--separator-size: 100%}}.rt-SliderRoot{--slider-thumb-size: calc(var(--slider-track-size) + var(--space-1));position:relative;display:flex;align-items:center;flex-grow:1;border-radius:max(calc(var(--radius-factor) * var(--slider-track-size) / 3),calc(var(--radius-factor) * var(--radius-thumb)));-webkit-user-select:none;user-select:none;touch-action:none}.rt-SliderRoot:where([data-orientation=horizontal]){width:-webkit-fill-available;width:-moz-available;width:stretch;height:var(--slider-track-size)}.rt-SliderRoot:where([data-orientation=vertical]){height:-webkit-fill-available;height:-moz-available;height:stretch;flex-direction:column;width:var(--slider-track-size)}.rt-SliderTrack{overflow:hidden;position:relative;flex-grow:1;border-radius:inherit}.rt-SliderTrack:where([data-orientation=horizontal]){height:var(--slider-track-size)}.rt-SliderTrack:where([data-orientation=vertical]){width:var(--slider-track-size)}.rt-SliderRange{position:absolute;border-radius:inherit}.rt-SliderRange:where([data-orientation=horizontal]){height:100%}.rt-SliderRange:where([data-orientation=vertical]){width:100%}.rt-SliderThumb{display:block;width:var(--slider-thumb-size);height:var(--slider-thumb-size);outline:0}.rt-SliderThumb:before{content:"";position:absolute;z-index:-1;width:calc(var(--slider-thumb-size) * 3);height:calc(var(--slider-thumb-size) * 3);top:50%;left:50%;transform:translate(-50%,-50%)}.rt-SliderThumb:after{content:"";position:absolute;inset:calc(-.25 * var(--slider-track-size));background-color:#fff;border-radius:max(var(--radius-1),var(--radius-thumb));box-shadow:var(--slider-thumb-box-shadow);cursor:var(--cursor-slider-thumb)}.rt-SliderThumb:where(:focus-visible):after{box-shadow:var(--slider-thumb-box-shadow),0 0 0 3px var(--accent-3),0 0 0 5px var(--focus-8)}.rt-SliderThumb:where(:active){cursor:var(--cursor-slider-thumb-active)}.rt-SliderRoot:where(.rt-r-size-1){--slider-track-size: calc(var(--space-2) * .75)}.rt-SliderRoot:where(.rt-r-size-2){--slider-track-size: var(--space-2)}.rt-SliderRoot:where(.rt-r-size-3){--slider-track-size: calc(var(--space-2) * 1.25)}@media (min-width: 520px){.rt-SliderRoot:where(.xs\:rt-r-size-1){--slider-track-size: calc(var(--space-2) * .75)}.rt-SliderRoot:where(.xs\:rt-r-size-2){--slider-track-size: var(--space-2)}.rt-SliderRoot:where(.xs\:rt-r-size-3){--slider-track-size: calc(var(--space-2) * 1.25)}}@media (min-width: 768px){.rt-SliderRoot:where(.sm\:rt-r-size-1){--slider-track-size: calc(var(--space-2) * .75)}.rt-SliderRoot:where(.sm\:rt-r-size-2){--slider-track-size: var(--space-2)}.rt-SliderRoot:where(.sm\:rt-r-size-3){--slider-track-size: calc(var(--space-2) * 1.25)}}@media (min-width: 1024px){.rt-SliderRoot:where(.md\:rt-r-size-1){--slider-track-size: calc(var(--space-2) * .75)}.rt-SliderRoot:where(.md\:rt-r-size-2){--slider-track-size: var(--space-2)}.rt-SliderRoot:where(.md\:rt-r-size-3){--slider-track-size: calc(var(--space-2) * 1.25)}}@media (min-width: 1280px){.rt-SliderRoot:where(.lg\:rt-r-size-1){--slider-track-size: calc(var(--space-2) * .75)}.rt-SliderRoot:where(.lg\:rt-r-size-2){--slider-track-size: var(--space-2)}.rt-SliderRoot:where(.lg\:rt-r-size-3){--slider-track-size: calc(var(--space-2) * 1.25)}}@media (min-width: 1640px){.rt-SliderRoot:where(.xl\:rt-r-size-1){--slider-track-size: calc(var(--space-2) * .75)}.rt-SliderRoot:where(.xl\:rt-r-size-2){--slider-track-size: var(--space-2)}.rt-SliderRoot:where(.xl\:rt-r-size-3){--slider-track-size: calc(var(--space-2) * 1.25)}}.rt-SliderRoot:where(.rt-variant-surface) :where(.rt-SliderTrack){background-color:var(--gray-a3);box-shadow:inset 0 0 0 1px var(--gray-a5)}.rt-SliderRoot:where(.rt-variant-surface) :where(.rt-SliderTrack):where([data-disabled]){box-shadow:inset 0 0 0 1px var(--gray-a4)}.rt-SliderRoot:where(.rt-variant-surface) :where(.rt-SliderRange){background-color:var(--accent-track);background-image:var(--slider-range-high-contrast-background-image);box-shadow:inset 0 0 0 1px var(--gray-a5)}.rt-SliderRoot:where(.rt-variant-surface) :where(.rt-SliderThumb){--slider-thumb-box-shadow: 0 0 0 1px var(--black-a4)}.rt-SliderRoot:where(.rt-variant-surface) :where(.rt-SliderThumb):where([data-disabled]):after{background-color:var(--gray-1);box-shadow:0 0 0 1px var(--gray-6)}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderTrack){background-color:var(--gray-a3);position:relative}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderTrack):before{content:"";top:0;right:0;bottom:0;left:0;position:absolute;border-radius:inherit;box-shadow:var(--shadow-1)}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderTrack):where([data-disabled]):before{opacity:.5}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderRange){background-color:var(--accent-track);background-image:var(--slider-range-high-contrast-background-image);box-shadow:inset 0 0 0 1px var(--gray-a3),inset 0 0 0 1px var(--accent-a4),inset 0 0 0 1px var(--black-a1),inset 0 1.5px 2px 0 var(--black-a2)}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderRange):where(.rt-high-contrast){box-shadow:inset 0 0 0 1px var(--gray-a3),inset 0 0 0 1px var(--black-a2),inset 0 1.5px 2px 0 var(--black-a2)}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderThumb){--slider-thumb-box-shadow: 0 0 0 1px var(--black-a3), 0 1px 3px var(--black-a1), 0 2px 4px -1px var(--black-a1)}.rt-SliderRoot:where(.rt-variant-classic) :where(.rt-SliderThumb):where([data-disabled]):after{background-color:var(--gray-1);box-shadow:0 0 0 1px var(--gray-6)}.rt-SliderRoot:where(.rt-variant-soft) :where(.rt-SliderTrack){background-color:var(--gray-a4);background-image:linear-gradient(var(--white-a1),var(--white-a1))}.rt-SliderRoot:where(.rt-variant-soft) :where(.rt-SliderTrack):where([data-disabled]){background-color:var(--gray-a4);background-image:none}.rt-SliderRoot:where(.rt-variant-soft) :where(.rt-SliderRange){background-image:linear-gradient(var(--accent-a5),var(--accent-a5)),var(--slider-range-high-contrast-background-image);background-color:var(--accent-6)}.rt-SliderRoot:where(.rt-variant-soft) :where(.rt-SliderThumb){--slider-thumb-box-shadow: 0 0 0 1px var(--black-a3), 0 0 0 1px var(--gray-a2), 0 0 0 1px var(--accent-a2), 0 1px 2px var(--gray-a4), 0 1px 3px -.5px var(--gray-a3)}.rt-SliderRoot:where(.rt-variant-soft) :where(.rt-SliderThumb):where([data-disabled]):after{background-color:var(--gray-1);box-shadow:0 0 0 1px var(--gray-5)}.rt-SliderRoot:where(:not(.rt-high-contrast)){--slider-range-high-contrast-background-image: none}.rt-SliderRoot:where([data-disabled]){cursor:var(--cursor-disabled);mix-blend-mode:var(--slider-disabled-blend-mode)}.rt-SliderRange:where([data-disabled]){background-color:transparent;background-image:none;box-shadow:none}.rt-SliderThumb:where([data-disabled]),.rt-SliderThumb:where([data-disabled]):after{cursor:var(--cursor-disabled)}.rt-Spinner{display:block;position:relative;opacity:var(--spinner-opacity)}.rt-SpinnerLeaf{position:absolute;top:0;left:43.75%;width:12.5%;height:100%;animation:rt-spinner-leaf-fade var(--spinner-animation-duration) linear infinite}.rt-SpinnerLeaf:before{content:"";display:block;width:100%;height:30%;border-radius:var(--radius-1);background-color:currentColor}.rt-SpinnerLeaf:where(:nth-child(1)){transform:rotate(0);animation-delay:calc(-8 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(2)){transform:rotate(45deg);animation-delay:calc(-7 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(3)){transform:rotate(90deg);animation-delay:calc(-6 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(4)){transform:rotate(135deg);animation-delay:calc(-5 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(5)){transform:rotate(180deg);animation-delay:calc(-4 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(6)){transform:rotate(225deg);animation-delay:calc(-3 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(7)){transform:rotate(270deg);animation-delay:calc(-2 / 8 * var(--spinner-animation-duration))}.rt-SpinnerLeaf:where(:nth-child(8)){transform:rotate(315deg);animation-delay:calc(-1 / 8 * var(--spinner-animation-duration))}@keyframes rt-spinner-leaf-fade{0%{opacity:1}to{opacity:.25}}.rt-Spinner:where(.rt-r-size-1){width:var(--space-3);height:var(--space-3)}.rt-Spinner:where(.rt-r-size-2){width:var(--space-4);height:var(--space-4)}.rt-Spinner:where(.rt-r-size-3){width:calc(1.25 * var(--space-4));height:calc(1.25 * var(--space-4))}@media (min-width: 520px){.rt-Spinner:where(.xs\:rt-r-size-1){width:var(--space-3);height:var(--space-3)}.rt-Spinner:where(.xs\:rt-r-size-2){width:var(--space-4);height:var(--space-4)}.rt-Spinner:where(.xs\:rt-r-size-3){width:calc(1.25 * var(--space-4));height:calc(1.25 * var(--space-4))}}@media (min-width: 768px){.rt-Spinner:where(.sm\:rt-r-size-1){width:var(--space-3);height:var(--space-3)}.rt-Spinner:where(.sm\:rt-r-size-2){width:var(--space-4);height:var(--space-4)}.rt-Spinner:where(.sm\:rt-r-size-3){width:calc(1.25 * var(--space-4));height:calc(1.25 * var(--space-4))}}@media (min-width: 1024px){.rt-Spinner:where(.md\:rt-r-size-1){width:var(--space-3);height:var(--space-3)}.rt-Spinner:where(.md\:rt-r-size-2){width:var(--space-4);height:var(--space-4)}.rt-Spinner:where(.md\:rt-r-size-3){width:calc(1.25 * var(--space-4));height:calc(1.25 * var(--space-4))}}@media (min-width: 1280px){.rt-Spinner:where(.lg\:rt-r-size-1){width:var(--space-3);height:var(--space-3)}.rt-Spinner:where(.lg\:rt-r-size-2){width:var(--space-4);height:var(--space-4)}.rt-Spinner:where(.lg\:rt-r-size-3){width:calc(1.25 * var(--space-4));height:calc(1.25 * var(--space-4))}}@media (min-width: 1640px){.rt-Spinner:where(.xl\:rt-r-size-1){width:var(--space-3);height:var(--space-3)}.rt-Spinner:where(.xl\:rt-r-size-2){width:var(--space-4);height:var(--space-4)}.rt-Spinner:where(.xl\:rt-r-size-3){width:calc(1.25 * var(--space-4));height:calc(1.25 * var(--space-4))}}.rt-Strong{font-family:var(--strong-font-family);font-size:calc(var(--strong-font-size-adjust) * 1em);font-style:var(--strong-font-style);font-weight:var(--strong-font-weight);letter-spacing:calc(var(--strong-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)))}.rt-Strong :where(.rt-Strong){font-size:inherit}.rt-SwitchRoot{position:relative;display:inline-flex;align-items:center;vertical-align:top;flex-shrink:0;height:var(--skeleton-height, var(--line-height, var(--switch-height)));--skeleton-height-override: var(--switch-height);border-radius:var(--skeleton-radius);--skeleton-radius-override: var(--switch-border-radius);--switch-width: calc(var(--switch-height) * 1.75);--switch-thumb-inset: 1px;--switch-thumb-size: calc(var(--switch-height) - var(--switch-thumb-inset) * 2);--switch-thumb-translate-x: calc(var(--switch-width) - var(--switch-height))}.rt-SwitchRoot:before{content:"";display:block;width:var(--switch-width);height:var(--switch-height);border-radius:var(--switch-border-radius);transition:background-position,background-color,box-shadow,filter;transition-timing-function:linear,ease-in-out,ease-in-out,ease-in-out;background-repeat:no-repeat;background-size:calc(var(--switch-width) * 2 + var(--switch-height)) 100%;cursor:var(--cursor-switch)}.rt-SwitchRoot:where([data-state=unchecked]):before{transition-duration:.12s,.14s,.14s,.14s;background-position-x:100%}.rt-SwitchRoot:where([data-state=checked]):before{transition-duration:.16s,.14s,.14s,.14s;background-position:0%}.rt-SwitchRoot:where(:active):before{transition-duration:30ms}.rt-SwitchRoot:where(:focus-visible):before{outline:2px solid var(--focus-8);outline-offset:2px}.rt-SwitchRoot:where([data-disabled]):before{cursor:var(--cursor-disabled)}.rt-SwitchThumb{background-color:#fff;position:absolute;left:var(--switch-thumb-inset);width:var(--switch-thumb-size);height:var(--switch-thumb-size);border-radius:calc(var(--switch-border-radius) - var(--switch-thumb-inset));transition:transform .14s cubic-bezier(.45,.05,.55,.95),box-shadow .14s ease-in-out}.rt-SwitchThumb:where([data-state=checked]){transform:translate(var(--switch-thumb-translate-x))}.rt-SwitchRoot:where(.rt-r-size-1){--switch-height: var(--space-4);--switch-border-radius: max(var(--radius-1), var(--radius-thumb))}.rt-SwitchRoot:where(.rt-r-size-2){--switch-height: calc(var(--space-5) * 5 / 6);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}.rt-SwitchRoot:where(.rt-r-size-3){--switch-height: var(--space-5);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}@media (min-width: 520px){.rt-SwitchRoot:where(.xs\:rt-r-size-1){--switch-height: var(--space-4);--switch-border-radius: max(var(--radius-1), var(--radius-thumb))}.rt-SwitchRoot:where(.xs\:rt-r-size-2){--switch-height: calc(var(--space-5) * 5 / 6);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}.rt-SwitchRoot:where(.xs\:rt-r-size-3){--switch-height: var(--space-5);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}}@media (min-width: 768px){.rt-SwitchRoot:where(.sm\:rt-r-size-1){--switch-height: var(--space-4);--switch-border-radius: max(var(--radius-1), var(--radius-thumb))}.rt-SwitchRoot:where(.sm\:rt-r-size-2){--switch-height: calc(var(--space-5) * 5 / 6);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}.rt-SwitchRoot:where(.sm\:rt-r-size-3){--switch-height: var(--space-5);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}}@media (min-width: 1024px){.rt-SwitchRoot:where(.md\:rt-r-size-1){--switch-height: var(--space-4);--switch-border-radius: max(var(--radius-1), var(--radius-thumb))}.rt-SwitchRoot:where(.md\:rt-r-size-2){--switch-height: calc(var(--space-5) * 5 / 6);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}.rt-SwitchRoot:where(.md\:rt-r-size-3){--switch-height: var(--space-5);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}}@media (min-width: 1280px){.rt-SwitchRoot:where(.lg\:rt-r-size-1){--switch-height: var(--space-4);--switch-border-radius: max(var(--radius-1), var(--radius-thumb))}.rt-SwitchRoot:where(.lg\:rt-r-size-2){--switch-height: calc(var(--space-5) * 5 / 6);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}.rt-SwitchRoot:where(.lg\:rt-r-size-3){--switch-height: var(--space-5);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}}@media (min-width: 1640px){.rt-SwitchRoot:where(.xl\:rt-r-size-1){--switch-height: var(--space-4);--switch-border-radius: max(var(--radius-1), var(--radius-thumb))}.rt-SwitchRoot:where(.xl\:rt-r-size-2){--switch-height: calc(var(--space-5) * 5 / 6);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}.rt-SwitchRoot:where(.xl\:rt-r-size-3){--switch-height: var(--space-5);--switch-border-radius: max(var(--radius-2), var(--radius-thumb))}}.rt-SwitchRoot:where(.rt-variant-surface):before{background-color:var(--gray-a3);background-image:linear-gradient(to right,var(--accent-track) 40%,transparent 60%);box-shadow:inset 0 0 0 1px var(--gray-a5)}.rt-SwitchRoot:where(.rt-variant-surface):where(:active):before{background-color:var(--gray-a4)}.rt-SwitchRoot:where(.rt-variant-surface):where([data-state=checked]:active):before{filter:var(--switch-surface-checked-active-filter)}.rt-SwitchRoot:where(.rt-variant-surface):where(.rt-high-contrast):before{background-image:linear-gradient(to right,var(--switch-high-contrast-checked-color-overlay) 40%,transparent 60%),linear-gradient(to right,var(--accent-track) 40%,transparent 60%)}.rt-SwitchRoot:where(.rt-variant-surface):where(.rt-high-contrast):where([data-state=checked]:active):before{filter:var(--switch-high-contrast-checked-active-before-filter)}.rt-SwitchRoot:where(.rt-variant-surface):where([data-disabled]){mix-blend-mode:var(--switch-disabled-blend-mode)}.rt-SwitchRoot:where(.rt-variant-surface):where([data-disabled]):before{filter:none;background-image:none;background-color:var(--gray-a3);box-shadow:inset 0 0 0 1px var(--gray-a3)}.rt-SwitchRoot:where(.rt-variant-surface) :where(.rt-SwitchThumb):where([data-state=unchecked]){box-shadow:0 0 1px 1px var(--black-a2),0 1px 1px var(--black-a1),0 2px 4px -1px var(--black-a1)}.rt-SwitchRoot:where(.rt-variant-surface) :where(.rt-SwitchThumb):where([data-state=checked]){box-shadow:0 1px 3px var(--black-a2),0 2px 4px -1px var(--black-a1),0 0 0 1px var(--black-a1),0 0 0 1px var(--accent-a4),-1px 0 1px var(--black-a2)}.rt-SwitchRoot:where(.rt-variant-surface) :where(.rt-SwitchThumb):where([data-state=checked]):where(.rt-high-contrast){box-shadow:0 1px 3px var(--black-a2),0 2px 4px -1px var(--black-a1),0 0 0 1px var(--black-a2),-1px 0 1px var(--black-a2)}.rt-SwitchRoot:where(.rt-variant-surface) :where(.rt-SwitchThumb):where([data-disabled]){background-color:var(--gray-2);box-shadow:0 0 0 1px var(--gray-a2),0 1px 3px var(--black-a1);transition:none}.rt-SwitchRoot:where(.rt-variant-classic):before{background-image:linear-gradient(to right,var(--accent-track) 40%,transparent 60%);background-color:var(--gray-a4);box-shadow:var(--shadow-1)}.rt-SwitchRoot:where(.rt-variant-classic):where([data-state=unchecked]:active):before{background-color:var(--gray-a5)}.rt-SwitchRoot:where(.rt-variant-classic):where([data-state=checked]):before{box-shadow:inset 0 0 0 1px var(--gray-a3),inset 0 0 0 1px var(--accent-a4),inset 0 0 0 1px var(--black-a1),inset 0 1.5px 2px 0 var(--black-a2)}.rt-SwitchRoot:where(.rt-variant-classic):where([data-state=checked]:active):before{filter:var(--switch-surface-checked-active-filter)}.rt-SwitchRoot:where(.rt-variant-classic):where(.rt-high-contrast):before{box-shadow:inset 0 0 0 1px var(--gray-a3),inset 0 0 0 1px var(--black-a2),inset 0 1.5px 2px 0 var(--black-a2);background-image:linear-gradient(to right,var(--switch-high-contrast-checked-color-overlay) 40%,transparent 60%),linear-gradient(to right,var(--accent-track) 40%,transparent 60%)}.rt-SwitchRoot:where(.rt-variant-classic):where(.rt-high-contrast):where([data-state=checked]:active):before{filter:var(--switch-high-contrast-checked-active-before-filter)}.rt-SwitchRoot:where(.rt-variant-classic):where([data-disabled]){mix-blend-mode:var(--switch-disabled-blend-mode)}.rt-SwitchRoot:where(.rt-variant-classic):where([data-disabled]):before{filter:none;background-image:none;background-color:var(--gray-a5);box-shadow:var(--shadow-1);opacity:.5}.rt-SwitchRoot:where(.rt-variant-classic) :where(.rt-SwitchThumb):where([data-state=unchecked]){box-shadow:0 1px 3px var(--black-a3),0 2px 4px -1px var(--black-a1),0 0 0 1px var(--black-a2)}.rt-SwitchRoot:where(.rt-variant-classic) :where(.rt-SwitchThumb):where([data-state=checked]){box-shadow:0 1px 3px var(--black-a2),0 2px 4px -1px var(--black-a1),0 0 0 1px var(--black-a1),0 0 0 1px var(--accent-a4),-1px 0 1px var(--black-a2)}.rt-SwitchRoot:where(.rt-variant-classic) :where(.rt-SwitchThumb):where([data-state=checked]):where(.rt-high-contrast){box-shadow:0 1px 3px var(--black-a2),0 2px 4px -1px var(--black-a1),0 0 0 1px var(--black-a2),-1px 0 1px var(--black-a2)}.rt-SwitchRoot:where(.rt-variant-classic) :where(.rt-SwitchThumb):where([data-disabled]){background-color:var(--gray-2);box-shadow:0 0 0 1px var(--gray-a2),0 1px 3px var(--black-a1);transition:none}.rt-SwitchRoot:where(.rt-variant-soft):before{background-image:linear-gradient(to right,var(--accent-a4) 40%,transparent 60%),linear-gradient(to right,var(--accent-a4) 40%,transparent 60%),linear-gradient(to right,var(--accent-a4) 40%,var(--white-a1) 60%),linear-gradient(to right,var(--gray-a2) 40%,var(--gray-a3) 60%)}.rt-SwitchRoot:where(.rt-variant-soft):where([data-state=unchecked]):before{background-color:var(--gray-a3)}.rt-SwitchRoot:where(.rt-variant-soft):where(:active):before{background-color:var(--gray-a4)}.rt-SwitchRoot:where(.rt-variant-soft):where(.rt-high-contrast):before{background-image:linear-gradient(to right,var(--switch-high-contrast-checked-color-overlay) 40%,transparent 60%),linear-gradient(to right,var(--accent-a6) 40%,transparent 60%),linear-gradient(to right,var(--accent-a6) 40%,transparent 60%),linear-gradient(to right,var(--accent-a6) 40%,var(--white-a1) 60%),linear-gradient(to right,var(--accent-a3) 40%,var(--gray-a3) 60%)}.rt-SwitchRoot:where(.rt-variant-soft):where(.rt-high-contrast):where([data-state=checked]:active):before{filter:var(--switch-high-contrast-checked-active-before-filter)}.rt-SwitchRoot:where(.rt-variant-soft):where([data-disabled]){mix-blend-mode:var(--switch-disabled-blend-mode)}.rt-SwitchRoot:where(.rt-variant-soft):where([data-disabled]):before{filter:none;background-image:none;background-color:var(--gray-a4)}.rt-SwitchRoot:where(.rt-variant-soft) :where(.rt-SwitchThumb){filter:saturate(.45)}.rt-SwitchRoot:where(.rt-variant-soft) :where(.rt-SwitchThumb):where([data-state=unchecked]){box-shadow:0 0 0 1px var(--black-a1),0 1px 3px var(--black-a1),0 1px 3px var(--black-a1),0 2px 4px -1px var(--black-a1)}.rt-SwitchRoot:where(.rt-variant-soft) :where(.rt-SwitchThumb):where([data-state=checked]){box-shadow:0 0 0 1px var(--black-a1),0 1px 3px var(--black-a2),0 1px 3px var(--accent-a3),0 2px 4px -1px var(--accent-a3)}.rt-SwitchRoot:where(.rt-variant-soft) :where(.rt-SwitchThumb):where([data-disabled]){filter:none;background-color:var(--gray-2);box-shadow:0 0 0 1px var(--gray-a2),0 1px 3px var(--black-a1);transition:none}.rt-BaseTabList::-webkit-scrollbar{display:none}.rt-BaseTabListTrigger{display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;-webkit-user-select:none;user-select:none;box-sizing:border-box;height:var(--tab-height);padding-left:var(--tab-padding-x);padding-right:var(--tab-padding-x);color:var(--gray-a11)}.rt-BaseTabListTriggerInner,.rt-BaseTabListTriggerInnerHidden{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--tab-inner-padding-y) var(--tab-inner-padding-x);border-radius:var(--tab-inner-border-radius)}.rt-BaseTabListTriggerInner{position:absolute}:where(.rt-BaseTabListTrigger[data-state=inactive],.rt-TabNavLink:not([data-active])) .rt-BaseTabListTriggerInner{letter-spacing:var(--tab-inactive-letter-spacing);word-spacing:var(--tab-inactive-word-spacing)}:where(.rt-BaseTabListTrigger[data-state=active],.rt-TabNavLink[data-active]) .rt-BaseTabListTriggerInner{font-weight:var(--font-weight-medium);letter-spacing:var(--tab-active-letter-spacing);word-spacing:var(--tab-active-word-spacing)}.rt-BaseTabListTriggerInnerHidden{visibility:hidden;font-weight:var(--font-weight-medium);letter-spacing:var(--tab-active-letter-spacing);word-spacing:var(--tab-active-word-spacing)}.rt-BaseTabList:where(.rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);--tab-height: var(--space-6);--tab-padding-x: var(--space-1);--tab-inner-padding-x: var(--space-1);--tab-inner-padding-y: calc(var(--space-1) * .5);--tab-inner-border-radius: var(--radius-1)}.rt-BaseTabList:where(.rt-r-size-2){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);--tab-height: var(--space-7);--tab-padding-x: var(--space-2);--tab-inner-padding-x: var(--space-2);--tab-inner-padding-y: var(--space-1);--tab-inner-border-radius: var(--radius-2)}@media (min-width: 520px){.rt-BaseTabList:where(.xs\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);--tab-height: var(--space-6);--tab-padding-x: var(--space-1);--tab-inner-padding-x: var(--space-1);--tab-inner-padding-y: calc(var(--space-1) * .5);--tab-inner-border-radius: var(--radius-1)}.rt-BaseTabList:where(.xs\:rt-r-size-2){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);--tab-height: var(--space-7);--tab-padding-x: var(--space-2);--tab-inner-padding-x: var(--space-2);--tab-inner-padding-y: var(--space-1);--tab-inner-border-radius: var(--radius-2)}}@media (min-width: 768px){.rt-BaseTabList:where(.sm\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);--tab-height: var(--space-6);--tab-padding-x: var(--space-1);--tab-inner-padding-x: var(--space-1);--tab-inner-padding-y: calc(var(--space-1) * .5);--tab-inner-border-radius: var(--radius-1)}.rt-BaseTabList:where(.sm\:rt-r-size-2){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);--tab-height: var(--space-7);--tab-padding-x: var(--space-2);--tab-inner-padding-x: var(--space-2);--tab-inner-padding-y: var(--space-1);--tab-inner-border-radius: var(--radius-2)}}@media (min-width: 1024px){.rt-BaseTabList:where(.md\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);--tab-height: var(--space-6);--tab-padding-x: var(--space-1);--tab-inner-padding-x: var(--space-1);--tab-inner-padding-y: calc(var(--space-1) * .5);--tab-inner-border-radius: var(--radius-1)}.rt-BaseTabList:where(.md\:rt-r-size-2){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);--tab-height: var(--space-7);--tab-padding-x: var(--space-2);--tab-inner-padding-x: var(--space-2);--tab-inner-padding-y: var(--space-1);--tab-inner-border-radius: var(--radius-2)}}@media (min-width: 1280px){.rt-BaseTabList:where(.lg\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);--tab-height: var(--space-6);--tab-padding-x: var(--space-1);--tab-inner-padding-x: var(--space-1);--tab-inner-padding-y: calc(var(--space-1) * .5);--tab-inner-border-radius: var(--radius-1)}.rt-BaseTabList:where(.lg\:rt-r-size-2){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);--tab-height: var(--space-7);--tab-padding-x: var(--space-2);--tab-inner-padding-x: var(--space-2);--tab-inner-padding-y: var(--space-1);--tab-inner-border-radius: var(--radius-2)}}@media (min-width: 1640px){.rt-BaseTabList:where(.xl\:rt-r-size-1){font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1);--tab-height: var(--space-6);--tab-padding-x: var(--space-1);--tab-inner-padding-x: var(--space-1);--tab-inner-padding-y: calc(var(--space-1) * .5);--tab-inner-border-radius: var(--radius-1)}.rt-BaseTabList:where(.xl\:rt-r-size-2){font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2);--tab-height: var(--space-7);--tab-padding-x: var(--space-2);--tab-inner-padding-x: var(--space-2);--tab-inner-padding-y: var(--space-1);--tab-inner-border-radius: var(--radius-2)}}.rt-BaseTabList{box-shadow:inset 0 -1px 0 0 var(--gray-a5);display:flex;justify-content:flex-start;overflow-x:auto;white-space:nowrap;font-family:var(--default-font-family);font-style:normal;scrollbar-width:none}@media (hover: hover){.rt-BaseTabListTrigger:where(:hover){color:var(--gray-12)}.rt-BaseTabListTrigger:where(:hover) :where(.rt-BaseTabListTriggerInner){background-color:var(--gray-a3)}.rt-BaseTabListTrigger:where(:focus-visible:hover) :where(.rt-BaseTabListTriggerInner){background-color:var(--accent-a3)}}.rt-BaseTabListTrigger:where([data-state=active],[data-active]){color:var(--gray-12)}.rt-BaseTabListTrigger:where(:focus-visible) :where(.rt-BaseTabListTriggerInner){outline:2px solid var(--focus-8);outline-offset:-2px}.rt-BaseTabListTrigger:where([data-state=active],[data-active]):before{box-sizing:border-box;content:"";height:2px;position:absolute;bottom:0;left:0;right:0;background-color:var(--accent-indicator)}:where(.rt-BaseTabList.rt-high-contrast) .rt-BaseTabListTrigger:where([data-state=active],[data-active]):before{background-color:var(--accent-12)}.rt-TabNavItem{display:flex}.rt-TableRootTable{--table-row-background-color: transparent;--table-row-box-shadow: inset 0 -1px var(--gray-a5);width:100%;text-align:left;vertical-align:top;border-collapse:collapse;border-radius:calc(var(--table-border-radius) - 1px);border-spacing:0;box-sizing:border-box;height:0}.rt-TableHeader,.rt-TableBody{vertical-align:inherit}.rt-TableRow{vertical-align:inherit;color:var(--gray-12)}.rt-TableCell{background-color:var(--table-row-background-color);box-shadow:var(--table-row-box-shadow);box-sizing:border-box;vertical-align:inherit;padding:var(--table-cell-padding);height:var(--table-cell-min-height)}.rt-Inset :where(.rt-TableCell:first-child){padding-left:var(--inset-padding-left, var(--table-cell-padding))}.rt-Inset :where(.rt-TableCell:last-child){padding-right:var(--inset-padding-right, var(--table-cell-padding))}.rt-TableColumnHeaderCell{font-weight:700}.rt-TableRowHeaderCell{font-weight:400}.rt-TableRoot:where(.rt-r-size-1){--table-border-radius: var(--radius-3);--table-cell-padding: var(--space-2);--table-cell-min-height: calc(36px * var(--scaling))}.rt-TableRoot:where(.rt-r-size-1) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.rt-r-size-2){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3);--table-cell-min-height: calc(44px * var(--scaling))}.rt-TableRoot:where(.rt-r-size-2) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.rt-r-size-3){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3) var(--space-4);--table-cell-min-height: var(--space-8)}.rt-TableRoot:where(.rt-r-size-3) :where(.rt-TableRootTable){font-size:var(--font-size-3);line-height:var(--line-height-3)}@media (min-width: 520px){.rt-TableRoot:where(.xs\:rt-r-size-1){--table-border-radius: var(--radius-3);--table-cell-padding: var(--space-2);--table-cell-min-height: calc(36px * var(--scaling))}.rt-TableRoot:where(.xs\:rt-r-size-1) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.xs\:rt-r-size-2){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3);--table-cell-min-height: calc(44px * var(--scaling))}.rt-TableRoot:where(.xs\:rt-r-size-2) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.xs\:rt-r-size-3){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3) var(--space-4);--table-cell-min-height: var(--space-8)}.rt-TableRoot:where(.xs\:rt-r-size-3) :where(.rt-TableRootTable){font-size:var(--font-size-3);line-height:var(--line-height-3)}}@media (min-width: 768px){.rt-TableRoot:where(.sm\:rt-r-size-1){--table-border-radius: var(--radius-3);--table-cell-padding: var(--space-2);--table-cell-min-height: calc(36px * var(--scaling))}.rt-TableRoot:where(.sm\:rt-r-size-1) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.sm\:rt-r-size-2){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3);--table-cell-min-height: calc(44px * var(--scaling))}.rt-TableRoot:where(.sm\:rt-r-size-2) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.sm\:rt-r-size-3){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3) var(--space-4);--table-cell-min-height: var(--space-8)}.rt-TableRoot:where(.sm\:rt-r-size-3) :where(.rt-TableRootTable){font-size:var(--font-size-3);line-height:var(--line-height-3)}}@media (min-width: 1024px){.rt-TableRoot:where(.md\:rt-r-size-1){--table-border-radius: var(--radius-3);--table-cell-padding: var(--space-2);--table-cell-min-height: calc(36px * var(--scaling))}.rt-TableRoot:where(.md\:rt-r-size-1) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.md\:rt-r-size-2){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3);--table-cell-min-height: calc(44px * var(--scaling))}.rt-TableRoot:where(.md\:rt-r-size-2) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.md\:rt-r-size-3){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3) var(--space-4);--table-cell-min-height: var(--space-8)}.rt-TableRoot:where(.md\:rt-r-size-3) :where(.rt-TableRootTable){font-size:var(--font-size-3);line-height:var(--line-height-3)}}@media (min-width: 1280px){.rt-TableRoot:where(.lg\:rt-r-size-1){--table-border-radius: var(--radius-3);--table-cell-padding: var(--space-2);--table-cell-min-height: calc(36px * var(--scaling))}.rt-TableRoot:where(.lg\:rt-r-size-1) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.lg\:rt-r-size-2){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3);--table-cell-min-height: calc(44px * var(--scaling))}.rt-TableRoot:where(.lg\:rt-r-size-2) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.lg\:rt-r-size-3){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3) var(--space-4);--table-cell-min-height: var(--space-8)}.rt-TableRoot:where(.lg\:rt-r-size-3) :where(.rt-TableRootTable){font-size:var(--font-size-3);line-height:var(--line-height-3)}}@media (min-width: 1640px){.rt-TableRoot:where(.xl\:rt-r-size-1){--table-border-radius: var(--radius-3);--table-cell-padding: var(--space-2);--table-cell-min-height: calc(36px * var(--scaling))}.rt-TableRoot:where(.xl\:rt-r-size-1) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.xl\:rt-r-size-2){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3);--table-cell-min-height: calc(44px * var(--scaling))}.rt-TableRoot:where(.xl\:rt-r-size-2) :where(.rt-TableRootTable){font-size:var(--font-size-2);line-height:var(--line-height-2)}.rt-TableRoot:where(.xl\:rt-r-size-3){--table-border-radius: var(--radius-4);--table-cell-padding: var(--space-3) var(--space-4);--table-cell-min-height: var(--space-8)}.rt-TableRoot:where(.xl\:rt-r-size-3) :where(.rt-TableRootTable){font-size:var(--font-size-3);line-height:var(--line-height-3)}}.rt-TableRoot:where(.rt-variant-surface){box-sizing:border-box;border:1px solid var(--gray-a5);border-radius:var(--table-border-radius);background-color:var(--color-panel);-webkit-backdrop-filter:var(--backdrop-filter-panel);backdrop-filter:var(--backdrop-filter-panel);background-clip:padding-box;position:relative}@supports (box-shadow: 0 0 0 1px color-mix(in oklab,white,black)){.rt-TableRoot:where(.rt-variant-surface){border-color:color-mix(in oklab,var(--gray-a5),var(--gray-6))}}.rt-TableRoot:where(.rt-variant-surface) :where(.rt-TableRootTable){overflow:hidden}.rt-TableRoot:where(.rt-variant-surface) :where(.rt-TableRootTable) :where(.rt-TableHeader){--table-row-background-color: var(--gray-a2)}.rt-TableRoot:where(.rt-variant-surface) :where(.rt-TableRootTable) :where(.rt-TableBody) :where(.rt-TableRow:last-child){--table-row-box-shadow: none}.rt-TableRoot:where(.rt-variant-ghost){--scrollarea-scrollbar-horizontal-margin-left: 0;--scrollarea-scrollbar-horizontal-margin-right: 0}.rt-TabsContent{position:relative;outline:0}.rt-TabsContent:where(:focus-visible){outline:2px solid var(--focus-8)}.rt-TextAreaRoot:where(:focus-within){outline:2px solid var(--focus-8);outline-offset:-1px}.rt-TextAreaInput::-webkit-scrollbar{width:var(--space-3);height:var(--space-3)}.rt-TextAreaInput::-webkit-scrollbar-track,.rt-TextAreaInput::-webkit-scrollbar-thumb{background-clip:content-box;border:var(--space-1) solid transparent;border-radius:var(--space-3)}.rt-TextAreaInput::-webkit-scrollbar-track{background-color:var(--gray-a3)}.rt-TextAreaInput::-webkit-scrollbar-thumb{background-color:var(--gray-a8)}@media (hover: hover){:where(.rt-TextAreaInput:not(:disabled))::-webkit-scrollbar-thumb:hover{background-color:var(--gray-a9)}}.rt-TextAreaInput:where(:-webkit-autofill,[data-com-onepassword-filled]){-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--gray-12)}.rt-TextAreaInput:where(:autofill,[data-com-onepassword-filled]){-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--gray-12)}.rt-TextAreaRoot{padding:var(--text-area-border-width);display:flex;flex-direction:column;box-sizing:border-box;font-family:var(--default-font-family);font-weight:var(--font-weight-regular);font-style:normal;text-align:start;overflow:hidden}.rt-TextAreaInput{padding:var(--text-area-padding-y) var(--text-area-padding-x);border-radius:inherit;resize:none;display:block;width:100%;flex-grow:1;cursor:auto}.rt-TextAreaRoot:where(.rt-r-size-1){min-height:var(--space-8);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.rt-r-size-1) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-TextAreaRoot:where(.rt-r-size-2){min-height:var(--space-9);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.rt-r-size-2) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-TextAreaRoot:where(.rt-r-size-3){min-height:80px;border-radius:var(--radius-3)}.rt-TextAreaRoot:where(.rt-r-size-3) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}@media (min-width: 520px){.rt-TextAreaRoot:where(.xs\:rt-r-size-1){min-height:var(--space-8);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.xs\:rt-r-size-1) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-TextAreaRoot:where(.xs\:rt-r-size-2){min-height:var(--space-9);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.xs\:rt-r-size-2) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-TextAreaRoot:where(.xs\:rt-r-size-3){min-height:80px;border-radius:var(--radius-3)}.rt-TextAreaRoot:where(.xs\:rt-r-size-3) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}}@media (min-width: 768px){.rt-TextAreaRoot:where(.sm\:rt-r-size-1){min-height:var(--space-8);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.sm\:rt-r-size-1) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-TextAreaRoot:where(.sm\:rt-r-size-2){min-height:var(--space-9);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.sm\:rt-r-size-2) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-TextAreaRoot:where(.sm\:rt-r-size-3){min-height:80px;border-radius:var(--radius-3)}.rt-TextAreaRoot:where(.sm\:rt-r-size-3) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}}@media (min-width: 1024px){.rt-TextAreaRoot:where(.md\:rt-r-size-1){min-height:var(--space-8);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.md\:rt-r-size-1) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-TextAreaRoot:where(.md\:rt-r-size-2){min-height:var(--space-9);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.md\:rt-r-size-2) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-TextAreaRoot:where(.md\:rt-r-size-3){min-height:80px;border-radius:var(--radius-3)}.rt-TextAreaRoot:where(.md\:rt-r-size-3) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}}@media (min-width: 1280px){.rt-TextAreaRoot:where(.lg\:rt-r-size-1){min-height:var(--space-8);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.lg\:rt-r-size-1) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-TextAreaRoot:where(.lg\:rt-r-size-2){min-height:var(--space-9);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.lg\:rt-r-size-2) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-TextAreaRoot:where(.lg\:rt-r-size-3){min-height:80px;border-radius:var(--radius-3)}.rt-TextAreaRoot:where(.lg\:rt-r-size-3) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}}@media (min-width: 1640px){.rt-TextAreaRoot:where(.xl\:rt-r-size-1){min-height:var(--space-8);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.xl\:rt-r-size-1) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));font-size:var(--font-size-1);line-height:var(--line-height-1);letter-spacing:var(--letter-spacing-1)}.rt-TextAreaRoot:where(.xl\:rt-r-size-2){min-height:var(--space-9);border-radius:var(--radius-2)}.rt-TextAreaRoot:where(.xl\:rt-r-size-2) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));font-size:var(--font-size-2);line-height:var(--line-height-2);letter-spacing:var(--letter-spacing-2)}.rt-TextAreaRoot:where(.xl\:rt-r-size-3){min-height:80px;border-radius:var(--radius-3)}.rt-TextAreaRoot:where(.xl\:rt-r-size-3) :where(.rt-TextAreaInput){--text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));--text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));font-size:var(--font-size-3);line-height:var(--line-height-3);letter-spacing:var(--letter-spacing-3)}}.rt-TextAreaRoot:where(.rt-variant-surface){--text-area-border-width: 1px;background-clip:content-box;background-color:var(--color-surface);box-shadow:inset 0 0 0 var(--text-area-border-width) var(--gray-a7);color:var(--gray-12)}.rt-TextAreaRoot:where(.rt-variant-surface) :where(.rt-TextAreaInput)::placeholder{color:var(--gray-a10)}.rt-TextAreaRoot:where(.rt-variant-surface):where(:has(.rt-TextAreaInput:where(:-webkit-autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextAreaRoot:where(.rt-variant-surface):where(:has(.rt-TextAreaInput:where(:autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextAreaRoot:where(.rt-variant-surface):where(:has(.rt-TextAreaInput:where(:disabled,:read-only))){background-image:linear-gradient(var(--gray-a2),var(--gray-a2));box-shadow:inset 0 0 0 var(--text-area-border-width) var(--gray-a6)}.rt-TextAreaRoot:where(.rt-variant-classic){--text-area-border-width: 1px;background-clip:content-box;background-color:var(--color-surface);box-shadow:var(--shadow-1);color:var(--gray-12)}.rt-TextAreaRoot:where(.rt-variant-classic) :where(.rt-TextAreaInput)::placeholder{color:var(--gray-a10)}.rt-TextAreaRoot:where(.rt-variant-classic):where(:has(.rt-TextAreaInput:where(:-webkit-autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextAreaRoot:where(.rt-variant-classic):where(:has(.rt-TextAreaInput:where(:autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextAreaRoot:where(.rt-variant-classic):where(:has(.rt-TextAreaInput:where(:disabled,:read-only))){background-image:linear-gradient(var(--gray-a2),var(--gray-a2))}.rt-TextAreaRoot:where(.rt-variant-soft){--text-area-border-width: 0px;background-color:var(--accent-a3);color:var(--accent-12)}.rt-TextAreaRoot:where(.rt-variant-soft) :where(.rt-TextAreaInput)::selection{background-color:var(--accent-a5)}.rt-TextAreaRoot:where(.rt-variant-soft) :where(.rt-TextAreaInput)::placeholder{color:var(--accent-12);opacity:.65}.rt-TextAreaRoot:where(.rt-variant-soft):where(:focus-within){outline-color:var(--accent-8)}.rt-TextAreaRoot:where(.rt-variant-soft):where(:has(.rt-TextAreaInput:where(:-webkit-autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){box-shadow:inset 0 0 0 1px var(--accent-a5),inset 0 0 0 1px var(--gray-a4)}.rt-TextAreaRoot:where(.rt-variant-soft):where(:has(.rt-TextAreaInput:where(:autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){box-shadow:inset 0 0 0 1px var(--accent-a5),inset 0 0 0 1px var(--gray-a4)}.rt-TextAreaRoot:where(.rt-variant-soft):where(:has(.rt-TextAreaInput:where(:disabled,:read-only))){background-color:var(--gray-a3)}.rt-TextAreaInput:where(:disabled,:read-only){cursor:text;color:var(--gray-a11);-webkit-text-fill-color:var(--gray-a11)}.rt-TextAreaInput:where(:disabled,:read-only)::placeholder{opacity:.5}.rt-TextAreaInput:where(:disabled,:read-only):where(:placeholder-shown){cursor:var(--cursor-disabled)}.rt-TextAreaInput:where(:disabled,:read-only)::selection{background-color:var(--gray-a5)}.rt-TextAreaRoot:where(:focus-within:has(.rt-TextAreaInput:where(:disabled,:read-only))){outline-color:var(--gray-8)}@supports selector(:has(*)){.rt-TextFieldRoot:where(:has(.rt-TextFieldInput:focus)){outline:2px solid var(--text-field-focus-color);outline-offset:-1px}}@supports not selector(:has(*)){.rt-TextFieldRoot:where(:focus-within){outline:2px solid var(--text-field-focus-color);outline-offset:-1px}}.rt-TextFieldRoot::selection{background-color:var(--text-field-selection-color)}.rt-TextFieldInput{width:100%;display:flex;align-items:center;text-align:inherit;border-radius:calc(var(--text-field-border-radius) - var(--text-field-border-width));text-indent:var(--text-field-padding)}.rt-TextFieldInput:where([type=number]){-moz-appearance:textfield}.rt-TextFieldInput::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.rt-TextFieldInput::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.rt-TextFieldInput::selection{background-color:var(--text-field-selection-color)}.rt-TextFieldInput::-webkit-calendar-picker-indicator{box-sizing:content-box;width:var(--text-field-native-icon-size);height:var(--text-field-native-icon-size);padding:var(--space-1);margin-left:0;margin-right:calc(var(--space-1) * -1);border-radius:calc(var(--text-field-border-radius) - 2px)}.rt-TextFieldInput:where(:not([type=time]))::-webkit-calendar-picker-indicator{margin-left:var(--space-1)}.rt-TextFieldInput::-webkit-calendar-picker-indicator:where(:hover){background-color:var(--gray-a3)}.rt-TextFieldInput::-webkit-calendar-picker-indicator:where(:focus-visible){outline:2px solid var(--text-field-focus-color)}.rt-TextFieldInput::-webkit-datetime-edit-ampm-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-day-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-hour-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-millisecond-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-minute-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-month-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-second-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-week-field:where(:focus),.rt-TextFieldInput::-webkit-datetime-edit-year-field:where(:focus){background-color:var(--text-field-selection-color);color:inherit;outline:none}@supports selector(:has(*)){.rt-TextFieldInput:where(:-webkit-autofill,[data-com-onepassword-filled]){-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--gray-12)}.rt-TextFieldInput:where(:autofill,[data-com-onepassword-filled]){-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--gray-12)}}.rt-TextFieldSlot{box-sizing:border-box;flex-shrink:0;display:flex;align-items:center;cursor:text}.rt-TextFieldSlot:where(:not([data-side=right])){order:-1;margin-left:calc(var(--text-field-border-width) * -1);margin-right:0}.rt-TextFieldSlot:where([data-side=right]),:where(.rt-TextFieldSlot:not([data-side=right]))~.rt-TextFieldSlot:where(:not([data-side=left])){order:0;margin-left:0;margin-right:calc(var(--text-field-border-width) * -1)}.rt-TextFieldRoot{box-sizing:border-box;height:var(--text-field-height);padding:var(--text-field-border-width);border-radius:var(--text-field-border-radius);display:flex;align-items:stretch;font-family:var(--default-font-family);font-weight:var(--font-weight-regular);font-style:normal;text-align:start}.rt-TextFieldInput:where([type=date],[type=datetime-local],[type=time],[type=week],[type=month]){text-indent:0;padding-left:var(--text-field-padding);padding-right:var(--text-field-padding)}.rt-TextFieldInput:where(:has(~.rt-TextFieldSlot:not([data-side=right]))){text-indent:0;padding-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.rt-TextFieldInput:where(:has(~.rt-TextFieldSlot[data-side=right],~.rt-TextFieldSlot:not([data-side=right])~.rt-TextFieldSlot:not([data-side=left]))){padding-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.rt-TextFieldRoot:where(.rt-r-size-1){--text-field-height: var(--space-5);--text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-3);font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1)}.rt-TextFieldRoot:where(.rt-r-size-1) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-1);padding-right:var(--space-1)}.rt-TextFieldRoot:where(.rt-r-size-1) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.rt-r-size-1) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:0;margin-right:-2px}.rt-TextFieldRoot:where(.rt-r-size-2){--text-field-height: var(--space-6);--text-field-padding: calc(var(--space-2) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-TextFieldRoot:where(.rt-r-size-2) :where(.rt-TextFieldInput){padding-bottom:.5px}.rt-TextFieldRoot:where(.rt-r-size-2) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:2px;margin-right:0}.rt-TextFieldRoot:where(.rt-r-size-2) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.rt-TextFieldRoot:where(.rt-r-size-3){--text-field-height: var(--space-7);--text-field-padding: calc(var(--space-3) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-3), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-TextFieldRoot:where(.rt-r-size-3) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.rt-r-size-3) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:5px;margin-right:0}.rt-TextFieldRoot:where(.rt-r-size-3) :where(.rt-TextFieldSlot){gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3)}@media (min-width: 520px){.rt-TextFieldRoot:where(.xs\:rt-r-size-1){--text-field-height: var(--space-5);--text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-3);font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1)}.rt-TextFieldRoot:where(.xs\:rt-r-size-1) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-1);padding-right:var(--space-1)}.rt-TextFieldRoot:where(.xs\:rt-r-size-1) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.xs\:rt-r-size-1) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:0;margin-right:-2px}.rt-TextFieldRoot:where(.xs\:rt-r-size-2){--text-field-height: var(--space-6);--text-field-padding: calc(var(--space-2) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-TextFieldRoot:where(.xs\:rt-r-size-2) :where(.rt-TextFieldInput){padding-bottom:.5px}.rt-TextFieldRoot:where(.xs\:rt-r-size-2) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:2px;margin-right:0}.rt-TextFieldRoot:where(.xs\:rt-r-size-2) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.rt-TextFieldRoot:where(.xs\:rt-r-size-3){--text-field-height: var(--space-7);--text-field-padding: calc(var(--space-3) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-3), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-TextFieldRoot:where(.xs\:rt-r-size-3) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.xs\:rt-r-size-3) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:5px;margin-right:0}.rt-TextFieldRoot:where(.xs\:rt-r-size-3) :where(.rt-TextFieldSlot){gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3)}}@media (min-width: 768px){.rt-TextFieldRoot:where(.sm\:rt-r-size-1){--text-field-height: var(--space-5);--text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-3);font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1)}.rt-TextFieldRoot:where(.sm\:rt-r-size-1) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-1);padding-right:var(--space-1)}.rt-TextFieldRoot:where(.sm\:rt-r-size-1) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.sm\:rt-r-size-1) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:0;margin-right:-2px}.rt-TextFieldRoot:where(.sm\:rt-r-size-2){--text-field-height: var(--space-6);--text-field-padding: calc(var(--space-2) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-TextFieldRoot:where(.sm\:rt-r-size-2) :where(.rt-TextFieldInput){padding-bottom:.5px}.rt-TextFieldRoot:where(.sm\:rt-r-size-2) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:2px;margin-right:0}.rt-TextFieldRoot:where(.sm\:rt-r-size-2) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.rt-TextFieldRoot:where(.sm\:rt-r-size-3){--text-field-height: var(--space-7);--text-field-padding: calc(var(--space-3) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-3), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-TextFieldRoot:where(.sm\:rt-r-size-3) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.sm\:rt-r-size-3) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:5px;margin-right:0}.rt-TextFieldRoot:where(.sm\:rt-r-size-3) :where(.rt-TextFieldSlot){gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3)}}@media (min-width: 1024px){.rt-TextFieldRoot:where(.md\:rt-r-size-1){--text-field-height: var(--space-5);--text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-3);font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1)}.rt-TextFieldRoot:where(.md\:rt-r-size-1) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-1);padding-right:var(--space-1)}.rt-TextFieldRoot:where(.md\:rt-r-size-1) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.md\:rt-r-size-1) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:0;margin-right:-2px}.rt-TextFieldRoot:where(.md\:rt-r-size-2){--text-field-height: var(--space-6);--text-field-padding: calc(var(--space-2) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-TextFieldRoot:where(.md\:rt-r-size-2) :where(.rt-TextFieldInput){padding-bottom:.5px}.rt-TextFieldRoot:where(.md\:rt-r-size-2) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:2px;margin-right:0}.rt-TextFieldRoot:where(.md\:rt-r-size-2) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.rt-TextFieldRoot:where(.md\:rt-r-size-3){--text-field-height: var(--space-7);--text-field-padding: calc(var(--space-3) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-3), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-TextFieldRoot:where(.md\:rt-r-size-3) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.md\:rt-r-size-3) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:5px;margin-right:0}.rt-TextFieldRoot:where(.md\:rt-r-size-3) :where(.rt-TextFieldSlot){gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3)}}@media (min-width: 1280px){.rt-TextFieldRoot:where(.lg\:rt-r-size-1){--text-field-height: var(--space-5);--text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-3);font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1)}.rt-TextFieldRoot:where(.lg\:rt-r-size-1) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-1);padding-right:var(--space-1)}.rt-TextFieldRoot:where(.lg\:rt-r-size-1) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.lg\:rt-r-size-1) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:0;margin-right:-2px}.rt-TextFieldRoot:where(.lg\:rt-r-size-2){--text-field-height: var(--space-6);--text-field-padding: calc(var(--space-2) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-TextFieldRoot:where(.lg\:rt-r-size-2) :where(.rt-TextFieldInput){padding-bottom:.5px}.rt-TextFieldRoot:where(.lg\:rt-r-size-2) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:2px;margin-right:0}.rt-TextFieldRoot:where(.lg\:rt-r-size-2) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.rt-TextFieldRoot:where(.lg\:rt-r-size-3){--text-field-height: var(--space-7);--text-field-padding: calc(var(--space-3) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-3), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-TextFieldRoot:where(.lg\:rt-r-size-3) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.lg\:rt-r-size-3) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:5px;margin-right:0}.rt-TextFieldRoot:where(.lg\:rt-r-size-3) :where(.rt-TextFieldSlot){gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3)}}@media (min-width: 1640px){.rt-TextFieldRoot:where(.xl\:rt-r-size-1){--text-field-height: var(--space-5);--text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-3);font-size:var(--font-size-1);letter-spacing:var(--letter-spacing-1)}.rt-TextFieldRoot:where(.xl\:rt-r-size-1) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-1);padding-right:var(--space-1)}.rt-TextFieldRoot:where(.xl\:rt-r-size-1) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.xl\:rt-r-size-1) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:0;margin-right:-2px}.rt-TextFieldRoot:where(.xl\:rt-r-size-2){--text-field-height: var(--space-6);--text-field-padding: calc(var(--space-2) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-2), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-2);letter-spacing:var(--letter-spacing-2)}.rt-TextFieldRoot:where(.xl\:rt-r-size-2) :where(.rt-TextFieldInput){padding-bottom:.5px}.rt-TextFieldRoot:where(.xl\:rt-r-size-2) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:2px;margin-right:0}.rt-TextFieldRoot:where(.xl\:rt-r-size-2) :where(.rt-TextFieldSlot){gap:var(--space-2);padding-left:var(--space-2);padding-right:var(--space-2)}.rt-TextFieldRoot:where(.xl\:rt-r-size-3){--text-field-height: var(--space-7);--text-field-padding: calc(var(--space-3) - var(--text-field-border-width));--text-field-border-radius: max(var(--radius-3), var(--radius-full));--text-field-native-icon-size: var(--space-4);font-size:var(--font-size-3);letter-spacing:var(--letter-spacing-3)}.rt-TextFieldRoot:where(.xl\:rt-r-size-3) :where(.rt-TextFieldInput){padding-bottom:0}.rt-TextFieldRoot:where(.xl\:rt-r-size-3) :where(.rt-TextFieldInput)::-webkit-textfield-decoration-container{padding-right:5px;margin-right:0}.rt-TextFieldRoot:where(.xl\:rt-r-size-3) :where(.rt-TextFieldSlot){gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3)}}.rt-TextFieldRoot:where(.rt-variant-surface){--text-field-selection-color: var(--focus-a5);--text-field-focus-color: var(--focus-8);--text-field-border-width: 1px;background-clip:content-box;background-color:var(--color-surface);box-shadow:inset 0 0 0 var(--text-field-border-width) var(--gray-a7);color:var(--gray-12)}.rt-TextFieldRoot:where(.rt-variant-surface) :where(.rt-TextFieldInput)::placeholder{color:var(--gray-a10)}.rt-TextFieldRoot:where(.rt-variant-surface) :where(.rt-TextFieldSlot){color:var(--gray-a11)}.rt-TextFieldRoot:where(.rt-variant-surface) :where(.rt-TextFieldSlot):where([data-accent-color]){color:var(--accent-a11)}.rt-TextFieldRoot:where(.rt-variant-surface):where(:has(.rt-TextFieldInput:where(:-webkit-autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextFieldRoot:where(.rt-variant-surface):where(:has(.rt-TextFieldInput:where(:autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextFieldRoot:where(.rt-variant-surface):where(:has(.rt-TextFieldInput:where(:disabled,:read-only))){background-image:linear-gradient(var(--gray-a2),var(--gray-a2));box-shadow:inset 0 0 0 var(--text-field-border-width) var(--gray-a6)}.rt-TextFieldRoot:where(.rt-variant-classic){--text-field-selection-color: var(--focus-a5);--text-field-focus-color: var(--focus-8);--text-field-border-width: 1px;background-clip:content-box;background-color:var(--color-surface);box-shadow:var(--shadow-1);color:var(--gray-12)}.rt-TextFieldRoot:where(.rt-variant-classic) :where(.rt-TextFieldInput)::placeholder{color:var(--gray-a10)}.rt-TextFieldRoot:where(.rt-variant-classic) :where(.rt-TextFieldSlot){color:var(--gray-a11)}.rt-TextFieldRoot:where(.rt-variant-classic) :where(.rt-TextFieldSlot):where([data-accent-color]){color:var(--accent-a11)}.rt-TextFieldRoot:where(.rt-variant-classic):where(:has(.rt-TextFieldInput:where(:-webkit-autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextFieldRoot:where(.rt-variant-classic):where(:has(.rt-TextFieldInput:where(:autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){background-image:linear-gradient(var(--focus-a2),var(--focus-a2));box-shadow:inset 0 0 0 1px var(--focus-a5),inset 0 0 0 1px var(--gray-a5)}.rt-TextFieldRoot:where(.rt-variant-classic):where(:has(.rt-TextFieldInput:where(:disabled,:read-only))){background-image:linear-gradient(var(--gray-a2),var(--gray-a2))}.rt-TextFieldRoot:where(.rt-variant-soft){--text-field-selection-color: var(--accent-a5);--text-field-focus-color: var(--accent-8);--text-field-border-width: 0px;background-color:var(--accent-a3);color:var(--accent-12)}.rt-TextFieldRoot:where(.rt-variant-soft) :where(.rt-TextFieldInput)::placeholder{color:var(--accent-12);opacity:.6}.rt-TextFieldRoot:where(.rt-variant-soft) :where(.rt-TextFieldSlot){color:var(--accent-12)}.rt-TextFieldRoot:where(.rt-variant-soft) :where(.rt-TextFieldSlot):where([data-accent-color]){color:var(--accent-a11)}.rt-TextFieldRoot:where(.rt-variant-soft):where(:has(.rt-TextFieldInput:where(:-webkit-autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){box-shadow:inset 0 0 0 1px var(--accent-a5),inset 0 0 0 1px var(--gray-a4)}.rt-TextFieldRoot:where(.rt-variant-soft):where(:has(.rt-TextFieldInput:where(:autofill,[data-com-onepassword-filled]):not(:disabled,:read-only))){box-shadow:inset 0 0 0 1px var(--accent-a5),inset 0 0 0 1px var(--gray-a4)}.rt-TextFieldRoot:where(.rt-variant-soft):where(:has(.rt-TextFieldInput:where(:disabled,:read-only))){background-color:var(--gray-a3)}.rt-TextFieldInput:where(:disabled,:read-only){cursor:text;color:var(--gray-a11);-webkit-text-fill-color:var(--gray-a11)}.rt-TextFieldInput:where(:disabled,:read-only)::placeholder{opacity:.5}.rt-TextFieldInput:where(:disabled,:read-only):where(:placeholder-shown){cursor:var(--cursor-disabled)}.rt-TextFieldInput:where(:disabled,:read-only):where(:placeholder-shown)~:where(.rt-TextFieldSlot){cursor:var(--cursor-disabled)}.rt-TextFieldRoot:where(:has(.rt-TextFieldInput:where(:disabled,:read-only))){--text-field-selection-color: var(--gray-a5);--text-field-focus-color: var(--gray-8)}.rt-ThemePanelShortcut:where(:focus-visible){outline-style:solid;outline-width:2px;outline-offset:2px;outline-color:var(--accent-9)}.rt-ThemePanelSwatch,.rt-ThemePanelRadioCard{position:relative}.rt-ThemePanelSwatchInput,.rt-ThemePanelRadioCardInput{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;outline:none;outline-width:2px;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;width:100%;height:100%}.rt-ThemePanelSwatch{width:var(--space-5);height:var(--space-5);border-radius:100%}.rt-ThemePanelSwatchInput{outline-offset:2px}.rt-ThemePanelSwatchInput:where(:checked){outline-style:solid;outline-color:var(--gray-12)}.rt-ThemePanelSwatchInput:where(:focus-visible){outline-style:solid;outline-color:var(--accent-9)}.rt-ThemePanelRadioCard{border-radius:var(--radius-1);box-shadow:0 0 0 1px var(--gray-7)}.rt-ThemePanelRadioCardInput{outline-offset:-1px}.rt-ThemePanelRadioCardInput:where(:checked){outline-style:solid;outline-color:var(--gray-12)}.rt-ThemePanelRadioCardInput:where(:focus-visible){background-color:var(--accent-a3);outline-style:solid;outline-color:var(--accent-9)}.rt-TooltipContent{box-sizing:border-box;padding:var(--space-1) var(--space-2);background-color:var(--gray-12);border-radius:var(--radius-2);transform-origin:var(--radix-tooltip-content-transform-origin);animation-duration:.14s;animation-timing-function:cubic-bezier(.16,1,.3,1)}@media (prefers-reduced-motion: no-preference){.rt-TooltipContent:where([data-state=delayed-open]):where([data-side=top]){animation-name:rt-slide-from-top,rt-fade-in}.rt-TooltipContent:where([data-state=delayed-open]):where([data-side=bottom]){animation-name:rt-slide-from-bottom,rt-fade-in}.rt-TooltipContent:where([data-state=delayed-open]):where([data-side=left]){animation-name:rt-slide-from-left,rt-fade-in}.rt-TooltipContent:where([data-state=delayed-open]):where([data-side=right]){animation-name:rt-slide-from-right,rt-fade-in}}.rt-TooltipText{color:var(--gray-1);-webkit-user-select:none;user-select:none;cursor:default}.rt-TooltipArrow{fill:var(--gray-12)}.radix-themes:where([data-is-root-theme=true]){position:relative;z-index:0;min-height:100vh}@supports (min-height: 100dvh){.radix-themes:where([data-is-root-theme=true]){min-height:100dvh}}.rt-r-ai-start{align-items:flex-start}.rt-r-ai-center{align-items:center}.rt-r-ai-end{align-items:flex-end}.rt-r-ai-baseline{align-items:baseline}.rt-r-ai-stretch{align-items:stretch}@media (min-width: 520px){.xs\:rt-r-ai-start{align-items:flex-start}.xs\:rt-r-ai-center{align-items:center}.xs\:rt-r-ai-end{align-items:flex-end}.xs\:rt-r-ai-baseline{align-items:baseline}.xs\:rt-r-ai-stretch{align-items:stretch}}@media (min-width: 768px){.sm\:rt-r-ai-start{align-items:flex-start}.sm\:rt-r-ai-center{align-items:center}.sm\:rt-r-ai-end{align-items:flex-end}.sm\:rt-r-ai-baseline{align-items:baseline}.sm\:rt-r-ai-stretch{align-items:stretch}}@media (min-width: 1024px){.md\:rt-r-ai-start{align-items:flex-start}.md\:rt-r-ai-center{align-items:center}.md\:rt-r-ai-end{align-items:flex-end}.md\:rt-r-ai-baseline{align-items:baseline}.md\:rt-r-ai-stretch{align-items:stretch}}@media (min-width: 1280px){.lg\:rt-r-ai-start{align-items:flex-start}.lg\:rt-r-ai-center{align-items:center}.lg\:rt-r-ai-end{align-items:flex-end}.lg\:rt-r-ai-baseline{align-items:baseline}.lg\:rt-r-ai-stretch{align-items:stretch}}@media (min-width: 1640px){.xl\:rt-r-ai-start{align-items:flex-start}.xl\:rt-r-ai-center{align-items:center}.xl\:rt-r-ai-end{align-items:flex-end}.xl\:rt-r-ai-baseline{align-items:baseline}.xl\:rt-r-ai-stretch{align-items:stretch}}.rt-r-as-start{align-self:flex-start}.rt-r-as-center{align-self:center}.rt-r-as-end{align-self:flex-end}.rt-r-as-baseline{align-self:baseline}.rt-r-as-stretch{align-self:stretch}@media (min-width: 520px){.xs\:rt-r-as-start{align-self:flex-start}.xs\:rt-r-as-center{align-self:center}.xs\:rt-r-as-end{align-self:flex-end}.xs\:rt-r-as-baseline{align-self:baseline}.xs\:rt-r-as-stretch{align-self:stretch}}@media (min-width: 768px){.sm\:rt-r-as-start{align-self:flex-start}.sm\:rt-r-as-center{align-self:center}.sm\:rt-r-as-end{align-self:flex-end}.sm\:rt-r-as-baseline{align-self:baseline}.sm\:rt-r-as-stretch{align-self:stretch}}@media (min-width: 1024px){.md\:rt-r-as-start{align-self:flex-start}.md\:rt-r-as-center{align-self:center}.md\:rt-r-as-end{align-self:flex-end}.md\:rt-r-as-baseline{align-self:baseline}.md\:rt-r-as-stretch{align-self:stretch}}@media (min-width: 1280px){.lg\:rt-r-as-start{align-self:flex-start}.lg\:rt-r-as-center{align-self:center}.lg\:rt-r-as-end{align-self:flex-end}.lg\:rt-r-as-baseline{align-self:baseline}.lg\:rt-r-as-stretch{align-self:stretch}}@media (min-width: 1640px){.xl\:rt-r-as-start{align-self:flex-start}.xl\:rt-r-as-center{align-self:center}.xl\:rt-r-as-end{align-self:flex-end}.xl\:rt-r-as-baseline{align-self:baseline}.xl\:rt-r-as-stretch{align-self:stretch}}.rt-r-display-block{display:block}.rt-r-display-inline{display:inline}.rt-r-display-inline-block{display:inline-block}.rt-r-display-flex{display:flex}.rt-r-display-inline-flex{display:inline-flex}.rt-r-display-grid{display:grid}.rt-r-display-inline-grid{display:inline-grid}.rt-r-display-none{display:none}@media (min-width: 520px){.xs\:rt-r-display-block{display:block}.xs\:rt-r-display-inline{display:inline}.xs\:rt-r-display-inline-block{display:inline-block}.xs\:rt-r-display-flex{display:flex}.xs\:rt-r-display-inline-flex{display:inline-flex}.xs\:rt-r-display-grid{display:grid}.xs\:rt-r-display-inline-grid{display:inline-grid}.xs\:rt-r-display-none{display:none}}@media (min-width: 768px){.sm\:rt-r-display-block{display:block}.sm\:rt-r-display-inline{display:inline}.sm\:rt-r-display-inline-block{display:inline-block}.sm\:rt-r-display-flex{display:flex}.sm\:rt-r-display-inline-flex{display:inline-flex}.sm\:rt-r-display-grid{display:grid}.sm\:rt-r-display-inline-grid{display:inline-grid}.sm\:rt-r-display-none{display:none}}@media (min-width: 1024px){.md\:rt-r-display-block{display:block}.md\:rt-r-display-inline{display:inline}.md\:rt-r-display-inline-block{display:inline-block}.md\:rt-r-display-flex{display:flex}.md\:rt-r-display-inline-flex{display:inline-flex}.md\:rt-r-display-grid{display:grid}.md\:rt-r-display-inline-grid{display:inline-grid}.md\:rt-r-display-none{display:none}}@media (min-width: 1280px){.lg\:rt-r-display-block{display:block}.lg\:rt-r-display-inline{display:inline}.lg\:rt-r-display-inline-block{display:inline-block}.lg\:rt-r-display-flex{display:flex}.lg\:rt-r-display-inline-flex{display:inline-flex}.lg\:rt-r-display-grid{display:grid}.lg\:rt-r-display-inline-grid{display:inline-grid}.lg\:rt-r-display-none{display:none}}@media (min-width: 1640px){.xl\:rt-r-display-block{display:block}.xl\:rt-r-display-inline{display:inline}.xl\:rt-r-display-inline-block{display:inline-block}.xl\:rt-r-display-flex{display:flex}.xl\:rt-r-display-inline-flex{display:inline-flex}.xl\:rt-r-display-grid{display:grid}.xl\:rt-r-display-inline-grid{display:inline-grid}.xl\:rt-r-display-none{display:none}}.rt-r-fb{flex-basis:var(--flex-basis)}@media (min-width: 520px){.xs\:rt-r-fb{flex-basis:var(--flex-basis-xs)}}@media (min-width: 768px){.sm\:rt-r-fb{flex-basis:var(--flex-basis-sm)}}@media (min-width: 1024px){.md\:rt-r-fb{flex-basis:var(--flex-basis-md)}}@media (min-width: 1280px){.lg\:rt-r-fb{flex-basis:var(--flex-basis-lg)}}@media (min-width: 1640px){.xl\:rt-r-fb{flex-basis:var(--flex-basis-xl)}}.rt-r-fd-row{flex-direction:row}.rt-r-fd-column{flex-direction:column}.rt-r-fd-row-reverse{flex-direction:row-reverse}.rt-r-fd-column-reverse{flex-direction:column-reverse}@media (min-width: 520px){.xs\:rt-r-fd-row{flex-direction:row}.xs\:rt-r-fd-column{flex-direction:column}.xs\:rt-r-fd-row-reverse{flex-direction:row-reverse}.xs\:rt-r-fd-column-reverse{flex-direction:column-reverse}}@media (min-width: 768px){.sm\:rt-r-fd-row{flex-direction:row}.sm\:rt-r-fd-column{flex-direction:column}.sm\:rt-r-fd-row-reverse{flex-direction:row-reverse}.sm\:rt-r-fd-column-reverse{flex-direction:column-reverse}}@media (min-width: 1024px){.md\:rt-r-fd-row{flex-direction:row}.md\:rt-r-fd-column{flex-direction:column}.md\:rt-r-fd-row-reverse{flex-direction:row-reverse}.md\:rt-r-fd-column-reverse{flex-direction:column-reverse}}@media (min-width: 1280px){.lg\:rt-r-fd-row{flex-direction:row}.lg\:rt-r-fd-column{flex-direction:column}.lg\:rt-r-fd-row-reverse{flex-direction:row-reverse}.lg\:rt-r-fd-column-reverse{flex-direction:column-reverse}}@media (min-width: 1640px){.xl\:rt-r-fd-row{flex-direction:row}.xl\:rt-r-fd-column{flex-direction:column}.xl\:rt-r-fd-row-reverse{flex-direction:row-reverse}.xl\:rt-r-fd-column-reverse{flex-direction:column-reverse}}.rt-r-fg{flex-grow:var(--flex-grow)}.rt-r-fg-0{flex-grow:0}.rt-r-fg-1{flex-grow:1}@media (min-width: 520px){.xs\:rt-r-fg{flex-grow:var(--flex-grow-xs)}.xs\:rt-r-fg-0{flex-grow:0}.xs\:rt-r-fg-1{flex-grow:1}}@media (min-width: 768px){.sm\:rt-r-fg{flex-grow:var(--flex-grow-sm)}.sm\:rt-r-fg-0{flex-grow:0}.sm\:rt-r-fg-1{flex-grow:1}}@media (min-width: 1024px){.md\:rt-r-fg{flex-grow:var(--flex-grow-md)}.md\:rt-r-fg-0{flex-grow:0}.md\:rt-r-fg-1{flex-grow:1}}@media (min-width: 1280px){.lg\:rt-r-fg{flex-grow:var(--flex-grow-lg)}.lg\:rt-r-fg-0{flex-grow:0}.lg\:rt-r-fg-1{flex-grow:1}}@media (min-width: 1640px){.xl\:rt-r-fg{flex-grow:var(--flex-grow-xl)}.xl\:rt-r-fg-0{flex-grow:0}.xl\:rt-r-fg-1{flex-grow:1}}.rt-r-fs{flex-shrink:var(--flex-shrink)}.rt-r-fs-0{flex-shrink:0}.rt-r-fs-1{flex-shrink:1}@media (min-width: 520px){.xs\:rt-r-fs{flex-shrink:var(--flex-shrink-xs)}.xs\:rt-r-fs-0{flex-shrink:0}.xs\:rt-r-fs-1{flex-shrink:1}}@media (min-width: 768px){.sm\:rt-r-fs{flex-shrink:var(--flex-shrink-sm)}.sm\:rt-r-fs-0{flex-shrink:0}.sm\:rt-r-fs-1{flex-shrink:1}}@media (min-width: 1024px){.md\:rt-r-fs{flex-shrink:var(--flex-shrink-md)}.md\:rt-r-fs-0{flex-shrink:0}.md\:rt-r-fs-1{flex-shrink:1}}@media (min-width: 1280px){.lg\:rt-r-fs{flex-shrink:var(--flex-shrink-lg)}.lg\:rt-r-fs-0{flex-shrink:0}.lg\:rt-r-fs-1{flex-shrink:1}}@media (min-width: 1640px){.xl\:rt-r-fs{flex-shrink:var(--flex-shrink-xl)}.xl\:rt-r-fs-0{flex-shrink:0}.xl\:rt-r-fs-1{flex-shrink:1}}.rt-r-fw-nowrap{flex-wrap:nowrap}.rt-r-fw-wrap{flex-wrap:wrap}.rt-r-fw-wrap-reverse{flex-wrap:wrap-reverse}@media (min-width: 520px){.xs\:rt-r-fw-nowrap{flex-wrap:nowrap}.xs\:rt-r-fw-wrap{flex-wrap:wrap}.xs\:rt-r-fw-wrap-reverse{flex-wrap:wrap-reverse}}@media (min-width: 768px){.sm\:rt-r-fw-nowrap{flex-wrap:nowrap}.sm\:rt-r-fw-wrap{flex-wrap:wrap}.sm\:rt-r-fw-wrap-reverse{flex-wrap:wrap-reverse}}@media (min-width: 1024px){.md\:rt-r-fw-nowrap{flex-wrap:nowrap}.md\:rt-r-fw-wrap{flex-wrap:wrap}.md\:rt-r-fw-wrap-reverse{flex-wrap:wrap-reverse}}@media (min-width: 1280px){.lg\:rt-r-fw-nowrap{flex-wrap:nowrap}.lg\:rt-r-fw-wrap{flex-wrap:wrap}.lg\:rt-r-fw-wrap-reverse{flex-wrap:wrap-reverse}}@media (min-width: 1640px){.xl\:rt-r-fw-nowrap{flex-wrap:nowrap}.xl\:rt-r-fw-wrap{flex-wrap:wrap}.xl\:rt-r-fw-wrap-reverse{flex-wrap:wrap-reverse}}.rt-r-gap{gap:var(--gap)}.rt-r-gap-0{gap:0}.rt-r-gap-1{gap:var(--space-1)}.rt-r-gap-2{gap:var(--space-2)}.rt-r-gap-3{gap:var(--space-3)}.rt-r-gap-4{gap:var(--space-4)}.rt-r-gap-5{gap:var(--space-5)}.rt-r-gap-6{gap:var(--space-6)}.rt-r-gap-7{gap:var(--space-7)}.rt-r-gap-8{gap:var(--space-8)}.rt-r-gap-9{gap:var(--space-9)}.rt-r-cg{column-gap:var(--column-gap)}.rt-r-cg-0{column-gap:0}.rt-r-cg-1{column-gap:var(--space-1)}.rt-r-cg-2{column-gap:var(--space-2)}.rt-r-cg-3{column-gap:var(--space-3)}.rt-r-cg-4{column-gap:var(--space-4)}.rt-r-cg-5{column-gap:var(--space-5)}.rt-r-cg-6{column-gap:var(--space-6)}.rt-r-cg-7{column-gap:var(--space-7)}.rt-r-cg-8{column-gap:var(--space-8)}.rt-r-cg-9{column-gap:var(--space-9)}.rt-r-rg{row-gap:var(--row-gap)}.rt-r-rg-0{row-gap:0}.rt-r-rg-1{row-gap:var(--space-1)}.rt-r-rg-2{row-gap:var(--space-2)}.rt-r-rg-3{row-gap:var(--space-3)}.rt-r-rg-4{row-gap:var(--space-4)}.rt-r-rg-5{row-gap:var(--space-5)}.rt-r-rg-6{row-gap:var(--space-6)}.rt-r-rg-7{row-gap:var(--space-7)}.rt-r-rg-8{row-gap:var(--space-8)}.rt-r-rg-9{row-gap:var(--space-9)}@media (min-width: 520px){.xs\:rt-r-gap{gap:var(--gap-xs)}.xs\:rt-r-gap-0{gap:0}.xs\:rt-r-gap-1{gap:var(--space-1)}.xs\:rt-r-gap-2{gap:var(--space-2)}.xs\:rt-r-gap-3{gap:var(--space-3)}.xs\:rt-r-gap-4{gap:var(--space-4)}.xs\:rt-r-gap-5{gap:var(--space-5)}.xs\:rt-r-gap-6{gap:var(--space-6)}.xs\:rt-r-gap-7{gap:var(--space-7)}.xs\:rt-r-gap-8{gap:var(--space-8)}.xs\:rt-r-gap-9{gap:var(--space-9)}.xs\:rt-r-cg{column-gap:var(--column-gap-xs)}.xs\:rt-r-cg-0{column-gap:0}.xs\:rt-r-cg-1{column-gap:var(--space-1)}.xs\:rt-r-cg-2{column-gap:var(--space-2)}.xs\:rt-r-cg-3{column-gap:var(--space-3)}.xs\:rt-r-cg-4{column-gap:var(--space-4)}.xs\:rt-r-cg-5{column-gap:var(--space-5)}.xs\:rt-r-cg-6{column-gap:var(--space-6)}.xs\:rt-r-cg-7{column-gap:var(--space-7)}.xs\:rt-r-cg-8{column-gap:var(--space-8)}.xs\:rt-r-cg-9{column-gap:var(--space-9)}.xs\:rt-r-rg{row-gap:var(--row-gap-xs)}.xs\:rt-r-rg-0{row-gap:0}.xs\:rt-r-rg-1{row-gap:var(--space-1)}.xs\:rt-r-rg-2{row-gap:var(--space-2)}.xs\:rt-r-rg-3{row-gap:var(--space-3)}.xs\:rt-r-rg-4{row-gap:var(--space-4)}.xs\:rt-r-rg-5{row-gap:var(--space-5)}.xs\:rt-r-rg-6{row-gap:var(--space-6)}.xs\:rt-r-rg-7{row-gap:var(--space-7)}.xs\:rt-r-rg-8{row-gap:var(--space-8)}.xs\:rt-r-rg-9{row-gap:var(--space-9)}}@media (min-width: 768px){.sm\:rt-r-gap{gap:var(--gap-sm)}.sm\:rt-r-gap-0{gap:0}.sm\:rt-r-gap-1{gap:var(--space-1)}.sm\:rt-r-gap-2{gap:var(--space-2)}.sm\:rt-r-gap-3{gap:var(--space-3)}.sm\:rt-r-gap-4{gap:var(--space-4)}.sm\:rt-r-gap-5{gap:var(--space-5)}.sm\:rt-r-gap-6{gap:var(--space-6)}.sm\:rt-r-gap-7{gap:var(--space-7)}.sm\:rt-r-gap-8{gap:var(--space-8)}.sm\:rt-r-gap-9{gap:var(--space-9)}.sm\:rt-r-cg{column-gap:var(--column-gap-sm)}.sm\:rt-r-cg-0{column-gap:0}.sm\:rt-r-cg-1{column-gap:var(--space-1)}.sm\:rt-r-cg-2{column-gap:var(--space-2)}.sm\:rt-r-cg-3{column-gap:var(--space-3)}.sm\:rt-r-cg-4{column-gap:var(--space-4)}.sm\:rt-r-cg-5{column-gap:var(--space-5)}.sm\:rt-r-cg-6{column-gap:var(--space-6)}.sm\:rt-r-cg-7{column-gap:var(--space-7)}.sm\:rt-r-cg-8{column-gap:var(--space-8)}.sm\:rt-r-cg-9{column-gap:var(--space-9)}.sm\:rt-r-rg{row-gap:var(--row-gap-sm)}.sm\:rt-r-rg-0{row-gap:0}.sm\:rt-r-rg-1{row-gap:var(--space-1)}.sm\:rt-r-rg-2{row-gap:var(--space-2)}.sm\:rt-r-rg-3{row-gap:var(--space-3)}.sm\:rt-r-rg-4{row-gap:var(--space-4)}.sm\:rt-r-rg-5{row-gap:var(--space-5)}.sm\:rt-r-rg-6{row-gap:var(--space-6)}.sm\:rt-r-rg-7{row-gap:var(--space-7)}.sm\:rt-r-rg-8{row-gap:var(--space-8)}.sm\:rt-r-rg-9{row-gap:var(--space-9)}}@media (min-width: 1024px){.md\:rt-r-gap{gap:var(--gap-md)}.md\:rt-r-gap-0{gap:0}.md\:rt-r-gap-1{gap:var(--space-1)}.md\:rt-r-gap-2{gap:var(--space-2)}.md\:rt-r-gap-3{gap:var(--space-3)}.md\:rt-r-gap-4{gap:var(--space-4)}.md\:rt-r-gap-5{gap:var(--space-5)}.md\:rt-r-gap-6{gap:var(--space-6)}.md\:rt-r-gap-7{gap:var(--space-7)}.md\:rt-r-gap-8{gap:var(--space-8)}.md\:rt-r-gap-9{gap:var(--space-9)}.md\:rt-r-cg{column-gap:var(--column-gap-md)}.md\:rt-r-cg-0{column-gap:0}.md\:rt-r-cg-1{column-gap:var(--space-1)}.md\:rt-r-cg-2{column-gap:var(--space-2)}.md\:rt-r-cg-3{column-gap:var(--space-3)}.md\:rt-r-cg-4{column-gap:var(--space-4)}.md\:rt-r-cg-5{column-gap:var(--space-5)}.md\:rt-r-cg-6{column-gap:var(--space-6)}.md\:rt-r-cg-7{column-gap:var(--space-7)}.md\:rt-r-cg-8{column-gap:var(--space-8)}.md\:rt-r-cg-9{column-gap:var(--space-9)}.md\:rt-r-rg{row-gap:var(--row-gap-md)}.md\:rt-r-rg-0{row-gap:0}.md\:rt-r-rg-1{row-gap:var(--space-1)}.md\:rt-r-rg-2{row-gap:var(--space-2)}.md\:rt-r-rg-3{row-gap:var(--space-3)}.md\:rt-r-rg-4{row-gap:var(--space-4)}.md\:rt-r-rg-5{row-gap:var(--space-5)}.md\:rt-r-rg-6{row-gap:var(--space-6)}.md\:rt-r-rg-7{row-gap:var(--space-7)}.md\:rt-r-rg-8{row-gap:var(--space-8)}.md\:rt-r-rg-9{row-gap:var(--space-9)}}@media (min-width: 1280px){.lg\:rt-r-gap{gap:var(--gap-lg)}.lg\:rt-r-gap-0{gap:0}.lg\:rt-r-gap-1{gap:var(--space-1)}.lg\:rt-r-gap-2{gap:var(--space-2)}.lg\:rt-r-gap-3{gap:var(--space-3)}.lg\:rt-r-gap-4{gap:var(--space-4)}.lg\:rt-r-gap-5{gap:var(--space-5)}.lg\:rt-r-gap-6{gap:var(--space-6)}.lg\:rt-r-gap-7{gap:var(--space-7)}.lg\:rt-r-gap-8{gap:var(--space-8)}.lg\:rt-r-gap-9{gap:var(--space-9)}.lg\:rt-r-cg{column-gap:var(--column-gap-lg)}.lg\:rt-r-cg-0{column-gap:0}.lg\:rt-r-cg-1{column-gap:var(--space-1)}.lg\:rt-r-cg-2{column-gap:var(--space-2)}.lg\:rt-r-cg-3{column-gap:var(--space-3)}.lg\:rt-r-cg-4{column-gap:var(--space-4)}.lg\:rt-r-cg-5{column-gap:var(--space-5)}.lg\:rt-r-cg-6{column-gap:var(--space-6)}.lg\:rt-r-cg-7{column-gap:var(--space-7)}.lg\:rt-r-cg-8{column-gap:var(--space-8)}.lg\:rt-r-cg-9{column-gap:var(--space-9)}.lg\:rt-r-rg{row-gap:var(--row-gap-lg)}.lg\:rt-r-rg-0{row-gap:0}.lg\:rt-r-rg-1{row-gap:var(--space-1)}.lg\:rt-r-rg-2{row-gap:var(--space-2)}.lg\:rt-r-rg-3{row-gap:var(--space-3)}.lg\:rt-r-rg-4{row-gap:var(--space-4)}.lg\:rt-r-rg-5{row-gap:var(--space-5)}.lg\:rt-r-rg-6{row-gap:var(--space-6)}.lg\:rt-r-rg-7{row-gap:var(--space-7)}.lg\:rt-r-rg-8{row-gap:var(--space-8)}.lg\:rt-r-rg-9{row-gap:var(--space-9)}}@media (min-width: 1640px){.xl\:rt-r-gap{gap:var(--gap-xl)}.xl\:rt-r-gap-0{gap:0}.xl\:rt-r-gap-1{gap:var(--space-1)}.xl\:rt-r-gap-2{gap:var(--space-2)}.xl\:rt-r-gap-3{gap:var(--space-3)}.xl\:rt-r-gap-4{gap:var(--space-4)}.xl\:rt-r-gap-5{gap:var(--space-5)}.xl\:rt-r-gap-6{gap:var(--space-6)}.xl\:rt-r-gap-7{gap:var(--space-7)}.xl\:rt-r-gap-8{gap:var(--space-8)}.xl\:rt-r-gap-9{gap:var(--space-9)}.xl\:rt-r-cg{column-gap:var(--column-gap-xl)}.xl\:rt-r-cg-0{column-gap:0}.xl\:rt-r-cg-1{column-gap:var(--space-1)}.xl\:rt-r-cg-2{column-gap:var(--space-2)}.xl\:rt-r-cg-3{column-gap:var(--space-3)}.xl\:rt-r-cg-4{column-gap:var(--space-4)}.xl\:rt-r-cg-5{column-gap:var(--space-5)}.xl\:rt-r-cg-6{column-gap:var(--space-6)}.xl\:rt-r-cg-7{column-gap:var(--space-7)}.xl\:rt-r-cg-8{column-gap:var(--space-8)}.xl\:rt-r-cg-9{column-gap:var(--space-9)}.xl\:rt-r-rg{row-gap:var(--row-gap-xl)}.xl\:rt-r-rg-0{row-gap:0}.xl\:rt-r-rg-1{row-gap:var(--space-1)}.xl\:rt-r-rg-2{row-gap:var(--space-2)}.xl\:rt-r-rg-3{row-gap:var(--space-3)}.xl\:rt-r-rg-4{row-gap:var(--space-4)}.xl\:rt-r-rg-5{row-gap:var(--space-5)}.xl\:rt-r-rg-6{row-gap:var(--space-6)}.xl\:rt-r-rg-7{row-gap:var(--space-7)}.xl\:rt-r-rg-8{row-gap:var(--space-8)}.xl\:rt-r-rg-9{row-gap:var(--space-9)}}.rt-r-ga{grid-area:var(--grid-area)}@media (min-width: 520px){.xs\:rt-r-ga{grid-area:var(--grid-area-xs)}}@media (min-width: 768px){.sm\:rt-r-ga{grid-area:var(--grid-area-sm)}}@media (min-width: 1024px){.md\:rt-r-ga{grid-area:var(--grid-area-md)}}@media (min-width: 1280px){.lg\:rt-r-ga{grid-area:var(--grid-area-lg)}}@media (min-width: 1640px){.xl\:rt-r-ga{grid-area:var(--grid-area-xl)}}.rt-r-gaf-row{grid-auto-flow:row}.rt-r-gaf-column{grid-auto-flow:column}.rt-r-gaf-dense{grid-auto-flow:dense}.rt-r-gaf-row-dense{grid-auto-flow:row dense}.rt-r-gaf-column-dense{grid-auto-flow:column dense}@media (min-width: 520px){.xs\:rt-r-gaf-row{grid-auto-flow:row}.xs\:rt-r-gaf-column{grid-auto-flow:column}.xs\:rt-r-gaf-dense{grid-auto-flow:dense}.xs\:rt-r-gaf-row-dense{grid-auto-flow:row dense}.xs\:rt-r-gaf-column-dense{grid-auto-flow:column dense}}@media (min-width: 768px){.sm\:rt-r-gaf-row{grid-auto-flow:row}.sm\:rt-r-gaf-column{grid-auto-flow:column}.sm\:rt-r-gaf-dense{grid-auto-flow:dense}.sm\:rt-r-gaf-row-dense{grid-auto-flow:row dense}.sm\:rt-r-gaf-column-dense{grid-auto-flow:column dense}}@media (min-width: 1024px){.md\:rt-r-gaf-row{grid-auto-flow:row}.md\:rt-r-gaf-column{grid-auto-flow:column}.md\:rt-r-gaf-dense{grid-auto-flow:dense}.md\:rt-r-gaf-row-dense{grid-auto-flow:row dense}.md\:rt-r-gaf-column-dense{grid-auto-flow:column dense}}@media (min-width: 1280px){.lg\:rt-r-gaf-row{grid-auto-flow:row}.lg\:rt-r-gaf-column{grid-auto-flow:column}.lg\:rt-r-gaf-dense{grid-auto-flow:dense}.lg\:rt-r-gaf-row-dense{grid-auto-flow:row dense}.lg\:rt-r-gaf-column-dense{grid-auto-flow:column dense}}@media (min-width: 1640px){.xl\:rt-r-gaf-row{grid-auto-flow:row}.xl\:rt-r-gaf-column{grid-auto-flow:column}.xl\:rt-r-gaf-dense{grid-auto-flow:dense}.xl\:rt-r-gaf-row-dense{grid-auto-flow:row dense}.xl\:rt-r-gaf-column-dense{grid-auto-flow:column dense}}.rt-r-gc{grid-column:var(--grid-column)}.rt-r-gc-1{grid-column:1}.rt-r-gc-2{grid-column:2}.rt-r-gc-3{grid-column:3}.rt-r-gc-4{grid-column:4}.rt-r-gc-5{grid-column:5}.rt-r-gc-6{grid-column:6}.rt-r-gc-7{grid-column:7}.rt-r-gc-8{grid-column:8}.rt-r-gc-9{grid-column:9}@media (min-width: 520px){.xs\:rt-r-gc{grid-column:var(--grid-column-xs)}.xs\:rt-r-gc-1{grid-column:1}.xs\:rt-r-gc-2{grid-column:2}.xs\:rt-r-gc-3{grid-column:3}.xs\:rt-r-gc-4{grid-column:4}.xs\:rt-r-gc-5{grid-column:5}.xs\:rt-r-gc-6{grid-column:6}.xs\:rt-r-gc-7{grid-column:7}.xs\:rt-r-gc-8{grid-column:8}.xs\:rt-r-gc-9{grid-column:9}}@media (min-width: 768px){.sm\:rt-r-gc{grid-column:var(--grid-column-sm)}.sm\:rt-r-gc-1{grid-column:1}.sm\:rt-r-gc-2{grid-column:2}.sm\:rt-r-gc-3{grid-column:3}.sm\:rt-r-gc-4{grid-column:4}.sm\:rt-r-gc-5{grid-column:5}.sm\:rt-r-gc-6{grid-column:6}.sm\:rt-r-gc-7{grid-column:7}.sm\:rt-r-gc-8{grid-column:8}.sm\:rt-r-gc-9{grid-column:9}}@media (min-width: 1024px){.md\:rt-r-gc{grid-column:var(--grid-column-md)}.md\:rt-r-gc-1{grid-column:1}.md\:rt-r-gc-2{grid-column:2}.md\:rt-r-gc-3{grid-column:3}.md\:rt-r-gc-4{grid-column:4}.md\:rt-r-gc-5{grid-column:5}.md\:rt-r-gc-6{grid-column:6}.md\:rt-r-gc-7{grid-column:7}.md\:rt-r-gc-8{grid-column:8}.md\:rt-r-gc-9{grid-column:9}}@media (min-width: 1280px){.lg\:rt-r-gc{grid-column:var(--grid-column-lg)}.lg\:rt-r-gc-1{grid-column:1}.lg\:rt-r-gc-2{grid-column:2}.lg\:rt-r-gc-3{grid-column:3}.lg\:rt-r-gc-4{grid-column:4}.lg\:rt-r-gc-5{grid-column:5}.lg\:rt-r-gc-6{grid-column:6}.lg\:rt-r-gc-7{grid-column:7}.lg\:rt-r-gc-8{grid-column:8}.lg\:rt-r-gc-9{grid-column:9}}@media (min-width: 1640px){.xl\:rt-r-gc{grid-column:var(--grid-column-xl)}.xl\:rt-r-gc-1{grid-column:1}.xl\:rt-r-gc-2{grid-column:2}.xl\:rt-r-gc-3{grid-column:3}.xl\:rt-r-gc-4{grid-column:4}.xl\:rt-r-gc-5{grid-column:5}.xl\:rt-r-gc-6{grid-column:6}.xl\:rt-r-gc-7{grid-column:7}.xl\:rt-r-gc-8{grid-column:8}.xl\:rt-r-gc-9{grid-column:9}}.rt-r-gcs{grid-column-start:var(--grid-column-start)}.rt-r-gcs-1{grid-column-start:1}.rt-r-gcs-2{grid-column-start:2}.rt-r-gcs-3{grid-column-start:3}.rt-r-gcs-4{grid-column-start:4}.rt-r-gcs-5{grid-column-start:5}.rt-r-gcs-6{grid-column-start:6}.rt-r-gcs-7{grid-column-start:7}.rt-r-gcs-8{grid-column-start:8}.rt-r-gcs-9{grid-column-start:9}@media (min-width: 520px){.xs\:rt-r-gcs{grid-column-start:var(--grid-column-start-xs)}.xs\:rt-r-gcs-1{grid-column-start:1}.xs\:rt-r-gcs-2{grid-column-start:2}.xs\:rt-r-gcs-3{grid-column-start:3}.xs\:rt-r-gcs-4{grid-column-start:4}.xs\:rt-r-gcs-5{grid-column-start:5}.xs\:rt-r-gcs-6{grid-column-start:6}.xs\:rt-r-gcs-7{grid-column-start:7}.xs\:rt-r-gcs-8{grid-column-start:8}.xs\:rt-r-gcs-9{grid-column-start:9}}@media (min-width: 768px){.sm\:rt-r-gcs{grid-column-start:var(--grid-column-start-sm)}.sm\:rt-r-gcs-1{grid-column-start:1}.sm\:rt-r-gcs-2{grid-column-start:2}.sm\:rt-r-gcs-3{grid-column-start:3}.sm\:rt-r-gcs-4{grid-column-start:4}.sm\:rt-r-gcs-5{grid-column-start:5}.sm\:rt-r-gcs-6{grid-column-start:6}.sm\:rt-r-gcs-7{grid-column-start:7}.sm\:rt-r-gcs-8{grid-column-start:8}.sm\:rt-r-gcs-9{grid-column-start:9}}@media (min-width: 1024px){.md\:rt-r-gcs{grid-column-start:var(--grid-column-start-md)}.md\:rt-r-gcs-1{grid-column-start:1}.md\:rt-r-gcs-2{grid-column-start:2}.md\:rt-r-gcs-3{grid-column-start:3}.md\:rt-r-gcs-4{grid-column-start:4}.md\:rt-r-gcs-5{grid-column-start:5}.md\:rt-r-gcs-6{grid-column-start:6}.md\:rt-r-gcs-7{grid-column-start:7}.md\:rt-r-gcs-8{grid-column-start:8}.md\:rt-r-gcs-9{grid-column-start:9}}@media (min-width: 1280px){.lg\:rt-r-gcs{grid-column-start:var(--grid-column-start-lg)}.lg\:rt-r-gcs-1{grid-column-start:1}.lg\:rt-r-gcs-2{grid-column-start:2}.lg\:rt-r-gcs-3{grid-column-start:3}.lg\:rt-r-gcs-4{grid-column-start:4}.lg\:rt-r-gcs-5{grid-column-start:5}.lg\:rt-r-gcs-6{grid-column-start:6}.lg\:rt-r-gcs-7{grid-column-start:7}.lg\:rt-r-gcs-8{grid-column-start:8}.lg\:rt-r-gcs-9{grid-column-start:9}}@media (min-width: 1640px){.xl\:rt-r-gcs{grid-column-start:var(--grid-column-start-xl)}.xl\:rt-r-gcs-1{grid-column-start:1}.xl\:rt-r-gcs-2{grid-column-start:2}.xl\:rt-r-gcs-3{grid-column-start:3}.xl\:rt-r-gcs-4{grid-column-start:4}.xl\:rt-r-gcs-5{grid-column-start:5}.xl\:rt-r-gcs-6{grid-column-start:6}.xl\:rt-r-gcs-7{grid-column-start:7}.xl\:rt-r-gcs-8{grid-column-start:8}.xl\:rt-r-gcs-9{grid-column-start:9}}.rt-r-gce{grid-column-end:var(--grid-column-end)}.rt-r-gce-1{grid-column-end:1}.rt-r-gce-2{grid-column-end:2}.rt-r-gce-3{grid-column-end:3}.rt-r-gce-4{grid-column-end:4}.rt-r-gce-5{grid-column-end:5}.rt-r-gce-6{grid-column-end:6}.rt-r-gce-7{grid-column-end:7}.rt-r-gce-8{grid-column-end:8}.rt-r-gce-9{grid-column-end:9}@media (min-width: 520px){.xs\:rt-r-gce{grid-column-end:var(--grid-column-end-xs)}.xs\:rt-r-gce-1{grid-column-end:1}.xs\:rt-r-gce-2{grid-column-end:2}.xs\:rt-r-gce-3{grid-column-end:3}.xs\:rt-r-gce-4{grid-column-end:4}.xs\:rt-r-gce-5{grid-column-end:5}.xs\:rt-r-gce-6{grid-column-end:6}.xs\:rt-r-gce-7{grid-column-end:7}.xs\:rt-r-gce-8{grid-column-end:8}.xs\:rt-r-gce-9{grid-column-end:9}}@media (min-width: 768px){.sm\:rt-r-gce{grid-column-end:var(--grid-column-end-sm)}.sm\:rt-r-gce-1{grid-column-end:1}.sm\:rt-r-gce-2{grid-column-end:2}.sm\:rt-r-gce-3{grid-column-end:3}.sm\:rt-r-gce-4{grid-column-end:4}.sm\:rt-r-gce-5{grid-column-end:5}.sm\:rt-r-gce-6{grid-column-end:6}.sm\:rt-r-gce-7{grid-column-end:7}.sm\:rt-r-gce-8{grid-column-end:8}.sm\:rt-r-gce-9{grid-column-end:9}}@media (min-width: 1024px){.md\:rt-r-gce{grid-column-end:var(--grid-column-end-md)}.md\:rt-r-gce-1{grid-column-end:1}.md\:rt-r-gce-2{grid-column-end:2}.md\:rt-r-gce-3{grid-column-end:3}.md\:rt-r-gce-4{grid-column-end:4}.md\:rt-r-gce-5{grid-column-end:5}.md\:rt-r-gce-6{grid-column-end:6}.md\:rt-r-gce-7{grid-column-end:7}.md\:rt-r-gce-8{grid-column-end:8}.md\:rt-r-gce-9{grid-column-end:9}}@media (min-width: 1280px){.lg\:rt-r-gce{grid-column-end:var(--grid-column-end-lg)}.lg\:rt-r-gce-1{grid-column-end:1}.lg\:rt-r-gce-2{grid-column-end:2}.lg\:rt-r-gce-3{grid-column-end:3}.lg\:rt-r-gce-4{grid-column-end:4}.lg\:rt-r-gce-5{grid-column-end:5}.lg\:rt-r-gce-6{grid-column-end:6}.lg\:rt-r-gce-7{grid-column-end:7}.lg\:rt-r-gce-8{grid-column-end:8}.lg\:rt-r-gce-9{grid-column-end:9}}@media (min-width: 1640px){.xl\:rt-r-gce{grid-column-end:var(--grid-column-end-xl)}.xl\:rt-r-gce-1{grid-column-end:1}.xl\:rt-r-gce-2{grid-column-end:2}.xl\:rt-r-gce-3{grid-column-end:3}.xl\:rt-r-gce-4{grid-column-end:4}.xl\:rt-r-gce-5{grid-column-end:5}.xl\:rt-r-gce-6{grid-column-end:6}.xl\:rt-r-gce-7{grid-column-end:7}.xl\:rt-r-gce-8{grid-column-end:8}.xl\:rt-r-gce-9{grid-column-end:9}}.rt-r-gr{grid-row:var(--grid-row)}.rt-r-gr-1{grid-row:1}.rt-r-gr-2{grid-row:2}.rt-r-gr-3{grid-row:3}.rt-r-gr-4{grid-row:4}.rt-r-gr-5{grid-row:5}.rt-r-gr-6{grid-row:6}.rt-r-gr-7{grid-row:7}.rt-r-gr-8{grid-row:8}.rt-r-gr-9{grid-row:9}@media (min-width: 520px){.xs\:rt-r-gr{grid-row:var(--grid-row-xs)}.xs\:rt-r-gr-1{grid-row:1}.xs\:rt-r-gr-2{grid-row:2}.xs\:rt-r-gr-3{grid-row:3}.xs\:rt-r-gr-4{grid-row:4}.xs\:rt-r-gr-5{grid-row:5}.xs\:rt-r-gr-6{grid-row:6}.xs\:rt-r-gr-7{grid-row:7}.xs\:rt-r-gr-8{grid-row:8}.xs\:rt-r-gr-9{grid-row:9}}@media (min-width: 768px){.sm\:rt-r-gr{grid-row:var(--grid-row-sm)}.sm\:rt-r-gr-1{grid-row:1}.sm\:rt-r-gr-2{grid-row:2}.sm\:rt-r-gr-3{grid-row:3}.sm\:rt-r-gr-4{grid-row:4}.sm\:rt-r-gr-5{grid-row:5}.sm\:rt-r-gr-6{grid-row:6}.sm\:rt-r-gr-7{grid-row:7}.sm\:rt-r-gr-8{grid-row:8}.sm\:rt-r-gr-9{grid-row:9}}@media (min-width: 1024px){.md\:rt-r-gr{grid-row:var(--grid-row-md)}.md\:rt-r-gr-1{grid-row:1}.md\:rt-r-gr-2{grid-row:2}.md\:rt-r-gr-3{grid-row:3}.md\:rt-r-gr-4{grid-row:4}.md\:rt-r-gr-5{grid-row:5}.md\:rt-r-gr-6{grid-row:6}.md\:rt-r-gr-7{grid-row:7}.md\:rt-r-gr-8{grid-row:8}.md\:rt-r-gr-9{grid-row:9}}@media (min-width: 1280px){.lg\:rt-r-gr{grid-row:var(--grid-row-lg)}.lg\:rt-r-gr-1{grid-row:1}.lg\:rt-r-gr-2{grid-row:2}.lg\:rt-r-gr-3{grid-row:3}.lg\:rt-r-gr-4{grid-row:4}.lg\:rt-r-gr-5{grid-row:5}.lg\:rt-r-gr-6{grid-row:6}.lg\:rt-r-gr-7{grid-row:7}.lg\:rt-r-gr-8{grid-row:8}.lg\:rt-r-gr-9{grid-row:9}}@media (min-width: 1640px){.xl\:rt-r-gr{grid-row:var(--grid-row-xl)}.xl\:rt-r-gr-1{grid-row:1}.xl\:rt-r-gr-2{grid-row:2}.xl\:rt-r-gr-3{grid-row:3}.xl\:rt-r-gr-4{grid-row:4}.xl\:rt-r-gr-5{grid-row:5}.xl\:rt-r-gr-6{grid-row:6}.xl\:rt-r-gr-7{grid-row:7}.xl\:rt-r-gr-8{grid-row:8}.xl\:rt-r-gr-9{grid-row:9}}.rt-r-grs{grid-row-start:var(--grid-row-start)}.rt-r-grs-1{grid-row-start:1}.rt-r-grs-2{grid-row-start:2}.rt-r-grs-3{grid-row-start:3}.rt-r-grs-4{grid-row-start:4}.rt-r-grs-5{grid-row-start:5}.rt-r-grs-6{grid-row-start:6}.rt-r-grs-7{grid-row-start:7}.rt-r-grs-8{grid-row-start:8}.rt-r-grs-9{grid-row-start:9}@media (min-width: 520px){.xs\:rt-r-grs{grid-row-start:var(--grid-row-start-xs)}.xs\:rt-r-grs-1{grid-row-start:1}.xs\:rt-r-grs-2{grid-row-start:2}.xs\:rt-r-grs-3{grid-row-start:3}.xs\:rt-r-grs-4{grid-row-start:4}.xs\:rt-r-grs-5{grid-row-start:5}.xs\:rt-r-grs-6{grid-row-start:6}.xs\:rt-r-grs-7{grid-row-start:7}.xs\:rt-r-grs-8{grid-row-start:8}.xs\:rt-r-grs-9{grid-row-start:9}}@media (min-width: 768px){.sm\:rt-r-grs{grid-row-start:var(--grid-row-start-sm)}.sm\:rt-r-grs-1{grid-row-start:1}.sm\:rt-r-grs-2{grid-row-start:2}.sm\:rt-r-grs-3{grid-row-start:3}.sm\:rt-r-grs-4{grid-row-start:4}.sm\:rt-r-grs-5{grid-row-start:5}.sm\:rt-r-grs-6{grid-row-start:6}.sm\:rt-r-grs-7{grid-row-start:7}.sm\:rt-r-grs-8{grid-row-start:8}.sm\:rt-r-grs-9{grid-row-start:9}}@media (min-width: 1024px){.md\:rt-r-grs{grid-row-start:var(--grid-row-start-md)}.md\:rt-r-grs-1{grid-row-start:1}.md\:rt-r-grs-2{grid-row-start:2}.md\:rt-r-grs-3{grid-row-start:3}.md\:rt-r-grs-4{grid-row-start:4}.md\:rt-r-grs-5{grid-row-start:5}.md\:rt-r-grs-6{grid-row-start:6}.md\:rt-r-grs-7{grid-row-start:7}.md\:rt-r-grs-8{grid-row-start:8}.md\:rt-r-grs-9{grid-row-start:9}}@media (min-width: 1280px){.lg\:rt-r-grs{grid-row-start:var(--grid-row-start-lg)}.lg\:rt-r-grs-1{grid-row-start:1}.lg\:rt-r-grs-2{grid-row-start:2}.lg\:rt-r-grs-3{grid-row-start:3}.lg\:rt-r-grs-4{grid-row-start:4}.lg\:rt-r-grs-5{grid-row-start:5}.lg\:rt-r-grs-6{grid-row-start:6}.lg\:rt-r-grs-7{grid-row-start:7}.lg\:rt-r-grs-8{grid-row-start:8}.lg\:rt-r-grs-9{grid-row-start:9}}@media (min-width: 1640px){.xl\:rt-r-grs{grid-row-start:var(--grid-row-start-xl)}.xl\:rt-r-grs-1{grid-row-start:1}.xl\:rt-r-grs-2{grid-row-start:2}.xl\:rt-r-grs-3{grid-row-start:3}.xl\:rt-r-grs-4{grid-row-start:4}.xl\:rt-r-grs-5{grid-row-start:5}.xl\:rt-r-grs-6{grid-row-start:6}.xl\:rt-r-grs-7{grid-row-start:7}.xl\:rt-r-grs-8{grid-row-start:8}.xl\:rt-r-grs-9{grid-row-start:9}}.rt-r-gre{grid-row-end:var(--grid-row-end)}.rt-r-gre-1{grid-row-end:1}.rt-r-gre-2{grid-row-end:2}.rt-r-gre-3{grid-row-end:3}.rt-r-gre-4{grid-row-end:4}.rt-r-gre-5{grid-row-end:5}.rt-r-gre-6{grid-row-end:6}.rt-r-gre-7{grid-row-end:7}.rt-r-gre-8{grid-row-end:8}.rt-r-gre-9{grid-row-end:9}@media (min-width: 520px){.xs\:rt-r-gre{grid-row-end:var(--grid-row-end-xs)}.xs\:rt-r-gre-1{grid-row-end:1}.xs\:rt-r-gre-2{grid-row-end:2}.xs\:rt-r-gre-3{grid-row-end:3}.xs\:rt-r-gre-4{grid-row-end:4}.xs\:rt-r-gre-5{grid-row-end:5}.xs\:rt-r-gre-6{grid-row-end:6}.xs\:rt-r-gre-7{grid-row-end:7}.xs\:rt-r-gre-8{grid-row-end:8}.xs\:rt-r-gre-9{grid-row-end:9}}@media (min-width: 768px){.sm\:rt-r-gre{grid-row-end:var(--grid-row-end-sm)}.sm\:rt-r-gre-1{grid-row-end:1}.sm\:rt-r-gre-2{grid-row-end:2}.sm\:rt-r-gre-3{grid-row-end:3}.sm\:rt-r-gre-4{grid-row-end:4}.sm\:rt-r-gre-5{grid-row-end:5}.sm\:rt-r-gre-6{grid-row-end:6}.sm\:rt-r-gre-7{grid-row-end:7}.sm\:rt-r-gre-8{grid-row-end:8}.sm\:rt-r-gre-9{grid-row-end:9}}@media (min-width: 1024px){.md\:rt-r-gre{grid-row-end:var(--grid-row-end-md)}.md\:rt-r-gre-1{grid-row-end:1}.md\:rt-r-gre-2{grid-row-end:2}.md\:rt-r-gre-3{grid-row-end:3}.md\:rt-r-gre-4{grid-row-end:4}.md\:rt-r-gre-5{grid-row-end:5}.md\:rt-r-gre-6{grid-row-end:6}.md\:rt-r-gre-7{grid-row-end:7}.md\:rt-r-gre-8{grid-row-end:8}.md\:rt-r-gre-9{grid-row-end:9}}@media (min-width: 1280px){.lg\:rt-r-gre{grid-row-end:var(--grid-row-end-lg)}.lg\:rt-r-gre-1{grid-row-end:1}.lg\:rt-r-gre-2{grid-row-end:2}.lg\:rt-r-gre-3{grid-row-end:3}.lg\:rt-r-gre-4{grid-row-end:4}.lg\:rt-r-gre-5{grid-row-end:5}.lg\:rt-r-gre-6{grid-row-end:6}.lg\:rt-r-gre-7{grid-row-end:7}.lg\:rt-r-gre-8{grid-row-end:8}.lg\:rt-r-gre-9{grid-row-end:9}}@media (min-width: 1640px){.xl\:rt-r-gre{grid-row-end:var(--grid-row-end-xl)}.xl\:rt-r-gre-1{grid-row-end:1}.xl\:rt-r-gre-2{grid-row-end:2}.xl\:rt-r-gre-3{grid-row-end:3}.xl\:rt-r-gre-4{grid-row-end:4}.xl\:rt-r-gre-5{grid-row-end:5}.xl\:rt-r-gre-6{grid-row-end:6}.xl\:rt-r-gre-7{grid-row-end:7}.xl\:rt-r-gre-8{grid-row-end:8}.xl\:rt-r-gre-9{grid-row-end:9}}.rt-r-gta{grid-template-areas:var(--grid-template-areas)}@media (min-width: 520px){.xs\:rt-r-gta{grid-template-areas:var(--grid-template-areas-xs)}}@media (min-width: 768px){.sm\:rt-r-gta{grid-template-areas:var(--grid-template-areas-sm)}}@media (min-width: 1024px){.md\:rt-r-gta{grid-template-areas:var(--grid-template-areas-md)}}@media (min-width: 1280px){.lg\:rt-r-gta{grid-template-areas:var(--grid-template-areas-lg)}}@media (min-width: 1640px){.xl\:rt-r-gta{grid-template-areas:var(--grid-template-areas-xl)}}.rt-r-gtc{grid-template-columns:var(--grid-template-columns)}.rt-r-gtc-1{grid-template-columns:minmax(0,1fr)}.rt-r-gtc-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rt-r-gtc-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rt-r-gtc-4{grid-template-columns:repeat(4,minmax(0,1fr))}.rt-r-gtc-5{grid-template-columns:repeat(5,minmax(0,1fr))}.rt-r-gtc-6{grid-template-columns:repeat(6,minmax(0,1fr))}.rt-r-gtc-7{grid-template-columns:repeat(7,minmax(0,1fr))}.rt-r-gtc-8{grid-template-columns:repeat(8,minmax(0,1fr))}.rt-r-gtc-9{grid-template-columns:repeat(9,minmax(0,1fr))}@media (min-width: 520px){.xs\:rt-r-gtc{grid-template-columns:var(--grid-template-columns-xs)}.xs\:rt-r-gtc-1{grid-template-columns:minmax(0,1fr)}.xs\:rt-r-gtc-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xs\:rt-r-gtc-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xs\:rt-r-gtc-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xs\:rt-r-gtc-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xs\:rt-r-gtc-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xs\:rt-r-gtc-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xs\:rt-r-gtc-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xs\:rt-r-gtc-9{grid-template-columns:repeat(9,minmax(0,1fr))}}@media (min-width: 768px){.sm\:rt-r-gtc{grid-template-columns:var(--grid-template-columns-sm)}.sm\:rt-r-gtc-1{grid-template-columns:minmax(0,1fr)}.sm\:rt-r-gtc-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:rt-r-gtc-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:rt-r-gtc-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:rt-r-gtc-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:rt-r-gtc-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:rt-r-gtc-7{grid-template-columns:repeat(7,minmax(0,1fr))}.sm\:rt-r-gtc-8{grid-template-columns:repeat(8,minmax(0,1fr))}.sm\:rt-r-gtc-9{grid-template-columns:repeat(9,minmax(0,1fr))}}@media (min-width: 1024px){.md\:rt-r-gtc{grid-template-columns:var(--grid-template-columns-md)}.md\:rt-r-gtc-1{grid-template-columns:minmax(0,1fr)}.md\:rt-r-gtc-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:rt-r-gtc-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:rt-r-gtc-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:rt-r-gtc-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:rt-r-gtc-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:rt-r-gtc-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:rt-r-gtc-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:rt-r-gtc-9{grid-template-columns:repeat(9,minmax(0,1fr))}}@media (min-width: 1280px){.lg\:rt-r-gtc{grid-template-columns:var(--grid-template-columns-lg)}.lg\:rt-r-gtc-1{grid-template-columns:minmax(0,1fr)}.lg\:rt-r-gtc-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:rt-r-gtc-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:rt-r-gtc-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:rt-r-gtc-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:rt-r-gtc-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:rt-r-gtc-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:rt-r-gtc-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:rt-r-gtc-9{grid-template-columns:repeat(9,minmax(0,1fr))}}@media (min-width: 1640px){.xl\:rt-r-gtc{grid-template-columns:var(--grid-template-columns-xl)}.xl\:rt-r-gtc-1{grid-template-columns:minmax(0,1fr)}.xl\:rt-r-gtc-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:rt-r-gtc-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:rt-r-gtc-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:rt-r-gtc-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:rt-r-gtc-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:rt-r-gtc-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:rt-r-gtc-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:rt-r-gtc-9{grid-template-columns:repeat(9,minmax(0,1fr))}}.rt-r-gtr{grid-template-rows:var(--grid-template-rows)}.rt-r-gtr-1{grid-template-rows:minmax(0,1fr)}.rt-r-gtr-2{grid-template-rows:repeat(2,minmax(0,1fr))}.rt-r-gtr-3{grid-template-rows:repeat(3,minmax(0,1fr))}.rt-r-gtr-4{grid-template-rows:repeat(4,minmax(0,1fr))}.rt-r-gtr-5{grid-template-rows:repeat(5,minmax(0,1fr))}.rt-r-gtr-6{grid-template-rows:repeat(6,minmax(0,1fr))}.rt-r-gtr-7{grid-template-rows:repeat(7,minmax(0,1fr))}.rt-r-gtr-8{grid-template-rows:repeat(8,minmax(0,1fr))}.rt-r-gtr-9{grid-template-rows:repeat(9,minmax(0,1fr))}@media (min-width: 520px){.xs\:rt-r-gtr{grid-template-rows:var(--grid-template-rows-xs)}.xs\:rt-r-gtr-1{grid-template-rows:minmax(0,1fr)}.xs\:rt-r-gtr-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xs\:rt-r-gtr-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xs\:rt-r-gtr-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xs\:rt-r-gtr-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xs\:rt-r-gtr-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xs\:rt-r-gtr-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xs\:rt-r-gtr-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xs\:rt-r-gtr-9{grid-template-rows:repeat(9,minmax(0,1fr))}}@media (min-width: 768px){.sm\:rt-r-gtr{grid-template-rows:var(--grid-template-rows-sm)}.sm\:rt-r-gtr-1{grid-template-rows:minmax(0,1fr)}.sm\:rt-r-gtr-2{grid-template-rows:repeat(2,minmax(0,1fr))}.sm\:rt-r-gtr-3{grid-template-rows:repeat(3,minmax(0,1fr))}.sm\:rt-r-gtr-4{grid-template-rows:repeat(4,minmax(0,1fr))}.sm\:rt-r-gtr-5{grid-template-rows:repeat(5,minmax(0,1fr))}.sm\:rt-r-gtr-6{grid-template-rows:repeat(6,minmax(0,1fr))}.sm\:rt-r-gtr-7{grid-template-rows:repeat(7,minmax(0,1fr))}.sm\:rt-r-gtr-8{grid-template-rows:repeat(8,minmax(0,1fr))}.sm\:rt-r-gtr-9{grid-template-rows:repeat(9,minmax(0,1fr))}}@media (min-width: 1024px){.md\:rt-r-gtr{grid-template-rows:var(--grid-template-rows-md)}.md\:rt-r-gtr-1{grid-template-rows:minmax(0,1fr)}.md\:rt-r-gtr-2{grid-template-rows:repeat(2,minmax(0,1fr))}.md\:rt-r-gtr-3{grid-template-rows:repeat(3,minmax(0,1fr))}.md\:rt-r-gtr-4{grid-template-rows:repeat(4,minmax(0,1fr))}.md\:rt-r-gtr-5{grid-template-rows:repeat(5,minmax(0,1fr))}.md\:rt-r-gtr-6{grid-template-rows:repeat(6,minmax(0,1fr))}.md\:rt-r-gtr-7{grid-template-rows:repeat(7,minmax(0,1fr))}.md\:rt-r-gtr-8{grid-template-rows:repeat(8,minmax(0,1fr))}.md\:rt-r-gtr-9{grid-template-rows:repeat(9,minmax(0,1fr))}}@media (min-width: 1280px){.lg\:rt-r-gtr{grid-template-rows:var(--grid-template-rows-lg)}.lg\:rt-r-gtr-1{grid-template-rows:minmax(0,1fr)}.lg\:rt-r-gtr-2{grid-template-rows:repeat(2,minmax(0,1fr))}.lg\:rt-r-gtr-3{grid-template-rows:repeat(3,minmax(0,1fr))}.lg\:rt-r-gtr-4{grid-template-rows:repeat(4,minmax(0,1fr))}.lg\:rt-r-gtr-5{grid-template-rows:repeat(5,minmax(0,1fr))}.lg\:rt-r-gtr-6{grid-template-rows:repeat(6,minmax(0,1fr))}.lg\:rt-r-gtr-7{grid-template-rows:repeat(7,minmax(0,1fr))}.lg\:rt-r-gtr-8{grid-template-rows:repeat(8,minmax(0,1fr))}.lg\:rt-r-gtr-9{grid-template-rows:repeat(9,minmax(0,1fr))}}@media (min-width: 1640px){.xl\:rt-r-gtr{grid-template-rows:var(--grid-template-rows-xl)}.xl\:rt-r-gtr-1{grid-template-rows:minmax(0,1fr)}.xl\:rt-r-gtr-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xl\:rt-r-gtr-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xl\:rt-r-gtr-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xl\:rt-r-gtr-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xl\:rt-r-gtr-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xl\:rt-r-gtr-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xl\:rt-r-gtr-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xl\:rt-r-gtr-9{grid-template-rows:repeat(9,minmax(0,1fr))}}.rt-r-h{height:var(--height)}@media (min-width: 520px){.xs\:rt-r-h{height:var(--height-xs)}}@media (min-width: 768px){.sm\:rt-r-h{height:var(--height-sm)}}@media (min-width: 1024px){.md\:rt-r-h{height:var(--height-md)}}@media (min-width: 1280px){.lg\:rt-r-h{height:var(--height-lg)}}@media (min-width: 1640px){.xl\:rt-r-h{height:var(--height-xl)}}.rt-r-min-h{min-height:var(--min-height)}@media (min-width: 520px){.xs\:rt-r-min-h{min-height:var(--min-height-xs)}}@media (min-width: 768px){.sm\:rt-r-min-h{min-height:var(--min-height-sm)}}@media (min-width: 1024px){.md\:rt-r-min-h{min-height:var(--min-height-md)}}@media (min-width: 1280px){.lg\:rt-r-min-h{min-height:var(--min-height-lg)}}@media (min-width: 1640px){.xl\:rt-r-min-h{min-height:var(--min-height-xl)}}.rt-r-max-h{max-height:var(--max-height)}@media (min-width: 520px){.xs\:rt-r-max-h{max-height:var(--max-height-xs)}}@media (min-width: 768px){.sm\:rt-r-max-h{max-height:var(--max-height-sm)}}@media (min-width: 1024px){.md\:rt-r-max-h{max-height:var(--max-height-md)}}@media (min-width: 1280px){.lg\:rt-r-max-h{max-height:var(--max-height-lg)}}@media (min-width: 1640px){.xl\:rt-r-max-h{max-height:var(--max-height-xl)}}.rt-r-inset{inset:var(--inset)}.rt-r-inset-0{top:0;right:0;bottom:0;left:0}.rt-r-inset-1{inset:var(--space-1)}.rt-r-inset-2{inset:var(--space-2)}.rt-r-inset-3{inset:var(--space-3)}.rt-r-inset-4{inset:var(--space-4)}.rt-r-inset-5{inset:var(--space-5)}.rt-r-inset-6{inset:var(--space-6)}.rt-r-inset-7{inset:var(--space-7)}.rt-r-inset-8{inset:var(--space-8)}.rt-r-inset-9{inset:var(--space-9)}@media (min-width: 520px){.xs\:rt-r-inset{inset:var(--inset-xs)}.xs\:rt-r-inset-0{top:0;right:0;bottom:0;left:0}.xs\:rt-r-inset-1{inset:var(--space-1)}.xs\:rt-r-inset-2{inset:var(--space-2)}.xs\:rt-r-inset-3{inset:var(--space-3)}.xs\:rt-r-inset-4{inset:var(--space-4)}.xs\:rt-r-inset-5{inset:var(--space-5)}.xs\:rt-r-inset-6{inset:var(--space-6)}.xs\:rt-r-inset-7{inset:var(--space-7)}.xs\:rt-r-inset-8{inset:var(--space-8)}.xs\:rt-r-inset-9{inset:var(--space-9)}}@media (min-width: 768px){.sm\:rt-r-inset{inset:var(--inset-sm)}.sm\:rt-r-inset-0{top:0;right:0;bottom:0;left:0}.sm\:rt-r-inset-1{inset:var(--space-1)}.sm\:rt-r-inset-2{inset:var(--space-2)}.sm\:rt-r-inset-3{inset:var(--space-3)}.sm\:rt-r-inset-4{inset:var(--space-4)}.sm\:rt-r-inset-5{inset:var(--space-5)}.sm\:rt-r-inset-6{inset:var(--space-6)}.sm\:rt-r-inset-7{inset:var(--space-7)}.sm\:rt-r-inset-8{inset:var(--space-8)}.sm\:rt-r-inset-9{inset:var(--space-9)}}@media (min-width: 1024px){.md\:rt-r-inset{inset:var(--inset-md)}.md\:rt-r-inset-0{top:0;right:0;bottom:0;left:0}.md\:rt-r-inset-1{inset:var(--space-1)}.md\:rt-r-inset-2{inset:var(--space-2)}.md\:rt-r-inset-3{inset:var(--space-3)}.md\:rt-r-inset-4{inset:var(--space-4)}.md\:rt-r-inset-5{inset:var(--space-5)}.md\:rt-r-inset-6{inset:var(--space-6)}.md\:rt-r-inset-7{inset:var(--space-7)}.md\:rt-r-inset-8{inset:var(--space-8)}.md\:rt-r-inset-9{inset:var(--space-9)}}@media (min-width: 1280px){.lg\:rt-r-inset{inset:var(--inset-lg)}.lg\:rt-r-inset-0{top:0;right:0;bottom:0;left:0}.lg\:rt-r-inset-1{inset:var(--space-1)}.lg\:rt-r-inset-2{inset:var(--space-2)}.lg\:rt-r-inset-3{inset:var(--space-3)}.lg\:rt-r-inset-4{inset:var(--space-4)}.lg\:rt-r-inset-5{inset:var(--space-5)}.lg\:rt-r-inset-6{inset:var(--space-6)}.lg\:rt-r-inset-7{inset:var(--space-7)}.lg\:rt-r-inset-8{inset:var(--space-8)}.lg\:rt-r-inset-9{inset:var(--space-9)}}@media (min-width: 1640px){.xl\:rt-r-inset{inset:var(--inset-xl)}.xl\:rt-r-inset-0{top:0;right:0;bottom:0;left:0}.xl\:rt-r-inset-1{inset:var(--space-1)}.xl\:rt-r-inset-2{inset:var(--space-2)}.xl\:rt-r-inset-3{inset:var(--space-3)}.xl\:rt-r-inset-4{inset:var(--space-4)}.xl\:rt-r-inset-5{inset:var(--space-5)}.xl\:rt-r-inset-6{inset:var(--space-6)}.xl\:rt-r-inset-7{inset:var(--space-7)}.xl\:rt-r-inset-8{inset:var(--space-8)}.xl\:rt-r-inset-9{inset:var(--space-9)}}.rt-r-top{top:var(--top)}.rt-r-top-0{top:0}.rt-r-top-1{top:var(--space-1)}.rt-r-top-2{top:var(--space-2)}.rt-r-top-3{top:var(--space-3)}.rt-r-top-4{top:var(--space-4)}.rt-r-top-5{top:var(--space-5)}.rt-r-top-6{top:var(--space-6)}.rt-r-top-7{top:var(--space-7)}.rt-r-top-8{top:var(--space-8)}.rt-r-top-9{top:var(--space-9)}@media (min-width: 520px){.xs\:rt-r-top{top:var(--top-xs)}.xs\:rt-r-top-0{top:0}.xs\:rt-r-top-1{top:var(--space-1)}.xs\:rt-r-top-2{top:var(--space-2)}.xs\:rt-r-top-3{top:var(--space-3)}.xs\:rt-r-top-4{top:var(--space-4)}.xs\:rt-r-top-5{top:var(--space-5)}.xs\:rt-r-top-6{top:var(--space-6)}.xs\:rt-r-top-7{top:var(--space-7)}.xs\:rt-r-top-8{top:var(--space-8)}.xs\:rt-r-top-9{top:var(--space-9)}}@media (min-width: 768px){.sm\:rt-r-top{top:var(--top-sm)}.sm\:rt-r-top-0{top:0}.sm\:rt-r-top-1{top:var(--space-1)}.sm\:rt-r-top-2{top:var(--space-2)}.sm\:rt-r-top-3{top:var(--space-3)}.sm\:rt-r-top-4{top:var(--space-4)}.sm\:rt-r-top-5{top:var(--space-5)}.sm\:rt-r-top-6{top:var(--space-6)}.sm\:rt-r-top-7{top:var(--space-7)}.sm\:rt-r-top-8{top:var(--space-8)}.sm\:rt-r-top-9{top:var(--space-9)}}@media (min-width: 1024px){.md\:rt-r-top{top:var(--top-md)}.md\:rt-r-top-0{top:0}.md\:rt-r-top-1{top:var(--space-1)}.md\:rt-r-top-2{top:var(--space-2)}.md\:rt-r-top-3{top:var(--space-3)}.md\:rt-r-top-4{top:var(--space-4)}.md\:rt-r-top-5{top:var(--space-5)}.md\:rt-r-top-6{top:var(--space-6)}.md\:rt-r-top-7{top:var(--space-7)}.md\:rt-r-top-8{top:var(--space-8)}.md\:rt-r-top-9{top:var(--space-9)}}@media (min-width: 1280px){.lg\:rt-r-top{top:var(--top-lg)}.lg\:rt-r-top-0{top:0}.lg\:rt-r-top-1{top:var(--space-1)}.lg\:rt-r-top-2{top:var(--space-2)}.lg\:rt-r-top-3{top:var(--space-3)}.lg\:rt-r-top-4{top:var(--space-4)}.lg\:rt-r-top-5{top:var(--space-5)}.lg\:rt-r-top-6{top:var(--space-6)}.lg\:rt-r-top-7{top:var(--space-7)}.lg\:rt-r-top-8{top:var(--space-8)}.lg\:rt-r-top-9{top:var(--space-9)}}@media (min-width: 1640px){.xl\:rt-r-top{top:var(--top-xl)}.xl\:rt-r-top-0{top:0}.xl\:rt-r-top-1{top:var(--space-1)}.xl\:rt-r-top-2{top:var(--space-2)}.xl\:rt-r-top-3{top:var(--space-3)}.xl\:rt-r-top-4{top:var(--space-4)}.xl\:rt-r-top-5{top:var(--space-5)}.xl\:rt-r-top-6{top:var(--space-6)}.xl\:rt-r-top-7{top:var(--space-7)}.xl\:rt-r-top-8{top:var(--space-8)}.xl\:rt-r-top-9{top:var(--space-9)}}.rt-r-right{right:var(--right)}.rt-r-right-0{right:0}.rt-r-right-1{right:var(--space-1)}.rt-r-right-2{right:var(--space-2)}.rt-r-right-3{right:var(--space-3)}.rt-r-right-4{right:var(--space-4)}.rt-r-right-5{right:var(--space-5)}.rt-r-right-6{right:var(--space-6)}.rt-r-right-7{right:var(--space-7)}.rt-r-right-8{right:var(--space-8)}.rt-r-right-9{right:var(--space-9)}@media (min-width: 520px){.xs\:rt-r-right{right:var(--right-xs)}.xs\:rt-r-right-0{right:0}.xs\:rt-r-right-1{right:var(--space-1)}.xs\:rt-r-right-2{right:var(--space-2)}.xs\:rt-r-right-3{right:var(--space-3)}.xs\:rt-r-right-4{right:var(--space-4)}.xs\:rt-r-right-5{right:var(--space-5)}.xs\:rt-r-right-6{right:var(--space-6)}.xs\:rt-r-right-7{right:var(--space-7)}.xs\:rt-r-right-8{right:var(--space-8)}.xs\:rt-r-right-9{right:var(--space-9)}}@media (min-width: 768px){.sm\:rt-r-right{right:var(--right-sm)}.sm\:rt-r-right-0{right:0}.sm\:rt-r-right-1{right:var(--space-1)}.sm\:rt-r-right-2{right:var(--space-2)}.sm\:rt-r-right-3{right:var(--space-3)}.sm\:rt-r-right-4{right:var(--space-4)}.sm\:rt-r-right-5{right:var(--space-5)}.sm\:rt-r-right-6{right:var(--space-6)}.sm\:rt-r-right-7{right:var(--space-7)}.sm\:rt-r-right-8{right:var(--space-8)}.sm\:rt-r-right-9{right:var(--space-9)}}@media (min-width: 1024px){.md\:rt-r-right{right:var(--right-md)}.md\:rt-r-right-0{right:0}.md\:rt-r-right-1{right:var(--space-1)}.md\:rt-r-right-2{right:var(--space-2)}.md\:rt-r-right-3{right:var(--space-3)}.md\:rt-r-right-4{right:var(--space-4)}.md\:rt-r-right-5{right:var(--space-5)}.md\:rt-r-right-6{right:var(--space-6)}.md\:rt-r-right-7{right:var(--space-7)}.md\:rt-r-right-8{right:var(--space-8)}.md\:rt-r-right-9{right:var(--space-9)}}@media (min-width: 1280px){.lg\:rt-r-right{right:var(--right-lg)}.lg\:rt-r-right-0{right:0}.lg\:rt-r-right-1{right:var(--space-1)}.lg\:rt-r-right-2{right:var(--space-2)}.lg\:rt-r-right-3{right:var(--space-3)}.lg\:rt-r-right-4{right:var(--space-4)}.lg\:rt-r-right-5{right:var(--space-5)}.lg\:rt-r-right-6{right:var(--space-6)}.lg\:rt-r-right-7{right:var(--space-7)}.lg\:rt-r-right-8{right:var(--space-8)}.lg\:rt-r-right-9{right:var(--space-9)}}@media (min-width: 1640px){.xl\:rt-r-right{right:var(--right-xl)}.xl\:rt-r-right-0{right:0}.xl\:rt-r-right-1{right:var(--space-1)}.xl\:rt-r-right-2{right:var(--space-2)}.xl\:rt-r-right-3{right:var(--space-3)}.xl\:rt-r-right-4{right:var(--space-4)}.xl\:rt-r-right-5{right:var(--space-5)}.xl\:rt-r-right-6{right:var(--space-6)}.xl\:rt-r-right-7{right:var(--space-7)}.xl\:rt-r-right-8{right:var(--space-8)}.xl\:rt-r-right-9{right:var(--space-9)}}.rt-r-bottom{bottom:var(--bottom)}.rt-r-bottom-0{bottom:0}.rt-r-bottom-1{bottom:var(--space-1)}.rt-r-bottom-2{bottom:var(--space-2)}.rt-r-bottom-3{bottom:var(--space-3)}.rt-r-bottom-4{bottom:var(--space-4)}.rt-r-bottom-5{bottom:var(--space-5)}.rt-r-bottom-6{bottom:var(--space-6)}.rt-r-bottom-7{bottom:var(--space-7)}.rt-r-bottom-8{bottom:var(--space-8)}.rt-r-bottom-9{bottom:var(--space-9)}@media (min-width: 520px){.xs\:rt-r-bottom{bottom:var(--bottom-xs)}.xs\:rt-r-bottom-0{bottom:0}.xs\:rt-r-bottom-1{bottom:var(--space-1)}.xs\:rt-r-bottom-2{bottom:var(--space-2)}.xs\:rt-r-bottom-3{bottom:var(--space-3)}.xs\:rt-r-bottom-4{bottom:var(--space-4)}.xs\:rt-r-bottom-5{bottom:var(--space-5)}.xs\:rt-r-bottom-6{bottom:var(--space-6)}.xs\:rt-r-bottom-7{bottom:var(--space-7)}.xs\:rt-r-bottom-8{bottom:var(--space-8)}.xs\:rt-r-bottom-9{bottom:var(--space-9)}}@media (min-width: 768px){.sm\:rt-r-bottom{bottom:var(--bottom-sm)}.sm\:rt-r-bottom-0{bottom:0}.sm\:rt-r-bottom-1{bottom:var(--space-1)}.sm\:rt-r-bottom-2{bottom:var(--space-2)}.sm\:rt-r-bottom-3{bottom:var(--space-3)}.sm\:rt-r-bottom-4{bottom:var(--space-4)}.sm\:rt-r-bottom-5{bottom:var(--space-5)}.sm\:rt-r-bottom-6{bottom:var(--space-6)}.sm\:rt-r-bottom-7{bottom:var(--space-7)}.sm\:rt-r-bottom-8{bottom:var(--space-8)}.sm\:rt-r-bottom-9{bottom:var(--space-9)}}@media (min-width: 1024px){.md\:rt-r-bottom{bottom:var(--bottom-md)}.md\:rt-r-bottom-0{bottom:0}.md\:rt-r-bottom-1{bottom:var(--space-1)}.md\:rt-r-bottom-2{bottom:var(--space-2)}.md\:rt-r-bottom-3{bottom:var(--space-3)}.md\:rt-r-bottom-4{bottom:var(--space-4)}.md\:rt-r-bottom-5{bottom:var(--space-5)}.md\:rt-r-bottom-6{bottom:var(--space-6)}.md\:rt-r-bottom-7{bottom:var(--space-7)}.md\:rt-r-bottom-8{bottom:var(--space-8)}.md\:rt-r-bottom-9{bottom:var(--space-9)}}@media (min-width: 1280px){.lg\:rt-r-bottom{bottom:var(--bottom-lg)}.lg\:rt-r-bottom-0{bottom:0}.lg\:rt-r-bottom-1{bottom:var(--space-1)}.lg\:rt-r-bottom-2{bottom:var(--space-2)}.lg\:rt-r-bottom-3{bottom:var(--space-3)}.lg\:rt-r-bottom-4{bottom:var(--space-4)}.lg\:rt-r-bottom-5{bottom:var(--space-5)}.lg\:rt-r-bottom-6{bottom:var(--space-6)}.lg\:rt-r-bottom-7{bottom:var(--space-7)}.lg\:rt-r-bottom-8{bottom:var(--space-8)}.lg\:rt-r-bottom-9{bottom:var(--space-9)}}@media (min-width: 1640px){.xl\:rt-r-bottom{bottom:var(--bottom-xl)}.xl\:rt-r-bottom-0{bottom:0}.xl\:rt-r-bottom-1{bottom:var(--space-1)}.xl\:rt-r-bottom-2{bottom:var(--space-2)}.xl\:rt-r-bottom-3{bottom:var(--space-3)}.xl\:rt-r-bottom-4{bottom:var(--space-4)}.xl\:rt-r-bottom-5{bottom:var(--space-5)}.xl\:rt-r-bottom-6{bottom:var(--space-6)}.xl\:rt-r-bottom-7{bottom:var(--space-7)}.xl\:rt-r-bottom-8{bottom:var(--space-8)}.xl\:rt-r-bottom-9{bottom:var(--space-9)}}.rt-r-left{left:var(--left)}.rt-r-left-0{left:0}.rt-r-left-1{left:var(--space-1)}.rt-r-left-2{left:var(--space-2)}.rt-r-left-3{left:var(--space-3)}.rt-r-left-4{left:var(--space-4)}.rt-r-left-5{left:var(--space-5)}.rt-r-left-6{left:var(--space-6)}.rt-r-left-7{left:var(--space-7)}.rt-r-left-8{left:var(--space-8)}.rt-r-left-9{left:var(--space-9)}@media (min-width: 520px){.xs\:rt-r-left{left:var(--left-xs)}.xs\:rt-r-left-0{left:0}.xs\:rt-r-left-1{left:var(--space-1)}.xs\:rt-r-left-2{left:var(--space-2)}.xs\:rt-r-left-3{left:var(--space-3)}.xs\:rt-r-left-4{left:var(--space-4)}.xs\:rt-r-left-5{left:var(--space-5)}.xs\:rt-r-left-6{left:var(--space-6)}.xs\:rt-r-left-7{left:var(--space-7)}.xs\:rt-r-left-8{left:var(--space-8)}.xs\:rt-r-left-9{left:var(--space-9)}}@media (min-width: 768px){.sm\:rt-r-left{left:var(--left-sm)}.sm\:rt-r-left-0{left:0}.sm\:rt-r-left-1{left:var(--space-1)}.sm\:rt-r-left-2{left:var(--space-2)}.sm\:rt-r-left-3{left:var(--space-3)}.sm\:rt-r-left-4{left:var(--space-4)}.sm\:rt-r-left-5{left:var(--space-5)}.sm\:rt-r-left-6{left:var(--space-6)}.sm\:rt-r-left-7{left:var(--space-7)}.sm\:rt-r-left-8{left:var(--space-8)}.sm\:rt-r-left-9{left:var(--space-9)}}@media (min-width: 1024px){.md\:rt-r-left{left:var(--left-md)}.md\:rt-r-left-0{left:0}.md\:rt-r-left-1{left:var(--space-1)}.md\:rt-r-left-2{left:var(--space-2)}.md\:rt-r-left-3{left:var(--space-3)}.md\:rt-r-left-4{left:var(--space-4)}.md\:rt-r-left-5{left:var(--space-5)}.md\:rt-r-left-6{left:var(--space-6)}.md\:rt-r-left-7{left:var(--space-7)}.md\:rt-r-left-8{left:var(--space-8)}.md\:rt-r-left-9{left:var(--space-9)}}@media (min-width: 1280px){.lg\:rt-r-left{left:var(--left-lg)}.lg\:rt-r-left-0{left:0}.lg\:rt-r-left-1{left:var(--space-1)}.lg\:rt-r-left-2{left:var(--space-2)}.lg\:rt-r-left-3{left:var(--space-3)}.lg\:rt-r-left-4{left:var(--space-4)}.lg\:rt-r-left-5{left:var(--space-5)}.lg\:rt-r-left-6{left:var(--space-6)}.lg\:rt-r-left-7{left:var(--space-7)}.lg\:rt-r-left-8{left:var(--space-8)}.lg\:rt-r-left-9{left:var(--space-9)}}@media (min-width: 1640px){.xl\:rt-r-left{left:var(--left-xl)}.xl\:rt-r-left-0{left:0}.xl\:rt-r-left-1{left:var(--space-1)}.xl\:rt-r-left-2{left:var(--space-2)}.xl\:rt-r-left-3{left:var(--space-3)}.xl\:rt-r-left-4{left:var(--space-4)}.xl\:rt-r-left-5{left:var(--space-5)}.xl\:rt-r-left-6{left:var(--space-6)}.xl\:rt-r-left-7{left:var(--space-7)}.xl\:rt-r-left-8{left:var(--space-8)}.xl\:rt-r-left-9{left:var(--space-9)}}.rt-r-jc-start{justify-content:flex-start}.rt-r-jc-center{justify-content:center}.rt-r-jc-end{justify-content:flex-end}.rt-r-jc-space-between{justify-content:space-between}@media (min-width: 520px){.xs\:rt-r-jc-start{justify-content:flex-start}.xs\:rt-r-jc-center{justify-content:center}.xs\:rt-r-jc-end{justify-content:flex-end}.xs\:rt-r-jc-space-between{justify-content:space-between}}@media (min-width: 768px){.sm\:rt-r-jc-start{justify-content:flex-start}.sm\:rt-r-jc-center{justify-content:center}.sm\:rt-r-jc-end{justify-content:flex-end}.sm\:rt-r-jc-space-between{justify-content:space-between}}@media (min-width: 1024px){.md\:rt-r-jc-start{justify-content:flex-start}.md\:rt-r-jc-center{justify-content:center}.md\:rt-r-jc-end{justify-content:flex-end}.md\:rt-r-jc-space-between{justify-content:space-between}}@media (min-width: 1280px){.lg\:rt-r-jc-start{justify-content:flex-start}.lg\:rt-r-jc-center{justify-content:center}.lg\:rt-r-jc-end{justify-content:flex-end}.lg\:rt-r-jc-space-between{justify-content:space-between}}@media (min-width: 1640px){.xl\:rt-r-jc-start{justify-content:flex-start}.xl\:rt-r-jc-center{justify-content:center}.xl\:rt-r-jc-end{justify-content:flex-end}.xl\:rt-r-jc-space-between{justify-content:space-between}}.rt-r-m,.rt-r-m-0,.rt-r-m-1,.rt-r-m-2,.rt-r-m-3,.rt-r-m-4,.rt-r-m-5,.rt-r-m-6,.rt-r-m-7,.rt-r-m-8,.rt-r-m-9,.-rt-r-m-1,.-rt-r-m-2,.-rt-r-m-3,.-rt-r-m-4,.-rt-r-m-5,.-rt-r-m-6,.-rt-r-m-7,.-rt-r-m-8,.-rt-r-m-9{margin-top:var(--margin-top-override, var(--margin-top));margin-right:var(--margin-right-override, var(--margin-right));margin-bottom:var(--margin-bottom-override, var(--margin-bottom));margin-left:var(--margin-left-override, var(--margin-left))}.rt-r-m{--margin-top: var(--m);--margin-right: var(--m);--margin-bottom: var(--m);--margin-left: var(--m) }.rt-r-m-0{--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px}.rt-r-m-1{--margin-top: var(--space-1);--margin-right: var(--space-1);--margin-bottom: var(--space-1);--margin-left: var(--space-1)}.rt-r-m-2{--margin-top: var(--space-2);--margin-right: var(--space-2);--margin-bottom: var(--space-2);--margin-left: var(--space-2)}.rt-r-m-3{--margin-top: var(--space-3);--margin-right: var(--space-3);--margin-bottom: var(--space-3);--margin-left: var(--space-3)}.rt-r-m-4{--margin-top: var(--space-4);--margin-right: var(--space-4);--margin-bottom: var(--space-4);--margin-left: var(--space-4)}.rt-r-m-5{--margin-top: var(--space-5);--margin-right: var(--space-5);--margin-bottom: var(--space-5);--margin-left: var(--space-5)}.rt-r-m-6{--margin-top: var(--space-6);--margin-right: var(--space-6);--margin-bottom: var(--space-6);--margin-left: var(--space-6)}.rt-r-m-7{--margin-top: var(--space-7);--margin-right: var(--space-7);--margin-bottom: var(--space-7);--margin-left: var(--space-7)}.rt-r-m-8{--margin-top: var(--space-8);--margin-right: var(--space-8);--margin-bottom: var(--space-8);--margin-left: var(--space-8)}.rt-r-m-9{--margin-top: var(--space-9);--margin-right: var(--space-9);--margin-bottom: var(--space-9);--margin-left: var(--space-9)}.-rt-r-m-1{--margin-top: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1));--margin-left: calc(-1 * var(--space-1))}.-rt-r-m-2{--margin-top: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2));--margin-left: calc(-1 * var(--space-2))}.-rt-r-m-3{--margin-top: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3));--margin-left: calc(-1 * var(--space-3))}.-rt-r-m-4{--margin-top: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4));--margin-left: calc(-1 * var(--space-4))}.-rt-r-m-5{--margin-top: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5));--margin-left: calc(-1 * var(--space-5))}.-rt-r-m-6{--margin-top: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6));--margin-left: calc(-1 * var(--space-6))}.-rt-r-m-7{--margin-top: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7));--margin-left: calc(-1 * var(--space-7))}.-rt-r-m-8{--margin-top: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8));--margin-left: calc(-1 * var(--space-8))}.-rt-r-m-9{--margin-top: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9));--margin-left: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-m,.xs\:rt-r-m-0,.xs\:rt-r-m-1,.xs\:rt-r-m-2,.xs\:rt-r-m-3,.xs\:rt-r-m-4,.xs\:rt-r-m-5,.xs\:rt-r-m-6,.xs\:rt-r-m-7,.xs\:rt-r-m-8,.xs\:rt-r-m-9,.xs\:-rt-r-m-1,.xs\:-rt-r-m-2,.xs\:-rt-r-m-3,.xs\:-rt-r-m-4,.xs\:-rt-r-m-5,.xs\:-rt-r-m-6,.xs\:-rt-r-m-7,.xs\:-rt-r-m-8,.xs\:-rt-r-m-9{margin-top:var(--margin-top-override, var(--margin-top));margin-right:var(--margin-right-override, var(--margin-right));margin-bottom:var(--margin-bottom-override, var(--margin-bottom));margin-left:var(--margin-left-override, var(--margin-left))}.xs\:rt-r-m{--margin-top: var(--m-xs);--margin-right: var(--m-xs);--margin-bottom: var(--m-xs);--margin-left: var(--m-xs) }.xs\:rt-r-m-0{--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px}.xs\:rt-r-m-1{--margin-top: var(--space-1);--margin-right: var(--space-1);--margin-bottom: var(--space-1);--margin-left: var(--space-1)}.xs\:rt-r-m-2{--margin-top: var(--space-2);--margin-right: var(--space-2);--margin-bottom: var(--space-2);--margin-left: var(--space-2)}.xs\:rt-r-m-3{--margin-top: var(--space-3);--margin-right: var(--space-3);--margin-bottom: var(--space-3);--margin-left: var(--space-3)}.xs\:rt-r-m-4{--margin-top: var(--space-4);--margin-right: var(--space-4);--margin-bottom: var(--space-4);--margin-left: var(--space-4)}.xs\:rt-r-m-5{--margin-top: var(--space-5);--margin-right: var(--space-5);--margin-bottom: var(--space-5);--margin-left: var(--space-5)}.xs\:rt-r-m-6{--margin-top: var(--space-6);--margin-right: var(--space-6);--margin-bottom: var(--space-6);--margin-left: var(--space-6)}.xs\:rt-r-m-7{--margin-top: var(--space-7);--margin-right: var(--space-7);--margin-bottom: var(--space-7);--margin-left: var(--space-7)}.xs\:rt-r-m-8{--margin-top: var(--space-8);--margin-right: var(--space-8);--margin-bottom: var(--space-8);--margin-left: var(--space-8)}.xs\:rt-r-m-9{--margin-top: var(--space-9);--margin-right: var(--space-9);--margin-bottom: var(--space-9);--margin-left: var(--space-9)}.xs\:-rt-r-m-1{--margin-top: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1));--margin-left: calc(-1 * var(--space-1))}.xs\:-rt-r-m-2{--margin-top: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2));--margin-left: calc(-1 * var(--space-2))}.xs\:-rt-r-m-3{--margin-top: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3));--margin-left: calc(-1 * var(--space-3))}.xs\:-rt-r-m-4{--margin-top: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4));--margin-left: calc(-1 * var(--space-4))}.xs\:-rt-r-m-5{--margin-top: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5));--margin-left: calc(-1 * var(--space-5))}.xs\:-rt-r-m-6{--margin-top: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6));--margin-left: calc(-1 * var(--space-6))}.xs\:-rt-r-m-7{--margin-top: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7));--margin-left: calc(-1 * var(--space-7))}.xs\:-rt-r-m-8{--margin-top: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8));--margin-left: calc(-1 * var(--space-8))}.xs\:-rt-r-m-9{--margin-top: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9));--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-m,.sm\:rt-r-m-0,.sm\:rt-r-m-1,.sm\:rt-r-m-2,.sm\:rt-r-m-3,.sm\:rt-r-m-4,.sm\:rt-r-m-5,.sm\:rt-r-m-6,.sm\:rt-r-m-7,.sm\:rt-r-m-8,.sm\:rt-r-m-9,.sm\:-rt-r-m-1,.sm\:-rt-r-m-2,.sm\:-rt-r-m-3,.sm\:-rt-r-m-4,.sm\:-rt-r-m-5,.sm\:-rt-r-m-6,.sm\:-rt-r-m-7,.sm\:-rt-r-m-8,.sm\:-rt-r-m-9{margin-top:var(--margin-top-override, var(--margin-top));margin-right:var(--margin-right-override, var(--margin-right));margin-bottom:var(--margin-bottom-override, var(--margin-bottom));margin-left:var(--margin-left-override, var(--margin-left))}.sm\:rt-r-m{--margin-top: var(--m-sm);--margin-right: var(--m-sm);--margin-bottom: var(--m-sm);--margin-left: var(--m-sm) }.sm\:rt-r-m-0{--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px}.sm\:rt-r-m-1{--margin-top: var(--space-1);--margin-right: var(--space-1);--margin-bottom: var(--space-1);--margin-left: var(--space-1)}.sm\:rt-r-m-2{--margin-top: var(--space-2);--margin-right: var(--space-2);--margin-bottom: var(--space-2);--margin-left: var(--space-2)}.sm\:rt-r-m-3{--margin-top: var(--space-3);--margin-right: var(--space-3);--margin-bottom: var(--space-3);--margin-left: var(--space-3)}.sm\:rt-r-m-4{--margin-top: var(--space-4);--margin-right: var(--space-4);--margin-bottom: var(--space-4);--margin-left: var(--space-4)}.sm\:rt-r-m-5{--margin-top: var(--space-5);--margin-right: var(--space-5);--margin-bottom: var(--space-5);--margin-left: var(--space-5)}.sm\:rt-r-m-6{--margin-top: var(--space-6);--margin-right: var(--space-6);--margin-bottom: var(--space-6);--margin-left: var(--space-6)}.sm\:rt-r-m-7{--margin-top: var(--space-7);--margin-right: var(--space-7);--margin-bottom: var(--space-7);--margin-left: var(--space-7)}.sm\:rt-r-m-8{--margin-top: var(--space-8);--margin-right: var(--space-8);--margin-bottom: var(--space-8);--margin-left: var(--space-8)}.sm\:rt-r-m-9{--margin-top: var(--space-9);--margin-right: var(--space-9);--margin-bottom: var(--space-9);--margin-left: var(--space-9)}.sm\:-rt-r-m-1{--margin-top: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1));--margin-left: calc(-1 * var(--space-1))}.sm\:-rt-r-m-2{--margin-top: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2));--margin-left: calc(-1 * var(--space-2))}.sm\:-rt-r-m-3{--margin-top: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3));--margin-left: calc(-1 * var(--space-3))}.sm\:-rt-r-m-4{--margin-top: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4));--margin-left: calc(-1 * var(--space-4))}.sm\:-rt-r-m-5{--margin-top: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5));--margin-left: calc(-1 * var(--space-5))}.sm\:-rt-r-m-6{--margin-top: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6));--margin-left: calc(-1 * var(--space-6))}.sm\:-rt-r-m-7{--margin-top: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7));--margin-left: calc(-1 * var(--space-7))}.sm\:-rt-r-m-8{--margin-top: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8));--margin-left: calc(-1 * var(--space-8))}.sm\:-rt-r-m-9{--margin-top: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9));--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-m,.md\:rt-r-m-0,.md\:rt-r-m-1,.md\:rt-r-m-2,.md\:rt-r-m-3,.md\:rt-r-m-4,.md\:rt-r-m-5,.md\:rt-r-m-6,.md\:rt-r-m-7,.md\:rt-r-m-8,.md\:rt-r-m-9,.md\:-rt-r-m-1,.md\:-rt-r-m-2,.md\:-rt-r-m-3,.md\:-rt-r-m-4,.md\:-rt-r-m-5,.md\:-rt-r-m-6,.md\:-rt-r-m-7,.md\:-rt-r-m-8,.md\:-rt-r-m-9{margin-top:var(--margin-top-override, var(--margin-top));margin-right:var(--margin-right-override, var(--margin-right));margin-bottom:var(--margin-bottom-override, var(--margin-bottom));margin-left:var(--margin-left-override, var(--margin-left))}.md\:rt-r-m{--margin-top: var(--m-md);--margin-right: var(--m-md);--margin-bottom: var(--m-md);--margin-left: var(--m-md) }.md\:rt-r-m-0{--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px}.md\:rt-r-m-1{--margin-top: var(--space-1);--margin-right: var(--space-1);--margin-bottom: var(--space-1);--margin-left: var(--space-1)}.md\:rt-r-m-2{--margin-top: var(--space-2);--margin-right: var(--space-2);--margin-bottom: var(--space-2);--margin-left: var(--space-2)}.md\:rt-r-m-3{--margin-top: var(--space-3);--margin-right: var(--space-3);--margin-bottom: var(--space-3);--margin-left: var(--space-3)}.md\:rt-r-m-4{--margin-top: var(--space-4);--margin-right: var(--space-4);--margin-bottom: var(--space-4);--margin-left: var(--space-4)}.md\:rt-r-m-5{--margin-top: var(--space-5);--margin-right: var(--space-5);--margin-bottom: var(--space-5);--margin-left: var(--space-5)}.md\:rt-r-m-6{--margin-top: var(--space-6);--margin-right: var(--space-6);--margin-bottom: var(--space-6);--margin-left: var(--space-6)}.md\:rt-r-m-7{--margin-top: var(--space-7);--margin-right: var(--space-7);--margin-bottom: var(--space-7);--margin-left: var(--space-7)}.md\:rt-r-m-8{--margin-top: var(--space-8);--margin-right: var(--space-8);--margin-bottom: var(--space-8);--margin-left: var(--space-8)}.md\:rt-r-m-9{--margin-top: var(--space-9);--margin-right: var(--space-9);--margin-bottom: var(--space-9);--margin-left: var(--space-9)}.md\:-rt-r-m-1{--margin-top: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1));--margin-left: calc(-1 * var(--space-1))}.md\:-rt-r-m-2{--margin-top: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2));--margin-left: calc(-1 * var(--space-2))}.md\:-rt-r-m-3{--margin-top: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3));--margin-left: calc(-1 * var(--space-3))}.md\:-rt-r-m-4{--margin-top: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4));--margin-left: calc(-1 * var(--space-4))}.md\:-rt-r-m-5{--margin-top: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5));--margin-left: calc(-1 * var(--space-5))}.md\:-rt-r-m-6{--margin-top: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6));--margin-left: calc(-1 * var(--space-6))}.md\:-rt-r-m-7{--margin-top: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7));--margin-left: calc(-1 * var(--space-7))}.md\:-rt-r-m-8{--margin-top: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8));--margin-left: calc(-1 * var(--space-8))}.md\:-rt-r-m-9{--margin-top: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9));--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-m,.lg\:rt-r-m-0,.lg\:rt-r-m-1,.lg\:rt-r-m-2,.lg\:rt-r-m-3,.lg\:rt-r-m-4,.lg\:rt-r-m-5,.lg\:rt-r-m-6,.lg\:rt-r-m-7,.lg\:rt-r-m-8,.lg\:rt-r-m-9,.lg\:-rt-r-m-1,.lg\:-rt-r-m-2,.lg\:-rt-r-m-3,.lg\:-rt-r-m-4,.lg\:-rt-r-m-5,.lg\:-rt-r-m-6,.lg\:-rt-r-m-7,.lg\:-rt-r-m-8,.lg\:-rt-r-m-9{margin-top:var(--margin-top-override, var(--margin-top));margin-right:var(--margin-right-override, var(--margin-right));margin-bottom:var(--margin-bottom-override, var(--margin-bottom));margin-left:var(--margin-left-override, var(--margin-left))}.lg\:rt-r-m{--margin-top: var(--m-lg);--margin-right: var(--m-lg);--margin-bottom: var(--m-lg);--margin-left: var(--m-lg) }.lg\:rt-r-m-0{--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px}.lg\:rt-r-m-1{--margin-top: var(--space-1);--margin-right: var(--space-1);--margin-bottom: var(--space-1);--margin-left: var(--space-1)}.lg\:rt-r-m-2{--margin-top: var(--space-2);--margin-right: var(--space-2);--margin-bottom: var(--space-2);--margin-left: var(--space-2)}.lg\:rt-r-m-3{--margin-top: var(--space-3);--margin-right: var(--space-3);--margin-bottom: var(--space-3);--margin-left: var(--space-3)}.lg\:rt-r-m-4{--margin-top: var(--space-4);--margin-right: var(--space-4);--margin-bottom: var(--space-4);--margin-left: var(--space-4)}.lg\:rt-r-m-5{--margin-top: var(--space-5);--margin-right: var(--space-5);--margin-bottom: var(--space-5);--margin-left: var(--space-5)}.lg\:rt-r-m-6{--margin-top: var(--space-6);--margin-right: var(--space-6);--margin-bottom: var(--space-6);--margin-left: var(--space-6)}.lg\:rt-r-m-7{--margin-top: var(--space-7);--margin-right: var(--space-7);--margin-bottom: var(--space-7);--margin-left: var(--space-7)}.lg\:rt-r-m-8{--margin-top: var(--space-8);--margin-right: var(--space-8);--margin-bottom: var(--space-8);--margin-left: var(--space-8)}.lg\:rt-r-m-9{--margin-top: var(--space-9);--margin-right: var(--space-9);--margin-bottom: var(--space-9);--margin-left: var(--space-9)}.lg\:-rt-r-m-1{--margin-top: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1));--margin-left: calc(-1 * var(--space-1))}.lg\:-rt-r-m-2{--margin-top: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2));--margin-left: calc(-1 * var(--space-2))}.lg\:-rt-r-m-3{--margin-top: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3));--margin-left: calc(-1 * var(--space-3))}.lg\:-rt-r-m-4{--margin-top: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4));--margin-left: calc(-1 * var(--space-4))}.lg\:-rt-r-m-5{--margin-top: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5));--margin-left: calc(-1 * var(--space-5))}.lg\:-rt-r-m-6{--margin-top: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6));--margin-left: calc(-1 * var(--space-6))}.lg\:-rt-r-m-7{--margin-top: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7));--margin-left: calc(-1 * var(--space-7))}.lg\:-rt-r-m-8{--margin-top: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8));--margin-left: calc(-1 * var(--space-8))}.lg\:-rt-r-m-9{--margin-top: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9));--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-m,.xl\:rt-r-m-0,.xl\:rt-r-m-1,.xl\:rt-r-m-2,.xl\:rt-r-m-3,.xl\:rt-r-m-4,.xl\:rt-r-m-5,.xl\:rt-r-m-6,.xl\:rt-r-m-7,.xl\:rt-r-m-8,.xl\:rt-r-m-9,.xl\:-rt-r-m-1,.xl\:-rt-r-m-2,.xl\:-rt-r-m-3,.xl\:-rt-r-m-4,.xl\:-rt-r-m-5,.xl\:-rt-r-m-6,.xl\:-rt-r-m-7,.xl\:-rt-r-m-8,.xl\:-rt-r-m-9{margin-top:var(--margin-top-override, var(--margin-top));margin-right:var(--margin-right-override, var(--margin-right));margin-bottom:var(--margin-bottom-override, var(--margin-bottom));margin-left:var(--margin-left-override, var(--margin-left))}.xl\:rt-r-m{--margin-top: var(--m-xl);--margin-right: var(--m-xl);--margin-bottom: var(--m-xl);--margin-left: var(--m-xl) }.xl\:rt-r-m-0{--margin-top: 0px;--margin-right: 0px;--margin-bottom: 0px;--margin-left: 0px}.xl\:rt-r-m-1{--margin-top: var(--space-1);--margin-right: var(--space-1);--margin-bottom: var(--space-1);--margin-left: var(--space-1)}.xl\:rt-r-m-2{--margin-top: var(--space-2);--margin-right: var(--space-2);--margin-bottom: var(--space-2);--margin-left: var(--space-2)}.xl\:rt-r-m-3{--margin-top: var(--space-3);--margin-right: var(--space-3);--margin-bottom: var(--space-3);--margin-left: var(--space-3)}.xl\:rt-r-m-4{--margin-top: var(--space-4);--margin-right: var(--space-4);--margin-bottom: var(--space-4);--margin-left: var(--space-4)}.xl\:rt-r-m-5{--margin-top: var(--space-5);--margin-right: var(--space-5);--margin-bottom: var(--space-5);--margin-left: var(--space-5)}.xl\:rt-r-m-6{--margin-top: var(--space-6);--margin-right: var(--space-6);--margin-bottom: var(--space-6);--margin-left: var(--space-6)}.xl\:rt-r-m-7{--margin-top: var(--space-7);--margin-right: var(--space-7);--margin-bottom: var(--space-7);--margin-left: var(--space-7)}.xl\:rt-r-m-8{--margin-top: var(--space-8);--margin-right: var(--space-8);--margin-bottom: var(--space-8);--margin-left: var(--space-8)}.xl\:rt-r-m-9{--margin-top: var(--space-9);--margin-right: var(--space-9);--margin-bottom: var(--space-9);--margin-left: var(--space-9)}.xl\:-rt-r-m-1{--margin-top: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1));--margin-left: calc(-1 * var(--space-1))}.xl\:-rt-r-m-2{--margin-top: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2));--margin-left: calc(-1 * var(--space-2))}.xl\:-rt-r-m-3{--margin-top: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3));--margin-left: calc(-1 * var(--space-3))}.xl\:-rt-r-m-4{--margin-top: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4));--margin-left: calc(-1 * var(--space-4))}.xl\:-rt-r-m-5{--margin-top: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5));--margin-left: calc(-1 * var(--space-5))}.xl\:-rt-r-m-6{--margin-top: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6));--margin-left: calc(-1 * var(--space-6))}.xl\:-rt-r-m-7{--margin-top: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7));--margin-left: calc(-1 * var(--space-7))}.xl\:-rt-r-m-8{--margin-top: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8));--margin-left: calc(-1 * var(--space-8))}.xl\:-rt-r-m-9{--margin-top: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9));--margin-left: calc(-1 * var(--space-9))}}.rt-r-mx,.rt-r-mx-0,.rt-r-mx-1,.rt-r-mx-2,.rt-r-mx-3,.rt-r-mx-4,.rt-r-mx-5,.rt-r-mx-6,.rt-r-mx-7,.rt-r-mx-8,.rt-r-mx-9,.-rt-r-mx-1,.-rt-r-mx-2,.-rt-r-mx-3,.-rt-r-mx-4,.-rt-r-mx-5,.-rt-r-mx-6,.-rt-r-mx-7,.-rt-r-mx-8,.-rt-r-mx-9{margin-left:var(--margin-left-override, var(--margin-left));margin-right:var(--margin-right-override, var(--margin-right))}.rt-r-mx{--margin-left: var(--ml);--margin-right: var(--mr) }.rt-r-mx-0{--margin-left: 0px;--margin-right: 0px}.rt-r-mx-1{--margin-left: var(--space-1);--margin-right: var(--space-1)}.rt-r-mx-2{--margin-left: var(--space-2);--margin-right: var(--space-2)}.rt-r-mx-3{--margin-left: var(--space-3);--margin-right: var(--space-3)}.rt-r-mx-4{--margin-left: var(--space-4);--margin-right: var(--space-4)}.rt-r-mx-5{--margin-left: var(--space-5);--margin-right: var(--space-5)}.rt-r-mx-6{--margin-left: var(--space-6);--margin-right: var(--space-6)}.rt-r-mx-7{--margin-left: var(--space-7);--margin-right: var(--space-7)}.rt-r-mx-8{--margin-left: var(--space-8);--margin-right: var(--space-8)}.rt-r-mx-9{--margin-left: var(--space-9);--margin-right: var(--space-9)}.-rt-r-mx-1{--margin-left: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1))}.-rt-r-mx-2{--margin-left: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2))}.-rt-r-mx-3{--margin-left: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3))}.-rt-r-mx-4{--margin-left: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4))}.-rt-r-mx-5{--margin-left: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5))}.-rt-r-mx-6{--margin-left: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6))}.-rt-r-mx-7{--margin-left: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7))}.-rt-r-mx-8{--margin-left: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8))}.-rt-r-mx-9{--margin-left: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-mx,.xs\:rt-r-mx-0,.xs\:rt-r-mx-1,.xs\:rt-r-mx-2,.xs\:rt-r-mx-3,.xs\:rt-r-mx-4,.xs\:rt-r-mx-5,.xs\:rt-r-mx-6,.xs\:rt-r-mx-7,.xs\:rt-r-mx-8,.xs\:rt-r-mx-9,.xs\:-rt-r-mx-1,.xs\:-rt-r-mx-2,.xs\:-rt-r-mx-3,.xs\:-rt-r-mx-4,.xs\:-rt-r-mx-5,.xs\:-rt-r-mx-6,.xs\:-rt-r-mx-7,.xs\:-rt-r-mx-8,.xs\:-rt-r-mx-9{margin-left:var(--margin-left-override, var(--margin-left));margin-right:var(--margin-right-override, var(--margin-right))}.xs\:rt-r-mx{--margin-left: var(--ml-xs);--margin-right: var(--mr-xs) }.xs\:rt-r-mx-0{--margin-left: 0px;--margin-right: 0px}.xs\:rt-r-mx-1{--margin-left: var(--space-1);--margin-right: var(--space-1)}.xs\:rt-r-mx-2{--margin-left: var(--space-2);--margin-right: var(--space-2)}.xs\:rt-r-mx-3{--margin-left: var(--space-3);--margin-right: var(--space-3)}.xs\:rt-r-mx-4{--margin-left: var(--space-4);--margin-right: var(--space-4)}.xs\:rt-r-mx-5{--margin-left: var(--space-5);--margin-right: var(--space-5)}.xs\:rt-r-mx-6{--margin-left: var(--space-6);--margin-right: var(--space-6)}.xs\:rt-r-mx-7{--margin-left: var(--space-7);--margin-right: var(--space-7)}.xs\:rt-r-mx-8{--margin-left: var(--space-8);--margin-right: var(--space-8)}.xs\:rt-r-mx-9{--margin-left: var(--space-9);--margin-right: var(--space-9)}.xs\:-rt-r-mx-1{--margin-left: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1))}.xs\:-rt-r-mx-2{--margin-left: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2))}.xs\:-rt-r-mx-3{--margin-left: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3))}.xs\:-rt-r-mx-4{--margin-left: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4))}.xs\:-rt-r-mx-5{--margin-left: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5))}.xs\:-rt-r-mx-6{--margin-left: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6))}.xs\:-rt-r-mx-7{--margin-left: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7))}.xs\:-rt-r-mx-8{--margin-left: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8))}.xs\:-rt-r-mx-9{--margin-left: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-mx,.sm\:rt-r-mx-0,.sm\:rt-r-mx-1,.sm\:rt-r-mx-2,.sm\:rt-r-mx-3,.sm\:rt-r-mx-4,.sm\:rt-r-mx-5,.sm\:rt-r-mx-6,.sm\:rt-r-mx-7,.sm\:rt-r-mx-8,.sm\:rt-r-mx-9,.sm\:-rt-r-mx-1,.sm\:-rt-r-mx-2,.sm\:-rt-r-mx-3,.sm\:-rt-r-mx-4,.sm\:-rt-r-mx-5,.sm\:-rt-r-mx-6,.sm\:-rt-r-mx-7,.sm\:-rt-r-mx-8,.sm\:-rt-r-mx-9{margin-left:var(--margin-left-override, var(--margin-left));margin-right:var(--margin-right-override, var(--margin-right))}.sm\:rt-r-mx{--margin-left: var(--ml-md);--margin-right: var(--mr-md) }.sm\:rt-r-mx-0{--margin-left: 0px;--margin-right: 0px}.sm\:rt-r-mx-1{--margin-left: var(--space-1);--margin-right: var(--space-1)}.sm\:rt-r-mx-2{--margin-left: var(--space-2);--margin-right: var(--space-2)}.sm\:rt-r-mx-3{--margin-left: var(--space-3);--margin-right: var(--space-3)}.sm\:rt-r-mx-4{--margin-left: var(--space-4);--margin-right: var(--space-4)}.sm\:rt-r-mx-5{--margin-left: var(--space-5);--margin-right: var(--space-5)}.sm\:rt-r-mx-6{--margin-left: var(--space-6);--margin-right: var(--space-6)}.sm\:rt-r-mx-7{--margin-left: var(--space-7);--margin-right: var(--space-7)}.sm\:rt-r-mx-8{--margin-left: var(--space-8);--margin-right: var(--space-8)}.sm\:rt-r-mx-9{--margin-left: var(--space-9);--margin-right: var(--space-9)}.sm\:-rt-r-mx-1{--margin-left: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1))}.sm\:-rt-r-mx-2{--margin-left: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2))}.sm\:-rt-r-mx-3{--margin-left: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3))}.sm\:-rt-r-mx-4{--margin-left: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4))}.sm\:-rt-r-mx-5{--margin-left: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5))}.sm\:-rt-r-mx-6{--margin-left: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6))}.sm\:-rt-r-mx-7{--margin-left: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7))}.sm\:-rt-r-mx-8{--margin-left: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8))}.sm\:-rt-r-mx-9{--margin-left: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-mx,.md\:rt-r-mx-0,.md\:rt-r-mx-1,.md\:rt-r-mx-2,.md\:rt-r-mx-3,.md\:rt-r-mx-4,.md\:rt-r-mx-5,.md\:rt-r-mx-6,.md\:rt-r-mx-7,.md\:rt-r-mx-8,.md\:rt-r-mx-9,.md\:-rt-r-mx-1,.md\:-rt-r-mx-2,.md\:-rt-r-mx-3,.md\:-rt-r-mx-4,.md\:-rt-r-mx-5,.md\:-rt-r-mx-6,.md\:-rt-r-mx-7,.md\:-rt-r-mx-8,.md\:-rt-r-mx-9{margin-left:var(--margin-left-override, var(--margin-left));margin-right:var(--margin-right-override, var(--margin-right))}.md\:rt-r-mx{--margin-left: var(--ml-md);--margin-right: var(--mr-md) }.md\:rt-r-mx-0{--margin-left: 0px;--margin-right: 0px}.md\:rt-r-mx-1{--margin-left: var(--space-1);--margin-right: var(--space-1)}.md\:rt-r-mx-2{--margin-left: var(--space-2);--margin-right: var(--space-2)}.md\:rt-r-mx-3{--margin-left: var(--space-3);--margin-right: var(--space-3)}.md\:rt-r-mx-4{--margin-left: var(--space-4);--margin-right: var(--space-4)}.md\:rt-r-mx-5{--margin-left: var(--space-5);--margin-right: var(--space-5)}.md\:rt-r-mx-6{--margin-left: var(--space-6);--margin-right: var(--space-6)}.md\:rt-r-mx-7{--margin-left: var(--space-7);--margin-right: var(--space-7)}.md\:rt-r-mx-8{--margin-left: var(--space-8);--margin-right: var(--space-8)}.md\:rt-r-mx-9{--margin-left: var(--space-9);--margin-right: var(--space-9)}.md\:-rt-r-mx-1{--margin-left: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1))}.md\:-rt-r-mx-2{--margin-left: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2))}.md\:-rt-r-mx-3{--margin-left: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3))}.md\:-rt-r-mx-4{--margin-left: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4))}.md\:-rt-r-mx-5{--margin-left: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5))}.md\:-rt-r-mx-6{--margin-left: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6))}.md\:-rt-r-mx-7{--margin-left: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7))}.md\:-rt-r-mx-8{--margin-left: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8))}.md\:-rt-r-mx-9{--margin-left: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-mx,.lg\:rt-r-mx-0,.lg\:rt-r-mx-1,.lg\:rt-r-mx-2,.lg\:rt-r-mx-3,.lg\:rt-r-mx-4,.lg\:rt-r-mx-5,.lg\:rt-r-mx-6,.lg\:rt-r-mx-7,.lg\:rt-r-mx-8,.lg\:rt-r-mx-9,.lg\:-rt-r-mx-1,.lg\:-rt-r-mx-2,.lg\:-rt-r-mx-3,.lg\:-rt-r-mx-4,.lg\:-rt-r-mx-5,.lg\:-rt-r-mx-6,.lg\:-rt-r-mx-7,.lg\:-rt-r-mx-8,.lg\:-rt-r-mx-9{margin-left:var(--margin-left-override, var(--margin-left));margin-right:var(--margin-right-override, var(--margin-right))}.lg\:rt-r-mx{--margin-left: var(--ml-lg);--margin-right: var(--mr-lg) }.lg\:rt-r-mx-0{--margin-left: 0px;--margin-right: 0px}.lg\:rt-r-mx-1{--margin-left: var(--space-1);--margin-right: var(--space-1)}.lg\:rt-r-mx-2{--margin-left: var(--space-2);--margin-right: var(--space-2)}.lg\:rt-r-mx-3{--margin-left: var(--space-3);--margin-right: var(--space-3)}.lg\:rt-r-mx-4{--margin-left: var(--space-4);--margin-right: var(--space-4)}.lg\:rt-r-mx-5{--margin-left: var(--space-5);--margin-right: var(--space-5)}.lg\:rt-r-mx-6{--margin-left: var(--space-6);--margin-right: var(--space-6)}.lg\:rt-r-mx-7{--margin-left: var(--space-7);--margin-right: var(--space-7)}.lg\:rt-r-mx-8{--margin-left: var(--space-8);--margin-right: var(--space-8)}.lg\:rt-r-mx-9{--margin-left: var(--space-9);--margin-right: var(--space-9)}.lg\:-rt-r-mx-1{--margin-left: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1))}.lg\:-rt-r-mx-2{--margin-left: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2))}.lg\:-rt-r-mx-3{--margin-left: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3))}.lg\:-rt-r-mx-4{--margin-left: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4))}.lg\:-rt-r-mx-5{--margin-left: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5))}.lg\:-rt-r-mx-6{--margin-left: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6))}.lg\:-rt-r-mx-7{--margin-left: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7))}.lg\:-rt-r-mx-8{--margin-left: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8))}.lg\:-rt-r-mx-9{--margin-left: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-mx,.xl\:rt-r-mx-0,.xl\:rt-r-mx-1,.xl\:rt-r-mx-2,.xl\:rt-r-mx-3,.xl\:rt-r-mx-4,.xl\:rt-r-mx-5,.xl\:rt-r-mx-6,.xl\:rt-r-mx-7,.xl\:rt-r-mx-8,.xl\:rt-r-mx-9,.xl\:-rt-r-mx-1,.xl\:-rt-r-mx-2,.xl\:-rt-r-mx-3,.xl\:-rt-r-mx-4,.xl\:-rt-r-mx-5,.xl\:-rt-r-mx-6,.xl\:-rt-r-mx-7,.xl\:-rt-r-mx-8,.xl\:-rt-r-mx-9{margin-left:var(--margin-left-override, var(--margin-left));margin-right:var(--margin-right-override, var(--margin-right))}.xl\:rt-r-mx{--margin-left: var(--ml-xl);--margin-right: var(--mr-xl) }.xl\:rt-r-mx-0{--margin-left: 0px;--margin-right: 0px}.xl\:rt-r-mx-1{--margin-left: var(--space-1);--margin-right: var(--space-1)}.xl\:rt-r-mx-2{--margin-left: var(--space-2);--margin-right: var(--space-2)}.xl\:rt-r-mx-3{--margin-left: var(--space-3);--margin-right: var(--space-3)}.xl\:rt-r-mx-4{--margin-left: var(--space-4);--margin-right: var(--space-4)}.xl\:rt-r-mx-5{--margin-left: var(--space-5);--margin-right: var(--space-5)}.xl\:rt-r-mx-6{--margin-left: var(--space-6);--margin-right: var(--space-6)}.xl\:rt-r-mx-7{--margin-left: var(--space-7);--margin-right: var(--space-7)}.xl\:rt-r-mx-8{--margin-left: var(--space-8);--margin-right: var(--space-8)}.xl\:rt-r-mx-9{--margin-left: var(--space-9);--margin-right: var(--space-9)}.xl\:-rt-r-mx-1{--margin-left: calc(-1 * var(--space-1));--margin-right: calc(-1 * var(--space-1))}.xl\:-rt-r-mx-2{--margin-left: calc(-1 * var(--space-2));--margin-right: calc(-1 * var(--space-2))}.xl\:-rt-r-mx-3{--margin-left: calc(-1 * var(--space-3));--margin-right: calc(-1 * var(--space-3))}.xl\:-rt-r-mx-4{--margin-left: calc(-1 * var(--space-4));--margin-right: calc(-1 * var(--space-4))}.xl\:-rt-r-mx-5{--margin-left: calc(-1 * var(--space-5));--margin-right: calc(-1 * var(--space-5))}.xl\:-rt-r-mx-6{--margin-left: calc(-1 * var(--space-6));--margin-right: calc(-1 * var(--space-6))}.xl\:-rt-r-mx-7{--margin-left: calc(-1 * var(--space-7));--margin-right: calc(-1 * var(--space-7))}.xl\:-rt-r-mx-8{--margin-left: calc(-1 * var(--space-8));--margin-right: calc(-1 * var(--space-8))}.xl\:-rt-r-mx-9{--margin-left: calc(-1 * var(--space-9));--margin-right: calc(-1 * var(--space-9))}}.rt-r-my,.rt-r-my-0,.rt-r-my-1,.rt-r-my-2,.rt-r-my-3,.rt-r-my-4,.rt-r-my-5,.rt-r-my-6,.rt-r-my-7,.rt-r-my-8,.rt-r-my-9,.-rt-r-my-1,.-rt-r-my-2,.-rt-r-my-3,.-rt-r-my-4,.-rt-r-my-5,.-rt-r-my-6,.-rt-r-my-7,.-rt-r-my-8,.-rt-r-my-9{margin-top:var(--margin-top-override, var(--margin-top));margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.rt-r-my{--margin-top: var(--mt);--margin-bottom: var(--mb) }.rt-r-my-0{--margin-top: 0px;--margin-bottom: 0px}.rt-r-my-1{--margin-top: var(--space-1);--margin-bottom: var(--space-1)}.rt-r-my-2{--margin-top: var(--space-2);--margin-bottom: var(--space-2)}.rt-r-my-3{--margin-top: var(--space-3);--margin-bottom: var(--space-3)}.rt-r-my-4{--margin-top: var(--space-4);--margin-bottom: var(--space-4)}.rt-r-my-5{--margin-top: var(--space-5);--margin-bottom: var(--space-5)}.rt-r-my-6{--margin-top: var(--space-6);--margin-bottom: var(--space-6)}.rt-r-my-7{--margin-top: var(--space-7);--margin-bottom: var(--space-7)}.rt-r-my-8{--margin-top: var(--space-8);--margin-bottom: var(--space-8)}.rt-r-my-9{--margin-top: var(--space-9);--margin-bottom: var(--space-9)}.-rt-r-my-1{--margin-top: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1))}.-rt-r-my-2{--margin-top: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2))}.-rt-r-my-3{--margin-top: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3))}.-rt-r-my-4{--margin-top: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4))}.-rt-r-my-5{--margin-top: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5))}.-rt-r-my-6{--margin-top: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6))}.-rt-r-my-7{--margin-top: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7))}.-rt-r-my-8{--margin-top: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8))}.-rt-r-my-9{--margin-top: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-my,.xs\:rt-r-my-0,.xs\:rt-r-my-1,.xs\:rt-r-my-2,.xs\:rt-r-my-3,.xs\:rt-r-my-4,.xs\:rt-r-my-5,.xs\:rt-r-my-6,.xs\:rt-r-my-7,.xs\:rt-r-my-8,.xs\:rt-r-my-9,.xs\:-rt-r-my-1,.xs\:-rt-r-my-2,.xs\:-rt-r-my-3,.xs\:-rt-r-my-4,.xs\:-rt-r-my-5,.xs\:-rt-r-my-6,.xs\:-rt-r-my-7,.xs\:-rt-r-my-8,.xs\:-rt-r-my-9{margin-top:var(--margin-top-override, var(--margin-top));margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.xs\:rt-r-my{--margin-top: var(--mt-xs);--margin-bottom: var(--mb-xs) }.xs\:rt-r-my-0{--margin-top: 0px;--margin-bottom: 0px}.xs\:rt-r-my-1{--margin-top: var(--space-1);--margin-bottom: var(--space-1)}.xs\:rt-r-my-2{--margin-top: var(--space-2);--margin-bottom: var(--space-2)}.xs\:rt-r-my-3{--margin-top: var(--space-3);--margin-bottom: var(--space-3)}.xs\:rt-r-my-4{--margin-top: var(--space-4);--margin-bottom: var(--space-4)}.xs\:rt-r-my-5{--margin-top: var(--space-5);--margin-bottom: var(--space-5)}.xs\:rt-r-my-6{--margin-top: var(--space-6);--margin-bottom: var(--space-6)}.xs\:rt-r-my-7{--margin-top: var(--space-7);--margin-bottom: var(--space-7)}.xs\:rt-r-my-8{--margin-top: var(--space-8);--margin-bottom: var(--space-8)}.xs\:rt-r-my-9{--margin-top: var(--space-9);--margin-bottom: var(--space-9)}.xs\:-rt-r-my-1{--margin-top: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1))}.xs\:-rt-r-my-2{--margin-top: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2))}.xs\:-rt-r-my-3{--margin-top: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3))}.xs\:-rt-r-my-4{--margin-top: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4))}.xs\:-rt-r-my-5{--margin-top: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5))}.xs\:-rt-r-my-6{--margin-top: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6))}.xs\:-rt-r-my-7{--margin-top: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7))}.xs\:-rt-r-my-8{--margin-top: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8))}.xs\:-rt-r-my-9{--margin-top: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-my,.sm\:rt-r-my-0,.sm\:rt-r-my-1,.sm\:rt-r-my-2,.sm\:rt-r-my-3,.sm\:rt-r-my-4,.sm\:rt-r-my-5,.sm\:rt-r-my-6,.sm\:rt-r-my-7,.sm\:rt-r-my-8,.sm\:rt-r-my-9,.sm\:-rt-r-my-1,.sm\:-rt-r-my-2,.sm\:-rt-r-my-3,.sm\:-rt-r-my-4,.sm\:-rt-r-my-5,.sm\:-rt-r-my-6,.sm\:-rt-r-my-7,.sm\:-rt-r-my-8,.sm\:-rt-r-my-9{margin-top:var(--margin-top-override, var(--margin-top));margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.sm\:rt-r-my{--margin-top: var(--mt-sm);--margin-bottom: var(--mb-sm) }.sm\:rt-r-my-0{--margin-top: 0px;--margin-bottom: 0px}.sm\:rt-r-my-1{--margin-top: var(--space-1);--margin-bottom: var(--space-1)}.sm\:rt-r-my-2{--margin-top: var(--space-2);--margin-bottom: var(--space-2)}.sm\:rt-r-my-3{--margin-top: var(--space-3);--margin-bottom: var(--space-3)}.sm\:rt-r-my-4{--margin-top: var(--space-4);--margin-bottom: var(--space-4)}.sm\:rt-r-my-5{--margin-top: var(--space-5);--margin-bottom: var(--space-5)}.sm\:rt-r-my-6{--margin-top: var(--space-6);--margin-bottom: var(--space-6)}.sm\:rt-r-my-7{--margin-top: var(--space-7);--margin-bottom: var(--space-7)}.sm\:rt-r-my-8{--margin-top: var(--space-8);--margin-bottom: var(--space-8)}.sm\:rt-r-my-9{--margin-top: var(--space-9);--margin-bottom: var(--space-9)}.sm\:-rt-r-my-1{--margin-top: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1))}.sm\:-rt-r-my-2{--margin-top: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2))}.sm\:-rt-r-my-3{--margin-top: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3))}.sm\:-rt-r-my-4{--margin-top: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4))}.sm\:-rt-r-my-5{--margin-top: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5))}.sm\:-rt-r-my-6{--margin-top: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6))}.sm\:-rt-r-my-7{--margin-top: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7))}.sm\:-rt-r-my-8{--margin-top: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8))}.sm\:-rt-r-my-9{--margin-top: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-my,.md\:rt-r-my-0,.md\:rt-r-my-1,.md\:rt-r-my-2,.md\:rt-r-my-3,.md\:rt-r-my-4,.md\:rt-r-my-5,.md\:rt-r-my-6,.md\:rt-r-my-7,.md\:rt-r-my-8,.md\:rt-r-my-9,.md\:-rt-r-my-1,.md\:-rt-r-my-2,.md\:-rt-r-my-3,.md\:-rt-r-my-4,.md\:-rt-r-my-5,.md\:-rt-r-my-6,.md\:-rt-r-my-7,.md\:-rt-r-my-8,.md\:-rt-r-my-9{margin-top:var(--margin-top-override, var(--margin-top));margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.md\:rt-r-my{--margin-top: var(--mt-md);--margin-bottom: var(--mb-md) }.md\:rt-r-my-0{--margin-top: 0px;--margin-bottom: 0px}.md\:rt-r-my-1{--margin-top: var(--space-1);--margin-bottom: var(--space-1)}.md\:rt-r-my-2{--margin-top: var(--space-2);--margin-bottom: var(--space-2)}.md\:rt-r-my-3{--margin-top: var(--space-3);--margin-bottom: var(--space-3)}.md\:rt-r-my-4{--margin-top: var(--space-4);--margin-bottom: var(--space-4)}.md\:rt-r-my-5{--margin-top: var(--space-5);--margin-bottom: var(--space-5)}.md\:rt-r-my-6{--margin-top: var(--space-6);--margin-bottom: var(--space-6)}.md\:rt-r-my-7{--margin-top: var(--space-7);--margin-bottom: var(--space-7)}.md\:rt-r-my-8{--margin-top: var(--space-8);--margin-bottom: var(--space-8)}.md\:rt-r-my-9{--margin-top: var(--space-9);--margin-bottom: var(--space-9)}.md\:-rt-r-my-1{--margin-top: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1))}.md\:-rt-r-my-2{--margin-top: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2))}.md\:-rt-r-my-3{--margin-top: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3))}.md\:-rt-r-my-4{--margin-top: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4))}.md\:-rt-r-my-5{--margin-top: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5))}.md\:-rt-r-my-6{--margin-top: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6))}.md\:-rt-r-my-7{--margin-top: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7))}.md\:-rt-r-my-8{--margin-top: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8))}.md\:-rt-r-my-9{--margin-top: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-my,.lg\:rt-r-my-0,.lg\:rt-r-my-1,.lg\:rt-r-my-2,.lg\:rt-r-my-3,.lg\:rt-r-my-4,.lg\:rt-r-my-5,.lg\:rt-r-my-6,.lg\:rt-r-my-7,.lg\:rt-r-my-8,.lg\:rt-r-my-9,.lg\:-rt-r-my-1,.lg\:-rt-r-my-2,.lg\:-rt-r-my-3,.lg\:-rt-r-my-4,.lg\:-rt-r-my-5,.lg\:-rt-r-my-6,.lg\:-rt-r-my-7,.lg\:-rt-r-my-8,.lg\:-rt-r-my-9{margin-top:var(--margin-top-override, var(--margin-top));margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.lg\:rt-r-my{--margin-top: var(--mt-lg);--margin-bottom: var(--mb-lg) }.lg\:rt-r-my-0{--margin-top: 0px;--margin-bottom: 0px}.lg\:rt-r-my-1{--margin-top: var(--space-1);--margin-bottom: var(--space-1)}.lg\:rt-r-my-2{--margin-top: var(--space-2);--margin-bottom: var(--space-2)}.lg\:rt-r-my-3{--margin-top: var(--space-3);--margin-bottom: var(--space-3)}.lg\:rt-r-my-4{--margin-top: var(--space-4);--margin-bottom: var(--space-4)}.lg\:rt-r-my-5{--margin-top: var(--space-5);--margin-bottom: var(--space-5)}.lg\:rt-r-my-6{--margin-top: var(--space-6);--margin-bottom: var(--space-6)}.lg\:rt-r-my-7{--margin-top: var(--space-7);--margin-bottom: var(--space-7)}.lg\:rt-r-my-8{--margin-top: var(--space-8);--margin-bottom: var(--space-8)}.lg\:rt-r-my-9{--margin-top: var(--space-9);--margin-bottom: var(--space-9)}.lg\:-rt-r-my-1{--margin-top: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1))}.lg\:-rt-r-my-2{--margin-top: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2))}.lg\:-rt-r-my-3{--margin-top: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3))}.lg\:-rt-r-my-4{--margin-top: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4))}.lg\:-rt-r-my-5{--margin-top: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5))}.lg\:-rt-r-my-6{--margin-top: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6))}.lg\:-rt-r-my-7{--margin-top: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7))}.lg\:-rt-r-my-8{--margin-top: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8))}.lg\:-rt-r-my-9{--margin-top: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-my,.xl\:rt-r-my-0,.xl\:rt-r-my-1,.xl\:rt-r-my-2,.xl\:rt-r-my-3,.xl\:rt-r-my-4,.xl\:rt-r-my-5,.xl\:rt-r-my-6,.xl\:rt-r-my-7,.xl\:rt-r-my-8,.xl\:rt-r-my-9,.xl\:-rt-r-my-1,.xl\:-rt-r-my-2,.xl\:-rt-r-my-3,.xl\:-rt-r-my-4,.xl\:-rt-r-my-5,.xl\:-rt-r-my-6,.xl\:-rt-r-my-7,.xl\:-rt-r-my-8,.xl\:-rt-r-my-9{margin-top:var(--margin-top-override, var(--margin-top));margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.xl\:rt-r-my{--margin-top: var(--mt-xl);--margin-bottom: var(--mb-xl) }.xl\:rt-r-my-0{--margin-top: 0px;--margin-bottom: 0px}.xl\:rt-r-my-1{--margin-top: var(--space-1);--margin-bottom: var(--space-1)}.xl\:rt-r-my-2{--margin-top: var(--space-2);--margin-bottom: var(--space-2)}.xl\:rt-r-my-3{--margin-top: var(--space-3);--margin-bottom: var(--space-3)}.xl\:rt-r-my-4{--margin-top: var(--space-4);--margin-bottom: var(--space-4)}.xl\:rt-r-my-5{--margin-top: var(--space-5);--margin-bottom: var(--space-5)}.xl\:rt-r-my-6{--margin-top: var(--space-6);--margin-bottom: var(--space-6)}.xl\:rt-r-my-7{--margin-top: var(--space-7);--margin-bottom: var(--space-7)}.xl\:rt-r-my-8{--margin-top: var(--space-8);--margin-bottom: var(--space-8)}.xl\:rt-r-my-9{--margin-top: var(--space-9);--margin-bottom: var(--space-9)}.xl\:-rt-r-my-1{--margin-top: calc(-1 * var(--space-1));--margin-bottom: calc(-1 * var(--space-1))}.xl\:-rt-r-my-2{--margin-top: calc(-1 * var(--space-2));--margin-bottom: calc(-1 * var(--space-2))}.xl\:-rt-r-my-3{--margin-top: calc(-1 * var(--space-3));--margin-bottom: calc(-1 * var(--space-3))}.xl\:-rt-r-my-4{--margin-top: calc(-1 * var(--space-4));--margin-bottom: calc(-1 * var(--space-4))}.xl\:-rt-r-my-5{--margin-top: calc(-1 * var(--space-5));--margin-bottom: calc(-1 * var(--space-5))}.xl\:-rt-r-my-6{--margin-top: calc(-1 * var(--space-6));--margin-bottom: calc(-1 * var(--space-6))}.xl\:-rt-r-my-7{--margin-top: calc(-1 * var(--space-7));--margin-bottom: calc(-1 * var(--space-7))}.xl\:-rt-r-my-8{--margin-top: calc(-1 * var(--space-8));--margin-bottom: calc(-1 * var(--space-8))}.xl\:-rt-r-my-9{--margin-top: calc(-1 * var(--space-9));--margin-bottom: calc(-1 * var(--space-9))}}.rt-r-mt,.rt-r-mt-0,.rt-r-mt-1,.rt-r-mt-2,.rt-r-mt-3,.rt-r-mt-4,.rt-r-mt-5,.rt-r-mt-6,.rt-r-mt-7,.rt-r-mt-8,.rt-r-mt-9,.-rt-r-mt-1,.-rt-r-mt-2,.-rt-r-mt-3,.-rt-r-mt-4,.-rt-r-mt-5,.-rt-r-mt-6,.-rt-r-mt-7,.-rt-r-mt-8,.-rt-r-mt-9{margin-top:var(--margin-top-override, var(--margin-top))}.rt-r-mt{--margin-top: var(--mt) }.rt-r-mt-0{--margin-top: 0px}.rt-r-mt-1{--margin-top: var(--space-1)}.rt-r-mt-2{--margin-top: var(--space-2)}.rt-r-mt-3{--margin-top: var(--space-3)}.rt-r-mt-4{--margin-top: var(--space-4)}.rt-r-mt-5{--margin-top: var(--space-5)}.rt-r-mt-6{--margin-top: var(--space-6)}.rt-r-mt-7{--margin-top: var(--space-7)}.rt-r-mt-8{--margin-top: var(--space-8)}.rt-r-mt-9{--margin-top: var(--space-9)}.-rt-r-mt-1{--margin-top: calc(-1 * var(--space-1))}.-rt-r-mt-2{--margin-top: calc(-1 * var(--space-2))}.-rt-r-mt-3{--margin-top: calc(-1 * var(--space-3))}.-rt-r-mt-4{--margin-top: calc(-1 * var(--space-4))}.-rt-r-mt-5{--margin-top: calc(-1 * var(--space-5))}.-rt-r-mt-6{--margin-top: calc(-1 * var(--space-6))}.-rt-r-mt-7{--margin-top: calc(-1 * var(--space-7))}.-rt-r-mt-8{--margin-top: calc(-1 * var(--space-8))}.-rt-r-mt-9{--margin-top: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-mt,.xs\:rt-r-mt-0,.xs\:rt-r-mt-1,.xs\:rt-r-mt-2,.xs\:rt-r-mt-3,.xs\:rt-r-mt-4,.xs\:rt-r-mt-5,.xs\:rt-r-mt-6,.xs\:rt-r-mt-7,.xs\:rt-r-mt-8,.xs\:rt-r-mt-9,.xs\:-rt-r-mt-1,.xs\:-rt-r-mt-2,.xs\:-rt-r-mt-3,.xs\:-rt-r-mt-4,.xs\:-rt-r-mt-5,.xs\:-rt-r-mt-6,.xs\:-rt-r-mt-7,.xs\:-rt-r-mt-8,.xs\:-rt-r-mt-9{margin-top:var(--margin-top-override, var(--margin-top))}.xs\:rt-r-mt{--margin-top: var(--mt-xs) }.xs\:rt-r-mt-0{--margin-top: 0px}.xs\:rt-r-mt-1{--margin-top: var(--space-1)}.xs\:rt-r-mt-2{--margin-top: var(--space-2)}.xs\:rt-r-mt-3{--margin-top: var(--space-3)}.xs\:rt-r-mt-4{--margin-top: var(--space-4)}.xs\:rt-r-mt-5{--margin-top: var(--space-5)}.xs\:rt-r-mt-6{--margin-top: var(--space-6)}.xs\:rt-r-mt-7{--margin-top: var(--space-7)}.xs\:rt-r-mt-8{--margin-top: var(--space-8)}.xs\:rt-r-mt-9{--margin-top: var(--space-9)}.xs\:-rt-r-mt-1{--margin-top: calc(-1 * var(--space-1))}.xs\:-rt-r-mt-2{--margin-top: calc(-1 * var(--space-2))}.xs\:-rt-r-mt-3{--margin-top: calc(-1 * var(--space-3))}.xs\:-rt-r-mt-4{--margin-top: calc(-1 * var(--space-4))}.xs\:-rt-r-mt-5{--margin-top: calc(-1 * var(--space-5))}.xs\:-rt-r-mt-6{--margin-top: calc(-1 * var(--space-6))}.xs\:-rt-r-mt-7{--margin-top: calc(-1 * var(--space-7))}.xs\:-rt-r-mt-8{--margin-top: calc(-1 * var(--space-8))}.xs\:-rt-r-mt-9{--margin-top: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-mt,.sm\:rt-r-mt-0,.sm\:rt-r-mt-1,.sm\:rt-r-mt-2,.sm\:rt-r-mt-3,.sm\:rt-r-mt-4,.sm\:rt-r-mt-5,.sm\:rt-r-mt-6,.sm\:rt-r-mt-7,.sm\:rt-r-mt-8,.sm\:rt-r-mt-9,.sm\:-rt-r-mt-1,.sm\:-rt-r-mt-2,.sm\:-rt-r-mt-3,.sm\:-rt-r-mt-4,.sm\:-rt-r-mt-5,.sm\:-rt-r-mt-6,.sm\:-rt-r-mt-7,.sm\:-rt-r-mt-8,.sm\:-rt-r-mt-9{margin-top:var(--margin-top-override, var(--margin-top))}.sm\:rt-r-mt{--margin-top: var(--mt-sm) }.sm\:rt-r-mt-0{--margin-top: 0px}.sm\:rt-r-mt-1{--margin-top: var(--space-1)}.sm\:rt-r-mt-2{--margin-top: var(--space-2)}.sm\:rt-r-mt-3{--margin-top: var(--space-3)}.sm\:rt-r-mt-4{--margin-top: var(--space-4)}.sm\:rt-r-mt-5{--margin-top: var(--space-5)}.sm\:rt-r-mt-6{--margin-top: var(--space-6)}.sm\:rt-r-mt-7{--margin-top: var(--space-7)}.sm\:rt-r-mt-8{--margin-top: var(--space-8)}.sm\:rt-r-mt-9{--margin-top: var(--space-9)}.sm\:-rt-r-mt-1{--margin-top: calc(-1 * var(--space-1))}.sm\:-rt-r-mt-2{--margin-top: calc(-1 * var(--space-2))}.sm\:-rt-r-mt-3{--margin-top: calc(-1 * var(--space-3))}.sm\:-rt-r-mt-4{--margin-top: calc(-1 * var(--space-4))}.sm\:-rt-r-mt-5{--margin-top: calc(-1 * var(--space-5))}.sm\:-rt-r-mt-6{--margin-top: calc(-1 * var(--space-6))}.sm\:-rt-r-mt-7{--margin-top: calc(-1 * var(--space-7))}.sm\:-rt-r-mt-8{--margin-top: calc(-1 * var(--space-8))}.sm\:-rt-r-mt-9{--margin-top: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-mt,.md\:rt-r-mt-0,.md\:rt-r-mt-1,.md\:rt-r-mt-2,.md\:rt-r-mt-3,.md\:rt-r-mt-4,.md\:rt-r-mt-5,.md\:rt-r-mt-6,.md\:rt-r-mt-7,.md\:rt-r-mt-8,.md\:rt-r-mt-9,.md\:-rt-r-mt-1,.md\:-rt-r-mt-2,.md\:-rt-r-mt-3,.md\:-rt-r-mt-4,.md\:-rt-r-mt-5,.md\:-rt-r-mt-6,.md\:-rt-r-mt-7,.md\:-rt-r-mt-8,.md\:-rt-r-mt-9{margin-top:var(--margin-top-override, var(--margin-top))}.md\:rt-r-mt{--margin-top: var(--mt-md) }.md\:rt-r-mt-0{--margin-top: 0px}.md\:rt-r-mt-1{--margin-top: var(--space-1)}.md\:rt-r-mt-2{--margin-top: var(--space-2)}.md\:rt-r-mt-3{--margin-top: var(--space-3)}.md\:rt-r-mt-4{--margin-top: var(--space-4)}.md\:rt-r-mt-5{--margin-top: var(--space-5)}.md\:rt-r-mt-6{--margin-top: var(--space-6)}.md\:rt-r-mt-7{--margin-top: var(--space-7)}.md\:rt-r-mt-8{--margin-top: var(--space-8)}.md\:rt-r-mt-9{--margin-top: var(--space-9)}.md\:-rt-r-mt-1{--margin-top: calc(-1 * var(--space-1))}.md\:-rt-r-mt-2{--margin-top: calc(-1 * var(--space-2))}.md\:-rt-r-mt-3{--margin-top: calc(-1 * var(--space-3))}.md\:-rt-r-mt-4{--margin-top: calc(-1 * var(--space-4))}.md\:-rt-r-mt-5{--margin-top: calc(-1 * var(--space-5))}.md\:-rt-r-mt-6{--margin-top: calc(-1 * var(--space-6))}.md\:-rt-r-mt-7{--margin-top: calc(-1 * var(--space-7))}.md\:-rt-r-mt-8{--margin-top: calc(-1 * var(--space-8))}.md\:-rt-r-mt-9{--margin-top: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-mt,.lg\:rt-r-mt-0,.lg\:rt-r-mt-1,.lg\:rt-r-mt-2,.lg\:rt-r-mt-3,.lg\:rt-r-mt-4,.lg\:rt-r-mt-5,.lg\:rt-r-mt-6,.lg\:rt-r-mt-7,.lg\:rt-r-mt-8,.lg\:rt-r-mt-9,.lg\:-rt-r-mt-1,.lg\:-rt-r-mt-2,.lg\:-rt-r-mt-3,.lg\:-rt-r-mt-4,.lg\:-rt-r-mt-5,.lg\:-rt-r-mt-6,.lg\:-rt-r-mt-7,.lg\:-rt-r-mt-8,.lg\:-rt-r-mt-9{margin-top:var(--margin-top-override, var(--margin-top))}.lg\:rt-r-mt{--margin-top: var(--mt-lg) }.lg\:rt-r-mt-0{--margin-top: 0px}.lg\:rt-r-mt-1{--margin-top: var(--space-1)}.lg\:rt-r-mt-2{--margin-top: var(--space-2)}.lg\:rt-r-mt-3{--margin-top: var(--space-3)}.lg\:rt-r-mt-4{--margin-top: var(--space-4)}.lg\:rt-r-mt-5{--margin-top: var(--space-5)}.lg\:rt-r-mt-6{--margin-top: var(--space-6)}.lg\:rt-r-mt-7{--margin-top: var(--space-7)}.lg\:rt-r-mt-8{--margin-top: var(--space-8)}.lg\:rt-r-mt-9{--margin-top: var(--space-9)}.lg\:-rt-r-mt-1{--margin-top: calc(-1 * var(--space-1))}.lg\:-rt-r-mt-2{--margin-top: calc(-1 * var(--space-2))}.lg\:-rt-r-mt-3{--margin-top: calc(-1 * var(--space-3))}.lg\:-rt-r-mt-4{--margin-top: calc(-1 * var(--space-4))}.lg\:-rt-r-mt-5{--margin-top: calc(-1 * var(--space-5))}.lg\:-rt-r-mt-6{--margin-top: calc(-1 * var(--space-6))}.lg\:-rt-r-mt-7{--margin-top: calc(-1 * var(--space-7))}.lg\:-rt-r-mt-8{--margin-top: calc(-1 * var(--space-8))}.lg\:-rt-r-mt-9{--margin-top: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-mt,.xl\:rt-r-mt-0,.xl\:rt-r-mt-1,.xl\:rt-r-mt-2,.xl\:rt-r-mt-3,.xl\:rt-r-mt-4,.xl\:rt-r-mt-5,.xl\:rt-r-mt-6,.xl\:rt-r-mt-7,.xl\:rt-r-mt-8,.xl\:rt-r-mt-9,.xl\:-rt-r-mt-1,.xl\:-rt-r-mt-2,.xl\:-rt-r-mt-3,.xl\:-rt-r-mt-4,.xl\:-rt-r-mt-5,.xl\:-rt-r-mt-6,.xl\:-rt-r-mt-7,.xl\:-rt-r-mt-8,.xl\:-rt-r-mt-9{margin-top:var(--margin-top-override, var(--margin-top))}.xl\:rt-r-mt{--margin-top: var(--mt-xl) }.xl\:rt-r-mt-0{--margin-top: 0px}.xl\:rt-r-mt-1{--margin-top: var(--space-1)}.xl\:rt-r-mt-2{--margin-top: var(--space-2)}.xl\:rt-r-mt-3{--margin-top: var(--space-3)}.xl\:rt-r-mt-4{--margin-top: var(--space-4)}.xl\:rt-r-mt-5{--margin-top: var(--space-5)}.xl\:rt-r-mt-6{--margin-top: var(--space-6)}.xl\:rt-r-mt-7{--margin-top: var(--space-7)}.xl\:rt-r-mt-8{--margin-top: var(--space-8)}.xl\:rt-r-mt-9{--margin-top: var(--space-9)}.xl\:-rt-r-mt-1{--margin-top: calc(-1 * var(--space-1))}.xl\:-rt-r-mt-2{--margin-top: calc(-1 * var(--space-2))}.xl\:-rt-r-mt-3{--margin-top: calc(-1 * var(--space-3))}.xl\:-rt-r-mt-4{--margin-top: calc(-1 * var(--space-4))}.xl\:-rt-r-mt-5{--margin-top: calc(-1 * var(--space-5))}.xl\:-rt-r-mt-6{--margin-top: calc(-1 * var(--space-6))}.xl\:-rt-r-mt-7{--margin-top: calc(-1 * var(--space-7))}.xl\:-rt-r-mt-8{--margin-top: calc(-1 * var(--space-8))}.xl\:-rt-r-mt-9{--margin-top: calc(-1 * var(--space-9))}}.rt-r-mr,.rt-r-mr-0,.rt-r-mr-1,.rt-r-mr-2,.rt-r-mr-3,.rt-r-mr-4,.rt-r-mr-5,.rt-r-mr-6,.rt-r-mr-7,.rt-r-mr-8,.rt-r-mr-9,.-rt-r-mr-1,.-rt-r-mr-2,.-rt-r-mr-3,.-rt-r-mr-4,.-rt-r-mr-5,.-rt-r-mr-6,.-rt-r-mr-7,.-rt-r-mr-8,.-rt-r-mr-9{margin-right:var(--margin-right-override, var(--margin-right))}.rt-r-mr{--margin-right: var(--mr) }.rt-r-mr-0{--margin-right: 0px}.rt-r-mr-1{--margin-right: var(--space-1)}.rt-r-mr-2{--margin-right: var(--space-2)}.rt-r-mr-3{--margin-right: var(--space-3)}.rt-r-mr-4{--margin-right: var(--space-4)}.rt-r-mr-5{--margin-right: var(--space-5)}.rt-r-mr-6{--margin-right: var(--space-6)}.rt-r-mr-7{--margin-right: var(--space-7)}.rt-r-mr-8{--margin-right: var(--space-8)}.rt-r-mr-9{--margin-right: var(--space-9)}.-rt-r-mr-1{--margin-right: calc(-1 * var(--space-1))}.-rt-r-mr-2{--margin-right: calc(-1 * var(--space-2))}.-rt-r-mr-3{--margin-right: calc(-1 * var(--space-3))}.-rt-r-mr-4{--margin-right: calc(-1 * var(--space-4))}.-rt-r-mr-5{--margin-right: calc(-1 * var(--space-5))}.-rt-r-mr-6{--margin-right: calc(-1 * var(--space-6))}.-rt-r-mr-7{--margin-right: calc(-1 * var(--space-7))}.-rt-r-mr-8{--margin-right: calc(-1 * var(--space-8))}.-rt-r-mr-9{--margin-right: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-mr,.xs\:rt-r-mr-0,.xs\:rt-r-mr-1,.xs\:rt-r-mr-2,.xs\:rt-r-mr-3,.xs\:rt-r-mr-4,.xs\:rt-r-mr-5,.xs\:rt-r-mr-6,.xs\:rt-r-mr-7,.xs\:rt-r-mr-8,.xs\:rt-r-mr-9,.xs\:-rt-r-mr-1,.xs\:-rt-r-mr-2,.xs\:-rt-r-mr-3,.xs\:-rt-r-mr-4,.xs\:-rt-r-mr-5,.xs\:-rt-r-mr-6,.xs\:-rt-r-mr-7,.xs\:-rt-r-mr-8,.xs\:-rt-r-mr-9{margin-right:var(--margin-right-override, var(--margin-right))}.xs\:rt-r-mr{--margin-right: var(--mr-xs) }.xs\:rt-r-mr-0{--margin-right: 0px}.xs\:rt-r-mr-1{--margin-right: var(--space-1)}.xs\:rt-r-mr-2{--margin-right: var(--space-2)}.xs\:rt-r-mr-3{--margin-right: var(--space-3)}.xs\:rt-r-mr-4{--margin-right: var(--space-4)}.xs\:rt-r-mr-5{--margin-right: var(--space-5)}.xs\:rt-r-mr-6{--margin-right: var(--space-6)}.xs\:rt-r-mr-7{--margin-right: var(--space-7)}.xs\:rt-r-mr-8{--margin-right: var(--space-8)}.xs\:rt-r-mr-9{--margin-right: var(--space-9)}.xs\:-rt-r-mr-1{--margin-right: calc(-1 * var(--space-1))}.xs\:-rt-r-mr-2{--margin-right: calc(-1 * var(--space-2))}.xs\:-rt-r-mr-3{--margin-right: calc(-1 * var(--space-3))}.xs\:-rt-r-mr-4{--margin-right: calc(-1 * var(--space-4))}.xs\:-rt-r-mr-5{--margin-right: calc(-1 * var(--space-5))}.xs\:-rt-r-mr-6{--margin-right: calc(-1 * var(--space-6))}.xs\:-rt-r-mr-7{--margin-right: calc(-1 * var(--space-7))}.xs\:-rt-r-mr-8{--margin-right: calc(-1 * var(--space-8))}.xs\:-rt-r-mr-9{--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-mr,.sm\:rt-r-mr-0,.sm\:rt-r-mr-1,.sm\:rt-r-mr-2,.sm\:rt-r-mr-3,.sm\:rt-r-mr-4,.sm\:rt-r-mr-5,.sm\:rt-r-mr-6,.sm\:rt-r-mr-7,.sm\:rt-r-mr-8,.sm\:rt-r-mr-9,.sm\:-rt-r-mr-1,.sm\:-rt-r-mr-2,.sm\:-rt-r-mr-3,.sm\:-rt-r-mr-4,.sm\:-rt-r-mr-5,.sm\:-rt-r-mr-6,.sm\:-rt-r-mr-7,.sm\:-rt-r-mr-8,.sm\:-rt-r-mr-9{margin-right:var(--margin-right-override, var(--margin-right))}.sm\:rt-r-mr{--margin-right: var(--mr-sm) }.sm\:rt-r-mr-0{--margin-right: 0px}.sm\:rt-r-mr-1{--margin-right: var(--space-1)}.sm\:rt-r-mr-2{--margin-right: var(--space-2)}.sm\:rt-r-mr-3{--margin-right: var(--space-3)}.sm\:rt-r-mr-4{--margin-right: var(--space-4)}.sm\:rt-r-mr-5{--margin-right: var(--space-5)}.sm\:rt-r-mr-6{--margin-right: var(--space-6)}.sm\:rt-r-mr-7{--margin-right: var(--space-7)}.sm\:rt-r-mr-8{--margin-right: var(--space-8)}.sm\:rt-r-mr-9{--margin-right: var(--space-9)}.sm\:-rt-r-mr-1{--margin-right: calc(-1 * var(--space-1))}.sm\:-rt-r-mr-2{--margin-right: calc(-1 * var(--space-2))}.sm\:-rt-r-mr-3{--margin-right: calc(-1 * var(--space-3))}.sm\:-rt-r-mr-4{--margin-right: calc(-1 * var(--space-4))}.sm\:-rt-r-mr-5{--margin-right: calc(-1 * var(--space-5))}.sm\:-rt-r-mr-6{--margin-right: calc(-1 * var(--space-6))}.sm\:-rt-r-mr-7{--margin-right: calc(-1 * var(--space-7))}.sm\:-rt-r-mr-8{--margin-right: calc(-1 * var(--space-8))}.sm\:-rt-r-mr-9{--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-mr,.md\:rt-r-mr-0,.md\:rt-r-mr-1,.md\:rt-r-mr-2,.md\:rt-r-mr-3,.md\:rt-r-mr-4,.md\:rt-r-mr-5,.md\:rt-r-mr-6,.md\:rt-r-mr-7,.md\:rt-r-mr-8,.md\:rt-r-mr-9,.md\:-rt-r-mr-1,.md\:-rt-r-mr-2,.md\:-rt-r-mr-3,.md\:-rt-r-mr-4,.md\:-rt-r-mr-5,.md\:-rt-r-mr-6,.md\:-rt-r-mr-7,.md\:-rt-r-mr-8,.md\:-rt-r-mr-9{margin-right:var(--margin-right-override, var(--margin-right))}.md\:rt-r-mr{--margin-right: var(--mr-md) }.md\:rt-r-mr-0{--margin-right: 0px}.md\:rt-r-mr-1{--margin-right: var(--space-1)}.md\:rt-r-mr-2{--margin-right: var(--space-2)}.md\:rt-r-mr-3{--margin-right: var(--space-3)}.md\:rt-r-mr-4{--margin-right: var(--space-4)}.md\:rt-r-mr-5{--margin-right: var(--space-5)}.md\:rt-r-mr-6{--margin-right: var(--space-6)}.md\:rt-r-mr-7{--margin-right: var(--space-7)}.md\:rt-r-mr-8{--margin-right: var(--space-8)}.md\:rt-r-mr-9{--margin-right: var(--space-9)}.md\:-rt-r-mr-1{--margin-right: calc(-1 * var(--space-1))}.md\:-rt-r-mr-2{--margin-right: calc(-1 * var(--space-2))}.md\:-rt-r-mr-3{--margin-right: calc(-1 * var(--space-3))}.md\:-rt-r-mr-4{--margin-right: calc(-1 * var(--space-4))}.md\:-rt-r-mr-5{--margin-right: calc(-1 * var(--space-5))}.md\:-rt-r-mr-6{--margin-right: calc(-1 * var(--space-6))}.md\:-rt-r-mr-7{--margin-right: calc(-1 * var(--space-7))}.md\:-rt-r-mr-8{--margin-right: calc(-1 * var(--space-8))}.md\:-rt-r-mr-9{--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-mr,.lg\:rt-r-mr-0,.lg\:rt-r-mr-1,.lg\:rt-r-mr-2,.lg\:rt-r-mr-3,.lg\:rt-r-mr-4,.lg\:rt-r-mr-5,.lg\:rt-r-mr-6,.lg\:rt-r-mr-7,.lg\:rt-r-mr-8,.lg\:rt-r-mr-9,.lg\:-rt-r-mr-1,.lg\:-rt-r-mr-2,.lg\:-rt-r-mr-3,.lg\:-rt-r-mr-4,.lg\:-rt-r-mr-5,.lg\:-rt-r-mr-6,.lg\:-rt-r-mr-7,.lg\:-rt-r-mr-8,.lg\:-rt-r-mr-9{margin-right:var(--margin-right-override, var(--margin-right))}.lg\:rt-r-mr{--margin-right: var(--mr-lg) }.lg\:rt-r-mr-0{--margin-right: 0px}.lg\:rt-r-mr-1{--margin-right: var(--space-1)}.lg\:rt-r-mr-2{--margin-right: var(--space-2)}.lg\:rt-r-mr-3{--margin-right: var(--space-3)}.lg\:rt-r-mr-4{--margin-right: var(--space-4)}.lg\:rt-r-mr-5{--margin-right: var(--space-5)}.lg\:rt-r-mr-6{--margin-right: var(--space-6)}.lg\:rt-r-mr-7{--margin-right: var(--space-7)}.lg\:rt-r-mr-8{--margin-right: var(--space-8)}.lg\:rt-r-mr-9{--margin-right: var(--space-9)}.lg\:-rt-r-mr-1{--margin-right: calc(-1 * var(--space-1))}.lg\:-rt-r-mr-2{--margin-right: calc(-1 * var(--space-2))}.lg\:-rt-r-mr-3{--margin-right: calc(-1 * var(--space-3))}.lg\:-rt-r-mr-4{--margin-right: calc(-1 * var(--space-4))}.lg\:-rt-r-mr-5{--margin-right: calc(-1 * var(--space-5))}.lg\:-rt-r-mr-6{--margin-right: calc(-1 * var(--space-6))}.lg\:-rt-r-mr-7{--margin-right: calc(-1 * var(--space-7))}.lg\:-rt-r-mr-8{--margin-right: calc(-1 * var(--space-8))}.lg\:-rt-r-mr-9{--margin-right: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-mr,.xl\:rt-r-mr-0,.xl\:rt-r-mr-1,.xl\:rt-r-mr-2,.xl\:rt-r-mr-3,.xl\:rt-r-mr-4,.xl\:rt-r-mr-5,.xl\:rt-r-mr-6,.xl\:rt-r-mr-7,.xl\:rt-r-mr-8,.xl\:rt-r-mr-9,.xl\:-rt-r-mr-1,.xl\:-rt-r-mr-2,.xl\:-rt-r-mr-3,.xl\:-rt-r-mr-4,.xl\:-rt-r-mr-5,.xl\:-rt-r-mr-6,.xl\:-rt-r-mr-7,.xl\:-rt-r-mr-8,.xl\:-rt-r-mr-9{margin-right:var(--margin-right-override, var(--margin-right))}.xl\:rt-r-mr{--margin-right: var(--mr-xl) }.xl\:rt-r-mr-0{--margin-right: 0px}.xl\:rt-r-mr-1{--margin-right: var(--space-1)}.xl\:rt-r-mr-2{--margin-right: var(--space-2)}.xl\:rt-r-mr-3{--margin-right: var(--space-3)}.xl\:rt-r-mr-4{--margin-right: var(--space-4)}.xl\:rt-r-mr-5{--margin-right: var(--space-5)}.xl\:rt-r-mr-6{--margin-right: var(--space-6)}.xl\:rt-r-mr-7{--margin-right: var(--space-7)}.xl\:rt-r-mr-8{--margin-right: var(--space-8)}.xl\:rt-r-mr-9{--margin-right: var(--space-9)}.xl\:-rt-r-mr-1{--margin-right: calc(-1 * var(--space-1))}.xl\:-rt-r-mr-2{--margin-right: calc(-1 * var(--space-2))}.xl\:-rt-r-mr-3{--margin-right: calc(-1 * var(--space-3))}.xl\:-rt-r-mr-4{--margin-right: calc(-1 * var(--space-4))}.xl\:-rt-r-mr-5{--margin-right: calc(-1 * var(--space-5))}.xl\:-rt-r-mr-6{--margin-right: calc(-1 * var(--space-6))}.xl\:-rt-r-mr-7{--margin-right: calc(-1 * var(--space-7))}.xl\:-rt-r-mr-8{--margin-right: calc(-1 * var(--space-8))}.xl\:-rt-r-mr-9{--margin-right: calc(-1 * var(--space-9))}}.rt-r-mb,.rt-r-mb-0,.rt-r-mb-1,.rt-r-mb-2,.rt-r-mb-3,.rt-r-mb-4,.rt-r-mb-5,.rt-r-mb-6,.rt-r-mb-7,.rt-r-mb-8,.rt-r-mb-9,.-rt-r-mb-1,.-rt-r-mb-2,.-rt-r-mb-3,.-rt-r-mb-4,.-rt-r-mb-5,.-rt-r-mb-6,.-rt-r-mb-7,.-rt-r-mb-8,.-rt-r-mb-9{margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.rt-r-mb{--margin-bottom: var(--mb) }.rt-r-mb-0{--margin-bottom: 0px}.rt-r-mb-1{--margin-bottom: var(--space-1)}.rt-r-mb-2{--margin-bottom: var(--space-2)}.rt-r-mb-3{--margin-bottom: var(--space-3)}.rt-r-mb-4{--margin-bottom: var(--space-4)}.rt-r-mb-5{--margin-bottom: var(--space-5)}.rt-r-mb-6{--margin-bottom: var(--space-6)}.rt-r-mb-7{--margin-bottom: var(--space-7)}.rt-r-mb-8{--margin-bottom: var(--space-8)}.rt-r-mb-9{--margin-bottom: var(--space-9)}.-rt-r-mb-1{--margin-bottom: calc(-1 * var(--space-1))}.-rt-r-mb-2{--margin-bottom: calc(-1 * var(--space-2))}.-rt-r-mb-3{--margin-bottom: calc(-1 * var(--space-3))}.-rt-r-mb-4{--margin-bottom: calc(-1 * var(--space-4))}.-rt-r-mb-5{--margin-bottom: calc(-1 * var(--space-5))}.-rt-r-mb-6{--margin-bottom: calc(-1 * var(--space-6))}.-rt-r-mb-7{--margin-bottom: calc(-1 * var(--space-7))}.-rt-r-mb-8{--margin-bottom: calc(-1 * var(--space-8))}.-rt-r-mb-9{--margin-bottom: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-mb,.xs\:rt-r-mb-0,.xs\:rt-r-mb-1,.xs\:rt-r-mb-2,.xs\:rt-r-mb-3,.xs\:rt-r-mb-4,.xs\:rt-r-mb-5,.xs\:rt-r-mb-6,.xs\:rt-r-mb-7,.xs\:rt-r-mb-8,.xs\:rt-r-mb-9,.xs\:-rt-r-mb-1,.xs\:-rt-r-mb-2,.xs\:-rt-r-mb-3,.xs\:-rt-r-mb-4,.xs\:-rt-r-mb-5,.xs\:-rt-r-mb-6,.xs\:-rt-r-mb-7,.xs\:-rt-r-mb-8,.xs\:-rt-r-mb-9{margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.xs\:rt-r-mb{--margin-bottom: var(--mb-xs) }.xs\:rt-r-mb-0{--margin-bottom: 0px}.xs\:rt-r-mb-1{--margin-bottom: var(--space-1)}.xs\:rt-r-mb-2{--margin-bottom: var(--space-2)}.xs\:rt-r-mb-3{--margin-bottom: var(--space-3)}.xs\:rt-r-mb-4{--margin-bottom: var(--space-4)}.xs\:rt-r-mb-5{--margin-bottom: var(--space-5)}.xs\:rt-r-mb-6{--margin-bottom: var(--space-6)}.xs\:rt-r-mb-7{--margin-bottom: var(--space-7)}.xs\:rt-r-mb-8{--margin-bottom: var(--space-8)}.xs\:rt-r-mb-9{--margin-bottom: var(--space-9)}.xs\:-rt-r-mb-1{--margin-bottom: calc(-1 * var(--space-1))}.xs\:-rt-r-mb-2{--margin-bottom: calc(-1 * var(--space-2))}.xs\:-rt-r-mb-3{--margin-bottom: calc(-1 * var(--space-3))}.xs\:-rt-r-mb-4{--margin-bottom: calc(-1 * var(--space-4))}.xs\:-rt-r-mb-5{--margin-bottom: calc(-1 * var(--space-5))}.xs\:-rt-r-mb-6{--margin-bottom: calc(-1 * var(--space-6))}.xs\:-rt-r-mb-7{--margin-bottom: calc(-1 * var(--space-7))}.xs\:-rt-r-mb-8{--margin-bottom: calc(-1 * var(--space-8))}.xs\:-rt-r-mb-9{--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-mb,.sm\:rt-r-mb-0,.sm\:rt-r-mb-1,.sm\:rt-r-mb-2,.sm\:rt-r-mb-3,.sm\:rt-r-mb-4,.sm\:rt-r-mb-5,.sm\:rt-r-mb-6,.sm\:rt-r-mb-7,.sm\:rt-r-mb-8,.sm\:rt-r-mb-9,.sm\:-rt-r-mb-1,.sm\:-rt-r-mb-2,.sm\:-rt-r-mb-3,.sm\:-rt-r-mb-4,.sm\:-rt-r-mb-5,.sm\:-rt-r-mb-6,.sm\:-rt-r-mb-7,.sm\:-rt-r-mb-8,.sm\:-rt-r-mb-9{margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.sm\:rt-r-mb{--margin-bottom: var(--mb-sm) }.sm\:rt-r-mb-0{--margin-bottom: 0px}.sm\:rt-r-mb-1{--margin-bottom: var(--space-1)}.sm\:rt-r-mb-2{--margin-bottom: var(--space-2)}.sm\:rt-r-mb-3{--margin-bottom: var(--space-3)}.sm\:rt-r-mb-4{--margin-bottom: var(--space-4)}.sm\:rt-r-mb-5{--margin-bottom: var(--space-5)}.sm\:rt-r-mb-6{--margin-bottom: var(--space-6)}.sm\:rt-r-mb-7{--margin-bottom: var(--space-7)}.sm\:rt-r-mb-8{--margin-bottom: var(--space-8)}.sm\:rt-r-mb-9{--margin-bottom: var(--space-9)}.sm\:-rt-r-mb-1{--margin-bottom: calc(-1 * var(--space-1))}.sm\:-rt-r-mb-2{--margin-bottom: calc(-1 * var(--space-2))}.sm\:-rt-r-mb-3{--margin-bottom: calc(-1 * var(--space-3))}.sm\:-rt-r-mb-4{--margin-bottom: calc(-1 * var(--space-4))}.sm\:-rt-r-mb-5{--margin-bottom: calc(-1 * var(--space-5))}.sm\:-rt-r-mb-6{--margin-bottom: calc(-1 * var(--space-6))}.sm\:-rt-r-mb-7{--margin-bottom: calc(-1 * var(--space-7))}.sm\:-rt-r-mb-8{--margin-bottom: calc(-1 * var(--space-8))}.sm\:-rt-r-mb-9{--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-mb,.md\:rt-r-mb-0,.md\:rt-r-mb-1,.md\:rt-r-mb-2,.md\:rt-r-mb-3,.md\:rt-r-mb-4,.md\:rt-r-mb-5,.md\:rt-r-mb-6,.md\:rt-r-mb-7,.md\:rt-r-mb-8,.md\:rt-r-mb-9,.md\:-rt-r-mb-1,.md\:-rt-r-mb-2,.md\:-rt-r-mb-3,.md\:-rt-r-mb-4,.md\:-rt-r-mb-5,.md\:-rt-r-mb-6,.md\:-rt-r-mb-7,.md\:-rt-r-mb-8,.md\:-rt-r-mb-9{margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.md\:rt-r-mb{--margin-bottom: var(--mb-md) }.md\:rt-r-mb-0{--margin-bottom: 0px}.md\:rt-r-mb-1{--margin-bottom: var(--space-1)}.md\:rt-r-mb-2{--margin-bottom: var(--space-2)}.md\:rt-r-mb-3{--margin-bottom: var(--space-3)}.md\:rt-r-mb-4{--margin-bottom: var(--space-4)}.md\:rt-r-mb-5{--margin-bottom: var(--space-5)}.md\:rt-r-mb-6{--margin-bottom: var(--space-6)}.md\:rt-r-mb-7{--margin-bottom: var(--space-7)}.md\:rt-r-mb-8{--margin-bottom: var(--space-8)}.md\:rt-r-mb-9{--margin-bottom: var(--space-9)}.md\:-rt-r-mb-1{--margin-bottom: calc(-1 * var(--space-1))}.md\:-rt-r-mb-2{--margin-bottom: calc(-1 * var(--space-2))}.md\:-rt-r-mb-3{--margin-bottom: calc(-1 * var(--space-3))}.md\:-rt-r-mb-4{--margin-bottom: calc(-1 * var(--space-4))}.md\:-rt-r-mb-5{--margin-bottom: calc(-1 * var(--space-5))}.md\:-rt-r-mb-6{--margin-bottom: calc(-1 * var(--space-6))}.md\:-rt-r-mb-7{--margin-bottom: calc(-1 * var(--space-7))}.md\:-rt-r-mb-8{--margin-bottom: calc(-1 * var(--space-8))}.md\:-rt-r-mb-9{--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-mb,.lg\:rt-r-mb-0,.lg\:rt-r-mb-1,.lg\:rt-r-mb-2,.lg\:rt-r-mb-3,.lg\:rt-r-mb-4,.lg\:rt-r-mb-5,.lg\:rt-r-mb-6,.lg\:rt-r-mb-7,.lg\:rt-r-mb-8,.lg\:rt-r-mb-9,.lg\:-rt-r-mb-1,.lg\:-rt-r-mb-2,.lg\:-rt-r-mb-3,.lg\:-rt-r-mb-4,.lg\:-rt-r-mb-5,.lg\:-rt-r-mb-6,.lg\:-rt-r-mb-7,.lg\:-rt-r-mb-8,.lg\:-rt-r-mb-9{margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.lg\:rt-r-mb{--margin-bottom: var(--mb-lg) }.lg\:rt-r-mb-0{--margin-bottom: 0px}.lg\:rt-r-mb-1{--margin-bottom: var(--space-1)}.lg\:rt-r-mb-2{--margin-bottom: var(--space-2)}.lg\:rt-r-mb-3{--margin-bottom: var(--space-3)}.lg\:rt-r-mb-4{--margin-bottom: var(--space-4)}.lg\:rt-r-mb-5{--margin-bottom: var(--space-5)}.lg\:rt-r-mb-6{--margin-bottom: var(--space-6)}.lg\:rt-r-mb-7{--margin-bottom: var(--space-7)}.lg\:rt-r-mb-8{--margin-bottom: var(--space-8)}.lg\:rt-r-mb-9{--margin-bottom: var(--space-9)}.lg\:-rt-r-mb-1{--margin-bottom: calc(-1 * var(--space-1))}.lg\:-rt-r-mb-2{--margin-bottom: calc(-1 * var(--space-2))}.lg\:-rt-r-mb-3{--margin-bottom: calc(-1 * var(--space-3))}.lg\:-rt-r-mb-4{--margin-bottom: calc(-1 * var(--space-4))}.lg\:-rt-r-mb-5{--margin-bottom: calc(-1 * var(--space-5))}.lg\:-rt-r-mb-6{--margin-bottom: calc(-1 * var(--space-6))}.lg\:-rt-r-mb-7{--margin-bottom: calc(-1 * var(--space-7))}.lg\:-rt-r-mb-8{--margin-bottom: calc(-1 * var(--space-8))}.lg\:-rt-r-mb-9{--margin-bottom: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-mb,.xl\:rt-r-mb-0,.xl\:rt-r-mb-1,.xl\:rt-r-mb-2,.xl\:rt-r-mb-3,.xl\:rt-r-mb-4,.xl\:rt-r-mb-5,.xl\:rt-r-mb-6,.xl\:rt-r-mb-7,.xl\:rt-r-mb-8,.xl\:rt-r-mb-9,.xl\:-rt-r-mb-1,.xl\:-rt-r-mb-2,.xl\:-rt-r-mb-3,.xl\:-rt-r-mb-4,.xl\:-rt-r-mb-5,.xl\:-rt-r-mb-6,.xl\:-rt-r-mb-7,.xl\:-rt-r-mb-8,.xl\:-rt-r-mb-9{margin-bottom:var(--margin-bottom-override, var(--margin-bottom))}.xl\:rt-r-mb{--margin-bottom: var(--mb-xl) }.xl\:rt-r-mb-0{--margin-bottom: 0px}.xl\:rt-r-mb-1{--margin-bottom: var(--space-1)}.xl\:rt-r-mb-2{--margin-bottom: var(--space-2)}.xl\:rt-r-mb-3{--margin-bottom: var(--space-3)}.xl\:rt-r-mb-4{--margin-bottom: var(--space-4)}.xl\:rt-r-mb-5{--margin-bottom: var(--space-5)}.xl\:rt-r-mb-6{--margin-bottom: var(--space-6)}.xl\:rt-r-mb-7{--margin-bottom: var(--space-7)}.xl\:rt-r-mb-8{--margin-bottom: var(--space-8)}.xl\:rt-r-mb-9{--margin-bottom: var(--space-9)}.xl\:-rt-r-mb-1{--margin-bottom: calc(-1 * var(--space-1))}.xl\:-rt-r-mb-2{--margin-bottom: calc(-1 * var(--space-2))}.xl\:-rt-r-mb-3{--margin-bottom: calc(-1 * var(--space-3))}.xl\:-rt-r-mb-4{--margin-bottom: calc(-1 * var(--space-4))}.xl\:-rt-r-mb-5{--margin-bottom: calc(-1 * var(--space-5))}.xl\:-rt-r-mb-6{--margin-bottom: calc(-1 * var(--space-6))}.xl\:-rt-r-mb-7{--margin-bottom: calc(-1 * var(--space-7))}.xl\:-rt-r-mb-8{--margin-bottom: calc(-1 * var(--space-8))}.xl\:-rt-r-mb-9{--margin-bottom: calc(-1 * var(--space-9))}}.rt-r-ml,.rt-r-ml-0,.rt-r-ml-1,.rt-r-ml-2,.rt-r-ml-3,.rt-r-ml-4,.rt-r-ml-5,.rt-r-ml-6,.rt-r-ml-7,.rt-r-ml-8,.rt-r-ml-9,.-rt-r-ml-1,.-rt-r-ml-2,.-rt-r-ml-3,.-rt-r-ml-4,.-rt-r-ml-5,.-rt-r-ml-6,.-rt-r-ml-7,.-rt-r-ml-8,.-rt-r-ml-9{margin-left:var(--margin-left-override, var(--margin-left))}.rt-r-ml{--margin-left: var(--ml) }.rt-r-ml-0{--margin-left: 0px}.rt-r-ml-1{--margin-left: var(--space-1)}.rt-r-ml-2{--margin-left: var(--space-2)}.rt-r-ml-3{--margin-left: var(--space-3)}.rt-r-ml-4{--margin-left: var(--space-4)}.rt-r-ml-5{--margin-left: var(--space-5)}.rt-r-ml-6{--margin-left: var(--space-6)}.rt-r-ml-7{--margin-left: var(--space-7)}.rt-r-ml-8{--margin-left: var(--space-8)}.rt-r-ml-9{--margin-left: var(--space-9)}.-rt-r-ml-1{--margin-left: calc(-1 * var(--space-1))}.-rt-r-ml-2{--margin-left: calc(-1 * var(--space-2))}.-rt-r-ml-3{--margin-left: calc(-1 * var(--space-3))}.-rt-r-ml-4{--margin-left: calc(-1 * var(--space-4))}.-rt-r-ml-5{--margin-left: calc(-1 * var(--space-5))}.-rt-r-ml-6{--margin-left: calc(-1 * var(--space-6))}.-rt-r-ml-7{--margin-left: calc(-1 * var(--space-7))}.-rt-r-ml-8{--margin-left: calc(-1 * var(--space-8))}.-rt-r-ml-9{--margin-left: calc(-1 * var(--space-9))}@media (min-width: 520px){.xs\:rt-r-ml,.xs\:rt-r-ml-0,.xs\:rt-r-ml-1,.xs\:rt-r-ml-2,.xs\:rt-r-ml-3,.xs\:rt-r-ml-4,.xs\:rt-r-ml-5,.xs\:rt-r-ml-6,.xs\:rt-r-ml-7,.xs\:rt-r-ml-8,.xs\:rt-r-ml-9,.xs\:-rt-r-ml-1,.xs\:-rt-r-ml-2,.xs\:-rt-r-ml-3,.xs\:-rt-r-ml-4,.xs\:-rt-r-ml-5,.xs\:-rt-r-ml-6,.xs\:-rt-r-ml-7,.xs\:-rt-r-ml-8,.xs\:-rt-r-ml-9{margin-left:var(--margin-left-override, var(--margin-left))}.xs\:rt-r-ml{--margin-left: var(--ml-xs) }.xs\:rt-r-ml-0{--margin-left: 0px}.xs\:rt-r-ml-1{--margin-left: var(--space-1)}.xs\:rt-r-ml-2{--margin-left: var(--space-2)}.xs\:rt-r-ml-3{--margin-left: var(--space-3)}.xs\:rt-r-ml-4{--margin-left: var(--space-4)}.xs\:rt-r-ml-5{--margin-left: var(--space-5)}.xs\:rt-r-ml-6{--margin-left: var(--space-6)}.xs\:rt-r-ml-7{--margin-left: var(--space-7)}.xs\:rt-r-ml-8{--margin-left: var(--space-8)}.xs\:rt-r-ml-9{--margin-left: var(--space-9)}.xs\:-rt-r-ml-1{--margin-left: calc(-1 * var(--space-1))}.xs\:-rt-r-ml-2{--margin-left: calc(-1 * var(--space-2))}.xs\:-rt-r-ml-3{--margin-left: calc(-1 * var(--space-3))}.xs\:-rt-r-ml-4{--margin-left: calc(-1 * var(--space-4))}.xs\:-rt-r-ml-5{--margin-left: calc(-1 * var(--space-5))}.xs\:-rt-r-ml-6{--margin-left: calc(-1 * var(--space-6))}.xs\:-rt-r-ml-7{--margin-left: calc(-1 * var(--space-7))}.xs\:-rt-r-ml-8{--margin-left: calc(-1 * var(--space-8))}.xs\:-rt-r-ml-9{--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 768px){.sm\:rt-r-ml,.sm\:rt-r-ml-0,.sm\:rt-r-ml-1,.sm\:rt-r-ml-2,.sm\:rt-r-ml-3,.sm\:rt-r-ml-4,.sm\:rt-r-ml-5,.sm\:rt-r-ml-6,.sm\:rt-r-ml-7,.sm\:rt-r-ml-8,.sm\:rt-r-ml-9,.sm\:-rt-r-ml-1,.sm\:-rt-r-ml-2,.sm\:-rt-r-ml-3,.sm\:-rt-r-ml-4,.sm\:-rt-r-ml-5,.sm\:-rt-r-ml-6,.sm\:-rt-r-ml-7,.sm\:-rt-r-ml-8,.sm\:-rt-r-ml-9{margin-left:var(--margin-left-override, var(--margin-left))}.sm\:rt-r-ml{--margin-left: var(--ml-sm) }.sm\:rt-r-ml-0{--margin-left: 0px}.sm\:rt-r-ml-1{--margin-left: var(--space-1)}.sm\:rt-r-ml-2{--margin-left: var(--space-2)}.sm\:rt-r-ml-3{--margin-left: var(--space-3)}.sm\:rt-r-ml-4{--margin-left: var(--space-4)}.sm\:rt-r-ml-5{--margin-left: var(--space-5)}.sm\:rt-r-ml-6{--margin-left: var(--space-6)}.sm\:rt-r-ml-7{--margin-left: var(--space-7)}.sm\:rt-r-ml-8{--margin-left: var(--space-8)}.sm\:rt-r-ml-9{--margin-left: var(--space-9)}.sm\:-rt-r-ml-1{--margin-left: calc(-1 * var(--space-1))}.sm\:-rt-r-ml-2{--margin-left: calc(-1 * var(--space-2))}.sm\:-rt-r-ml-3{--margin-left: calc(-1 * var(--space-3))}.sm\:-rt-r-ml-4{--margin-left: calc(-1 * var(--space-4))}.sm\:-rt-r-ml-5{--margin-left: calc(-1 * var(--space-5))}.sm\:-rt-r-ml-6{--margin-left: calc(-1 * var(--space-6))}.sm\:-rt-r-ml-7{--margin-left: calc(-1 * var(--space-7))}.sm\:-rt-r-ml-8{--margin-left: calc(-1 * var(--space-8))}.sm\:-rt-r-ml-9{--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 1024px){.md\:rt-r-ml,.md\:rt-r-ml-0,.md\:rt-r-ml-1,.md\:rt-r-ml-2,.md\:rt-r-ml-3,.md\:rt-r-ml-4,.md\:rt-r-ml-5,.md\:rt-r-ml-6,.md\:rt-r-ml-7,.md\:rt-r-ml-8,.md\:rt-r-ml-9,.md\:-rt-r-ml-1,.md\:-rt-r-ml-2,.md\:-rt-r-ml-3,.md\:-rt-r-ml-4,.md\:-rt-r-ml-5,.md\:-rt-r-ml-6,.md\:-rt-r-ml-7,.md\:-rt-r-ml-8,.md\:-rt-r-ml-9{margin-left:var(--margin-left-override, var(--margin-left))}.md\:rt-r-ml{--margin-left: var(--ml-md) }.md\:rt-r-ml-0{--margin-left: 0px}.md\:rt-r-ml-1{--margin-left: var(--space-1)}.md\:rt-r-ml-2{--margin-left: var(--space-2)}.md\:rt-r-ml-3{--margin-left: var(--space-3)}.md\:rt-r-ml-4{--margin-left: var(--space-4)}.md\:rt-r-ml-5{--margin-left: var(--space-5)}.md\:rt-r-ml-6{--margin-left: var(--space-6)}.md\:rt-r-ml-7{--margin-left: var(--space-7)}.md\:rt-r-ml-8{--margin-left: var(--space-8)}.md\:rt-r-ml-9{--margin-left: var(--space-9)}.md\:-rt-r-ml-1{--margin-left: calc(-1 * var(--space-1))}.md\:-rt-r-ml-2{--margin-left: calc(-1 * var(--space-2))}.md\:-rt-r-ml-3{--margin-left: calc(-1 * var(--space-3))}.md\:-rt-r-ml-4{--margin-left: calc(-1 * var(--space-4))}.md\:-rt-r-ml-5{--margin-left: calc(-1 * var(--space-5))}.md\:-rt-r-ml-6{--margin-left: calc(-1 * var(--space-6))}.md\:-rt-r-ml-7{--margin-left: calc(-1 * var(--space-7))}.md\:-rt-r-ml-8{--margin-left: calc(-1 * var(--space-8))}.md\:-rt-r-ml-9{--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 1280px){.lg\:rt-r-ml,.lg\:rt-r-ml-0,.lg\:rt-r-ml-1,.lg\:rt-r-ml-2,.lg\:rt-r-ml-3,.lg\:rt-r-ml-4,.lg\:rt-r-ml-5,.lg\:rt-r-ml-6,.lg\:rt-r-ml-7,.lg\:rt-r-ml-8,.lg\:rt-r-ml-9,.lg\:-rt-r-ml-1,.lg\:-rt-r-ml-2,.lg\:-rt-r-ml-3,.lg\:-rt-r-ml-4,.lg\:-rt-r-ml-5,.lg\:-rt-r-ml-6,.lg\:-rt-r-ml-7,.lg\:-rt-r-ml-8,.lg\:-rt-r-ml-9{margin-left:var(--margin-left-override, var(--margin-left))}.lg\:rt-r-ml{--margin-left: var(--ml-lg) }.lg\:rt-r-ml-0{--margin-left: 0px}.lg\:rt-r-ml-1{--margin-left: var(--space-1)}.lg\:rt-r-ml-2{--margin-left: var(--space-2)}.lg\:rt-r-ml-3{--margin-left: var(--space-3)}.lg\:rt-r-ml-4{--margin-left: var(--space-4)}.lg\:rt-r-ml-5{--margin-left: var(--space-5)}.lg\:rt-r-ml-6{--margin-left: var(--space-6)}.lg\:rt-r-ml-7{--margin-left: var(--space-7)}.lg\:rt-r-ml-8{--margin-left: var(--space-8)}.lg\:rt-r-ml-9{--margin-left: var(--space-9)}.lg\:-rt-r-ml-1{--margin-left: calc(-1 * var(--space-1))}.lg\:-rt-r-ml-2{--margin-left: calc(-1 * var(--space-2))}.lg\:-rt-r-ml-3{--margin-left: calc(-1 * var(--space-3))}.lg\:-rt-r-ml-4{--margin-left: calc(-1 * var(--space-4))}.lg\:-rt-r-ml-5{--margin-left: calc(-1 * var(--space-5))}.lg\:-rt-r-ml-6{--margin-left: calc(-1 * var(--space-6))}.lg\:-rt-r-ml-7{--margin-left: calc(-1 * var(--space-7))}.lg\:-rt-r-ml-8{--margin-left: calc(-1 * var(--space-8))}.lg\:-rt-r-ml-9{--margin-left: calc(-1 * var(--space-9))}}@media (min-width: 1640px){.xl\:rt-r-ml,.xl\:rt-r-ml-0,.xl\:rt-r-ml-1,.xl\:rt-r-ml-2,.xl\:rt-r-ml-3,.xl\:rt-r-ml-4,.xl\:rt-r-ml-5,.xl\:rt-r-ml-6,.xl\:rt-r-ml-7,.xl\:rt-r-ml-8,.xl\:rt-r-ml-9,.xl\:-rt-r-ml-1,.xl\:-rt-r-ml-2,.xl\:-rt-r-ml-3,.xl\:-rt-r-ml-4,.xl\:-rt-r-ml-5,.xl\:-rt-r-ml-6,.xl\:-rt-r-ml-7,.xl\:-rt-r-ml-8,.xl\:-rt-r-ml-9{margin-left:var(--margin-left-override, var(--margin-left))}.xl\:rt-r-ml{--margin-left: var(--ml-xl) }.xl\:rt-r-ml-0{--margin-left: 0px}.xl\:rt-r-ml-1{--margin-left: var(--space-1)}.xl\:rt-r-ml-2{--margin-left: var(--space-2)}.xl\:rt-r-ml-3{--margin-left: var(--space-3)}.xl\:rt-r-ml-4{--margin-left: var(--space-4)}.xl\:rt-r-ml-5{--margin-left: var(--space-5)}.xl\:rt-r-ml-6{--margin-left: var(--space-6)}.xl\:rt-r-ml-7{--margin-left: var(--space-7)}.xl\:rt-r-ml-8{--margin-left: var(--space-8)}.xl\:rt-r-ml-9{--margin-left: var(--space-9)}.xl\:-rt-r-ml-1{--margin-left: calc(-1 * var(--space-1))}.xl\:-rt-r-ml-2{--margin-left: calc(-1 * var(--space-2))}.xl\:-rt-r-ml-3{--margin-left: calc(-1 * var(--space-3))}.xl\:-rt-r-ml-4{--margin-left: calc(-1 * var(--space-4))}.xl\:-rt-r-ml-5{--margin-left: calc(-1 * var(--space-5))}.xl\:-rt-r-ml-6{--margin-left: calc(-1 * var(--space-6))}.xl\:-rt-r-ml-7{--margin-left: calc(-1 * var(--space-7))}.xl\:-rt-r-ml-8{--margin-left: calc(-1 * var(--space-8))}.xl\:-rt-r-ml-9{--margin-left: calc(-1 * var(--space-9))}}.rt-r-overflow-visible{overflow:visible}.rt-r-overflow-hidden{overflow:hidden}.rt-r-overflow-clip{overflow:clip}.rt-r-overflow-scroll{overflow:scroll}.rt-r-overflow-auto{overflow:auto}.rt-r-ox-visible{overflow-x:visible}.rt-r-ox-hidden{overflow-x:hidden}.rt-r-ox-clip{overflow-x:clip}.rt-r-ox-scroll{overflow-x:scroll}.rt-r-ox-auto{overflow-x:auto}.rt-r-oy-visible{overflow-y:visible}.rt-r-oy-hidden{overflow-y:hidden}.rt-r-oy-clip{overflow-y:clip}.rt-r-oy-scroll{overflow-y:scroll}.rt-r-oy-auto{overflow-y:auto}@media (min-width: 520px){.xs\:rt-r-overflow-visible{overflow:visible}.xs\:rt-r-overflow-hidden{overflow:hidden}.xs\:rt-r-overflow-clip{overflow:clip}.xs\:rt-r-overflow-scroll{overflow:scroll}.xs\:rt-r-overflow-auto{overflow:auto}.xs\:rt-r-ox-visible{overflow-x:visible}.xs\:rt-r-ox-hidden{overflow-x:hidden}.xs\:rt-r-ox-clip{overflow-x:clip}.xs\:rt-r-ox-scroll{overflow-x:scroll}.xs\:rt-r-ox-auto{overflow-x:auto}.xs\:rt-r-oy-visible{overflow-y:visible}.xs\:rt-r-oy-hidden{overflow-y:hidden}.xs\:rt-r-oy-clip{overflow-y:clip}.xs\:rt-r-oy-scroll{overflow-y:scroll}.xs\:rt-r-oy-auto{overflow-y:auto}}@media (min-width: 768px){.sm\:rt-r-overflow-visible{overflow:visible}.sm\:rt-r-overflow-hidden{overflow:hidden}.sm\:rt-r-overflow-clip{overflow:clip}.sm\:rt-r-overflow-scroll{overflow:scroll}.sm\:rt-r-overflow-auto{overflow:auto}.sm\:rt-r-ox-visible{overflow-x:visible}.sm\:rt-r-ox-hidden{overflow-x:hidden}.sm\:rt-r-ox-clip{overflow-x:clip}.sm\:rt-r-ox-scroll{overflow-x:scroll}.sm\:rt-r-ox-auto{overflow-x:auto}.sm\:rt-r-oy-visible{overflow-y:visible}.sm\:rt-r-oy-hidden{overflow-y:hidden}.sm\:rt-r-oy-clip{overflow-y:clip}.sm\:rt-r-oy-scroll{overflow-y:scroll}.sm\:rt-r-oy-auto{overflow-y:auto}}@media (min-width: 1024px){.md\:rt-r-overflow-visible{overflow:visible}.md\:rt-r-overflow-hidden{overflow:hidden}.md\:rt-r-overflow-clip{overflow:clip}.md\:rt-r-overflow-scroll{overflow:scroll}.md\:rt-r-overflow-auto{overflow:auto}.md\:rt-r-ox-visible{overflow-x:visible}.md\:rt-r-ox-hidden{overflow-x:hidden}.md\:rt-r-ox-clip{overflow-x:clip}.md\:rt-r-ox-scroll{overflow-x:scroll}.md\:rt-r-ox-auto{overflow-x:auto}.md\:rt-r-oy-visible{overflow-y:visible}.md\:rt-r-oy-hidden{overflow-y:hidden}.md\:rt-r-oy-clip{overflow-y:clip}.md\:rt-r-oy-scroll{overflow-y:scroll}.md\:rt-r-oy-auto{overflow-y:auto}}@media (min-width: 1280px){.lg\:rt-r-overflow-visible{overflow:visible}.lg\:rt-r-overflow-hidden{overflow:hidden}.lg\:rt-r-overflow-clip{overflow:clip}.lg\:rt-r-overflow-scroll{overflow:scroll}.lg\:rt-r-overflow-auto{overflow:auto}.lg\:rt-r-ox-visible{overflow-x:visible}.lg\:rt-r-ox-hidden{overflow-x:hidden}.lg\:rt-r-ox-clip{overflow-x:clip}.lg\:rt-r-ox-scroll{overflow-x:scroll}.lg\:rt-r-ox-auto{overflow-x:auto}.lg\:rt-r-oy-visible{overflow-y:visible}.lg\:rt-r-oy-hidden{overflow-y:hidden}.lg\:rt-r-oy-clip{overflow-y:clip}.lg\:rt-r-oy-scroll{overflow-y:scroll}.lg\:rt-r-oy-auto{overflow-y:auto}}@media (min-width: 1640px){.xl\:rt-r-overflow-visible{overflow:visible}.xl\:rt-r-overflow-hidden{overflow:hidden}.xl\:rt-r-overflow-clip{overflow:clip}.xl\:rt-r-overflow-scroll{overflow:scroll}.xl\:rt-r-overflow-auto{overflow:auto}.xl\:rt-r-ox-visible{overflow-x:visible}.xl\:rt-r-ox-hidden{overflow-x:hidden}.xl\:rt-r-ox-clip{overflow-x:clip}.xl\:rt-r-ox-scroll{overflow-x:scroll}.xl\:rt-r-ox-auto{overflow-x:auto}.xl\:rt-r-oy-visible{overflow-y:visible}.xl\:rt-r-oy-hidden{overflow-y:hidden}.xl\:rt-r-oy-clip{overflow-y:clip}.xl\:rt-r-oy-scroll{overflow-y:scroll}.xl\:rt-r-oy-auto{overflow-y:auto}}.rt-r-p{padding:var(--p)}.rt-r-p-0{padding:0}.rt-r-p-1{padding:var(--space-1)}.rt-r-p-2{padding:var(--space-2)}.rt-r-p-3{padding:var(--space-3)}.rt-r-p-4{padding:var(--space-4)}.rt-r-p-5{padding:var(--space-5)}.rt-r-p-6{padding:var(--space-6)}.rt-r-p-7{padding:var(--space-7)}.rt-r-p-8{padding:var(--space-8)}.rt-r-p-9{padding:var(--space-9)}.rt-r-p-inset{padding-top:var(--inset-padding-top);padding-right:var(--inset-padding-right);padding-bottom:var(--inset-padding-bottom);padding-left:var(--inset-padding-left)}@media (min-width: 520px){.xs\:rt-r-p{padding:var(--p-xs)}.xs\:rt-r-p-0{padding:0}.xs\:rt-r-p-1{padding:var(--space-1)}.xs\:rt-r-p-2{padding:var(--space-2)}.xs\:rt-r-p-3{padding:var(--space-3)}.xs\:rt-r-p-4{padding:var(--space-4)}.xs\:rt-r-p-5{padding:var(--space-5)}.xs\:rt-r-p-6{padding:var(--space-6)}.xs\:rt-r-p-7{padding:var(--space-7)}.xs\:rt-r-p-8{padding:var(--space-8)}.xs\:rt-r-p-9{padding:var(--space-9)}.xs\:rt-r-p-inset{padding-top:var(--inset-padding-top);padding-right:var(--inset-padding-right);padding-bottom:var(--inset-padding-bottom);padding-left:var(--inset-padding-left)}}@media (min-width: 768px){.sm\:rt-r-p{padding:var(--p-sm)}.sm\:rt-r-p-0{padding:0}.sm\:rt-r-p-1{padding:var(--space-1)}.sm\:rt-r-p-2{padding:var(--space-2)}.sm\:rt-r-p-3{padding:var(--space-3)}.sm\:rt-r-p-4{padding:var(--space-4)}.sm\:rt-r-p-5{padding:var(--space-5)}.sm\:rt-r-p-6{padding:var(--space-6)}.sm\:rt-r-p-7{padding:var(--space-7)}.sm\:rt-r-p-8{padding:var(--space-8)}.sm\:rt-r-p-9{padding:var(--space-9)}.sm\:rt-r-p-inset{padding-top:var(--inset-padding-top);padding-right:var(--inset-padding-right);padding-bottom:var(--inset-padding-bottom);padding-left:var(--inset-padding-left)}}@media (min-width: 1024px){.md\:rt-r-p{padding:var(--p-md)}.md\:rt-r-p-0{padding:0}.md\:rt-r-p-1{padding:var(--space-1)}.md\:rt-r-p-2{padding:var(--space-2)}.md\:rt-r-p-3{padding:var(--space-3)}.md\:rt-r-p-4{padding:var(--space-4)}.md\:rt-r-p-5{padding:var(--space-5)}.md\:rt-r-p-6{padding:var(--space-6)}.md\:rt-r-p-7{padding:var(--space-7)}.md\:rt-r-p-8{padding:var(--space-8)}.md\:rt-r-p-9{padding:var(--space-9)}.md\:rt-r-p-inset{padding-top:var(--inset-padding-top);padding-right:var(--inset-padding-right);padding-bottom:var(--inset-padding-bottom);padding-left:var(--inset-padding-left)}}@media (min-width: 1280px){.lg\:rt-r-p{padding:var(--p-lg)}.lg\:rt-r-p-0{padding:0}.lg\:rt-r-p-1{padding:var(--space-1)}.lg\:rt-r-p-2{padding:var(--space-2)}.lg\:rt-r-p-3{padding:var(--space-3)}.lg\:rt-r-p-4{padding:var(--space-4)}.lg\:rt-r-p-5{padding:var(--space-5)}.lg\:rt-r-p-6{padding:var(--space-6)}.lg\:rt-r-p-7{padding:var(--space-7)}.lg\:rt-r-p-8{padding:var(--space-8)}.lg\:rt-r-p-9{padding:var(--space-9)}.lg\:rt-r-p-inset{padding-top:var(--inset-padding-top);padding-right:var(--inset-padding-right);padding-bottom:var(--inset-padding-bottom);padding-left:var(--inset-padding-left)}}@media (min-width: 1640px){.xl\:rt-r-p{padding:var(--p-xl)}.xl\:rt-r-p-0{padding:0}.xl\:rt-r-p-1{padding:var(--space-1)}.xl\:rt-r-p-2{padding:var(--space-2)}.xl\:rt-r-p-3{padding:var(--space-3)}.xl\:rt-r-p-4{padding:var(--space-4)}.xl\:rt-r-p-5{padding:var(--space-5)}.xl\:rt-r-p-6{padding:var(--space-6)}.xl\:rt-r-p-7{padding:var(--space-7)}.xl\:rt-r-p-8{padding:var(--space-8)}.xl\:rt-r-p-9{padding:var(--space-9)}.xl\:rt-r-p-inset{padding-top:var(--inset-padding-top);padding-right:var(--inset-padding-right);padding-bottom:var(--inset-padding-bottom);padding-left:var(--inset-padding-left)}}.rt-r-px{padding-left:var(--pl);padding-right:var(--pr)}.rt-r-px-0{padding-left:0;padding-right:0}.rt-r-px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.rt-r-px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.rt-r-px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.rt-r-px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.rt-r-px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.rt-r-px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.rt-r-px-7{padding-left:var(--space-7);padding-right:var(--space-7)}.rt-r-px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.rt-r-px-9{padding-left:var(--space-9);padding-right:var(--space-9)}.rt-r-px-inset{padding-left:var(--inset-padding-left);padding-right:var(--inset-padding-right)}@media (min-width: 520px){.xs\:rt-r-px{padding-left:var(--pl-xs);padding-right:var(--pr-xs)}.xs\:rt-r-px-0{padding-left:0;padding-right:0}.xs\:rt-r-px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.xs\:rt-r-px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.xs\:rt-r-px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.xs\:rt-r-px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.xs\:rt-r-px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.xs\:rt-r-px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.xs\:rt-r-px-7{padding-left:var(--space-7);padding-right:var(--space-7)}.xs\:rt-r-px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.xs\:rt-r-px-9{padding-left:var(--space-9);padding-right:var(--space-9)}.xs\:rt-r-px-inset{padding-left:var(--inset-padding-left);padding-right:var(--inset-padding-right)}}@media (min-width: 768px){.sm\:rt-r-px{padding-left:var(--pl-sm);padding-right:var(--pr-sm)}.sm\:rt-r-px-0{padding-left:0;padding-right:0}.sm\:rt-r-px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.sm\:rt-r-px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.sm\:rt-r-px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.sm\:rt-r-px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.sm\:rt-r-px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.sm\:rt-r-px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.sm\:rt-r-px-7{padding-left:var(--space-7);padding-right:var(--space-7)}.sm\:rt-r-px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.sm\:rt-r-px-9{padding-left:var(--space-9);padding-right:var(--space-9)}.sm\:rt-r-px-inset{padding-left:var(--inset-padding-left);padding-right:var(--inset-padding-right)}}@media (min-width: 1024px){.md\:rt-r-px{padding-left:var(--pl-md);padding-right:var(--pr-md)}.md\:rt-r-px-0{padding-left:0;padding-right:0}.md\:rt-r-px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.md\:rt-r-px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.md\:rt-r-px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.md\:rt-r-px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.md\:rt-r-px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.md\:rt-r-px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.md\:rt-r-px-7{padding-left:var(--space-7);padding-right:var(--space-7)}.md\:rt-r-px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.md\:rt-r-px-9{padding-left:var(--space-9);padding-right:var(--space-9)}.md\:rt-r-px-inset{padding-left:var(--inset-padding-left);padding-right:var(--inset-padding-right)}}@media (min-width: 1280px){.lg\:rt-r-px{padding-left:var(--pl-lg);padding-right:var(--pr-lg)}.lg\:rt-r-px-0{padding-left:0;padding-right:0}.lg\:rt-r-px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.lg\:rt-r-px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.lg\:rt-r-px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.lg\:rt-r-px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.lg\:rt-r-px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.lg\:rt-r-px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.lg\:rt-r-px-7{padding-left:var(--space-7);padding-right:var(--space-7)}.lg\:rt-r-px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.lg\:rt-r-px-9{padding-left:var(--space-9);padding-right:var(--space-9)}.lg\:rt-r-px-inset{padding-left:var(--inset-padding-left);padding-right:var(--inset-padding-right)}}@media (min-width: 1640px){.xl\:rt-r-px{padding-left:var(--pl-xl);padding-right:var(--pr-xl)}.xl\:rt-r-px-0{padding-left:0;padding-right:0}.xl\:rt-r-px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.xl\:rt-r-px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.xl\:rt-r-px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.xl\:rt-r-px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.xl\:rt-r-px-5{padding-left:var(--space-5);padding-right:var(--space-5)}.xl\:rt-r-px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.xl\:rt-r-px-7{padding-left:var(--space-7);padding-right:var(--space-7)}.xl\:rt-r-px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.xl\:rt-r-px-9{padding-left:var(--space-9);padding-right:var(--space-9)}.xl\:rt-r-px-inset{padding-left:var(--inset-padding-left);padding-right:var(--inset-padding-right)}}.rt-r-py{padding-top:var(--pt);padding-bottom:var(--pb)}.rt-r-py-0{padding-top:0;padding-bottom:0}.rt-r-py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.rt-r-py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.rt-r-py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.rt-r-py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.rt-r-py-5{padding-top:var(--space-5);padding-bottom:var(--space-5)}.rt-r-py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.rt-r-py-7{padding-top:var(--space-7);padding-bottom:var(--space-7)}.rt-r-py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.rt-r-py-9{padding-top:var(--space-9);padding-bottom:var(--space-9)}.rt-r-py-inset{padding-top:var(--inset-padding-top);padding-bottom:var(--inset-padding-bottom)}@media (min-width: 520px){.xs\:rt-r-py{padding-top:var(--pt-xs);padding-bottom:var(--pb-xs)}.xs\:rt-r-py-0{padding-top:0;padding-bottom:0}.xs\:rt-r-py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.xs\:rt-r-py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.xs\:rt-r-py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.xs\:rt-r-py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.xs\:rt-r-py-5{padding-top:var(--space-5);padding-bottom:var(--space-5)}.xs\:rt-r-py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.xs\:rt-r-py-7{padding-top:var(--space-7);padding-bottom:var(--space-7)}.xs\:rt-r-py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.xs\:rt-r-py-9{padding-top:var(--space-9);padding-bottom:var(--space-9)}.xs\:rt-r-py-inset{padding-top:var(--inset-padding-top);padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 768px){.sm\:rt-r-py{padding-top:var(--pt-sm);padding-bottom:var(--pb-sm)}.sm\:rt-r-py-0{padding-top:0;padding-bottom:0}.sm\:rt-r-py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.sm\:rt-r-py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.sm\:rt-r-py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.sm\:rt-r-py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.sm\:rt-r-py-5{padding-top:var(--space-5);padding-bottom:var(--space-5)}.sm\:rt-r-py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.sm\:rt-r-py-7{padding-top:var(--space-7);padding-bottom:var(--space-7)}.sm\:rt-r-py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.sm\:rt-r-py-9{padding-top:var(--space-9);padding-bottom:var(--space-9)}.sm\:rt-r-py-inset{padding-top:var(--inset-padding-top);padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 1024px){.md\:rt-r-py{padding-top:var(--pt-md);padding-bottom:var(--pb-md)}.md\:rt-r-py-0{padding-top:0;padding-bottom:0}.md\:rt-r-py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.md\:rt-r-py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.md\:rt-r-py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.md\:rt-r-py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.md\:rt-r-py-5{padding-top:var(--space-5);padding-bottom:var(--space-5)}.md\:rt-r-py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.md\:rt-r-py-7{padding-top:var(--space-7);padding-bottom:var(--space-7)}.md\:rt-r-py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.md\:rt-r-py-9{padding-top:var(--space-9);padding-bottom:var(--space-9)}.md\:rt-r-py-inset{padding-top:var(--inset-padding-top);padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 1280px){.lg\:rt-r-py{padding-top:var(--pt-lg);padding-bottom:var(--pb-lg)}.lg\:rt-r-py-0{padding-top:0;padding-bottom:0}.lg\:rt-r-py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.lg\:rt-r-py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.lg\:rt-r-py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.lg\:rt-r-py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.lg\:rt-r-py-5{padding-top:var(--space-5);padding-bottom:var(--space-5)}.lg\:rt-r-py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.lg\:rt-r-py-7{padding-top:var(--space-7);padding-bottom:var(--space-7)}.lg\:rt-r-py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.lg\:rt-r-py-9{padding-top:var(--space-9);padding-bottom:var(--space-9)}.lg\:rt-r-py-inset{padding-top:var(--inset-padding-top);padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 1640px){.xl\:rt-r-py{padding-top:var(--pt-xl);padding-bottom:var(--pb-xl)}.xl\:rt-r-py-0{padding-top:0;padding-bottom:0}.xl\:rt-r-py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.xl\:rt-r-py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.xl\:rt-r-py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.xl\:rt-r-py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.xl\:rt-r-py-5{padding-top:var(--space-5);padding-bottom:var(--space-5)}.xl\:rt-r-py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.xl\:rt-r-py-7{padding-top:var(--space-7);padding-bottom:var(--space-7)}.xl\:rt-r-py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.xl\:rt-r-py-9{padding-top:var(--space-9);padding-bottom:var(--space-9)}.xl\:rt-r-py-inset{padding-top:var(--inset-padding-top);padding-bottom:var(--inset-padding-bottom)}}.rt-r-pt{padding-top:var(--pt)}.rt-r-pt-0{padding-top:0}.rt-r-pt-1{padding-top:var(--space-1)}.rt-r-pt-2{padding-top:var(--space-2)}.rt-r-pt-3{padding-top:var(--space-3)}.rt-r-pt-4{padding-top:var(--space-4)}.rt-r-pt-5{padding-top:var(--space-5)}.rt-r-pt-6{padding-top:var(--space-6)}.rt-r-pt-7{padding-top:var(--space-7)}.rt-r-pt-8{padding-top:var(--space-8)}.rt-r-pt-9{padding-top:var(--space-9)}.rt-r-pt-inset{padding-top:var(--inset-padding-top)}@media (min-width: 520px){.xs\:rt-r-pt{padding-top:var(--pt-xs)}.xs\:rt-r-pt-0{padding-top:0}.xs\:rt-r-pt-1{padding-top:var(--space-1)}.xs\:rt-r-pt-2{padding-top:var(--space-2)}.xs\:rt-r-pt-3{padding-top:var(--space-3)}.xs\:rt-r-pt-4{padding-top:var(--space-4)}.xs\:rt-r-pt-5{padding-top:var(--space-5)}.xs\:rt-r-pt-6{padding-top:var(--space-6)}.xs\:rt-r-pt-7{padding-top:var(--space-7)}.xs\:rt-r-pt-8{padding-top:var(--space-8)}.xs\:rt-r-pt-9{padding-top:var(--space-9)}.xs\:rt-r-pt-inset{padding-top:var(--inset-padding-top)}}@media (min-width: 768px){.sm\:rt-r-pt{padding-top:var(--pt-sm)}.sm\:rt-r-pt-0{padding-top:0}.sm\:rt-r-pt-1{padding-top:var(--space-1)}.sm\:rt-r-pt-2{padding-top:var(--space-2)}.sm\:rt-r-pt-3{padding-top:var(--space-3)}.sm\:rt-r-pt-4{padding-top:var(--space-4)}.sm\:rt-r-pt-5{padding-top:var(--space-5)}.sm\:rt-r-pt-6{padding-top:var(--space-6)}.sm\:rt-r-pt-7{padding-top:var(--space-7)}.sm\:rt-r-pt-8{padding-top:var(--space-8)}.sm\:rt-r-pt-9{padding-top:var(--space-9)}.sm\:rt-r-pt-inset{padding-top:var(--inset-padding-top)}}@media (min-width: 1024px){.md\:rt-r-pt{padding-top:var(--pt-md)}.md\:rt-r-pt-0{padding-top:0}.md\:rt-r-pt-1{padding-top:var(--space-1)}.md\:rt-r-pt-2{padding-top:var(--space-2)}.md\:rt-r-pt-3{padding-top:var(--space-3)}.md\:rt-r-pt-4{padding-top:var(--space-4)}.md\:rt-r-pt-5{padding-top:var(--space-5)}.md\:rt-r-pt-6{padding-top:var(--space-6)}.md\:rt-r-pt-7{padding-top:var(--space-7)}.md\:rt-r-pt-8{padding-top:var(--space-8)}.md\:rt-r-pt-9{padding-top:var(--space-9)}.md\:rt-r-pt-inset{padding-top:var(--inset-padding-top)}}@media (min-width: 1280px){.lg\:rt-r-pt{padding-top:var(--pt-lg)}.lg\:rt-r-pt-0{padding-top:0}.lg\:rt-r-pt-1{padding-top:var(--space-1)}.lg\:rt-r-pt-2{padding-top:var(--space-2)}.lg\:rt-r-pt-3{padding-top:var(--space-3)}.lg\:rt-r-pt-4{padding-top:var(--space-4)}.lg\:rt-r-pt-5{padding-top:var(--space-5)}.lg\:rt-r-pt-6{padding-top:var(--space-6)}.lg\:rt-r-pt-7{padding-top:var(--space-7)}.lg\:rt-r-pt-8{padding-top:var(--space-8)}.lg\:rt-r-pt-9{padding-top:var(--space-9)}.lg\:rt-r-pt-inset{padding-top:var(--inset-padding-top)}}@media (min-width: 1640px){.xl\:rt-r-pt{padding-top:var(--pt-xl)}.xl\:rt-r-pt-0{padding-top:0}.xl\:rt-r-pt-1{padding-top:var(--space-1)}.xl\:rt-r-pt-2{padding-top:var(--space-2)}.xl\:rt-r-pt-3{padding-top:var(--space-3)}.xl\:rt-r-pt-4{padding-top:var(--space-4)}.xl\:rt-r-pt-5{padding-top:var(--space-5)}.xl\:rt-r-pt-6{padding-top:var(--space-6)}.xl\:rt-r-pt-7{padding-top:var(--space-7)}.xl\:rt-r-pt-8{padding-top:var(--space-8)}.xl\:rt-r-pt-9{padding-top:var(--space-9)}.xl\:rt-r-pt-inset{padding-top:var(--inset-padding-top)}}.rt-r-pr{padding-right:var(--pr)}.rt-r-pr-0{padding-right:0}.rt-r-pr-1{padding-right:var(--space-1)}.rt-r-pr-2{padding-right:var(--space-2)}.rt-r-pr-3{padding-right:var(--space-3)}.rt-r-pr-4{padding-right:var(--space-4)}.rt-r-pr-5{padding-right:var(--space-5)}.rt-r-pr-6{padding-right:var(--space-6)}.rt-r-pr-7{padding-right:var(--space-7)}.rt-r-pr-8{padding-right:var(--space-8)}.rt-r-pr-9{padding-right:var(--space-9)}.rt-r-pr-inset{padding-right:var(--inset-padding-right)}@media (min-width: 520px){.xs\:rt-r-pr{padding-right:var(--pr-xs)}.xs\:rt-r-pr-0{padding-right:0}.xs\:rt-r-pr-1{padding-right:var(--space-1)}.xs\:rt-r-pr-2{padding-right:var(--space-2)}.xs\:rt-r-pr-3{padding-right:var(--space-3)}.xs\:rt-r-pr-4{padding-right:var(--space-4)}.xs\:rt-r-pr-5{padding-right:var(--space-5)}.xs\:rt-r-pr-6{padding-right:var(--space-6)}.xs\:rt-r-pr-7{padding-right:var(--space-7)}.xs\:rt-r-pr-8{padding-right:var(--space-8)}.xs\:rt-r-pr-9{padding-right:var(--space-9)}.xs\:rt-r-pr-inset{padding-right:var(--inset-padding-right)}}@media (min-width: 768px){.sm\:rt-r-pr{padding-right:var(--pr-sm)}.sm\:rt-r-pr-0{padding-right:0}.sm\:rt-r-pr-1{padding-right:var(--space-1)}.sm\:rt-r-pr-2{padding-right:var(--space-2)}.sm\:rt-r-pr-3{padding-right:var(--space-3)}.sm\:rt-r-pr-4{padding-right:var(--space-4)}.sm\:rt-r-pr-5{padding-right:var(--space-5)}.sm\:rt-r-pr-6{padding-right:var(--space-6)}.sm\:rt-r-pr-7{padding-right:var(--space-7)}.sm\:rt-r-pr-8{padding-right:var(--space-8)}.sm\:rt-r-pr-9{padding-right:var(--space-9)}.sm\:rt-r-pr-inset{padding-right:var(--inset-padding-right)}}@media (min-width: 1024px){.md\:rt-r-pr{padding-right:var(--pr-md)}.md\:rt-r-pr-0{padding-right:0}.md\:rt-r-pr-1{padding-right:var(--space-1)}.md\:rt-r-pr-2{padding-right:var(--space-2)}.md\:rt-r-pr-3{padding-right:var(--space-3)}.md\:rt-r-pr-4{padding-right:var(--space-4)}.md\:rt-r-pr-5{padding-right:var(--space-5)}.md\:rt-r-pr-6{padding-right:var(--space-6)}.md\:rt-r-pr-7{padding-right:var(--space-7)}.md\:rt-r-pr-8{padding-right:var(--space-8)}.md\:rt-r-pr-9{padding-right:var(--space-9)}.md\:rt-r-pr-inset{padding-right:var(--inset-padding-right)}}@media (min-width: 1280px){.lg\:rt-r-pr{padding-right:var(--pr-lg)}.lg\:rt-r-pr-0{padding-right:0}.lg\:rt-r-pr-1{padding-right:var(--space-1)}.lg\:rt-r-pr-2{padding-right:var(--space-2)}.lg\:rt-r-pr-3{padding-right:var(--space-3)}.lg\:rt-r-pr-4{padding-right:var(--space-4)}.lg\:rt-r-pr-5{padding-right:var(--space-5)}.lg\:rt-r-pr-6{padding-right:var(--space-6)}.lg\:rt-r-pr-7{padding-right:var(--space-7)}.lg\:rt-r-pr-8{padding-right:var(--space-8)}.lg\:rt-r-pr-9{padding-right:var(--space-9)}.lg\:rt-r-pr-inset{padding-right:var(--inset-padding-right)}}@media (min-width: 1640px){.xl\:rt-r-pr{padding-right:var(--pr-xl)}.xl\:rt-r-pr-0{padding-right:0}.xl\:rt-r-pr-1{padding-right:var(--space-1)}.xl\:rt-r-pr-2{padding-right:var(--space-2)}.xl\:rt-r-pr-3{padding-right:var(--space-3)}.xl\:rt-r-pr-4{padding-right:var(--space-4)}.xl\:rt-r-pr-5{padding-right:var(--space-5)}.xl\:rt-r-pr-6{padding-right:var(--space-6)}.xl\:rt-r-pr-7{padding-right:var(--space-7)}.xl\:rt-r-pr-8{padding-right:var(--space-8)}.xl\:rt-r-pr-9{padding-right:var(--space-9)}.xl\:rt-r-pr-inset{padding-right:var(--inset-padding-right)}}.rt-r-pb{padding-bottom:var(--pb)}.rt-r-pb-0{padding-bottom:0}.rt-r-pb-1{padding-bottom:var(--space-1)}.rt-r-pb-2{padding-bottom:var(--space-2)}.rt-r-pb-3{padding-bottom:var(--space-3)}.rt-r-pb-4{padding-bottom:var(--space-4)}.rt-r-pb-5{padding-bottom:var(--space-5)}.rt-r-pb-6{padding-bottom:var(--space-6)}.rt-r-pb-7{padding-bottom:var(--space-7)}.rt-r-pb-8{padding-bottom:var(--space-8)}.rt-r-pb-9{padding-bottom:var(--space-9)}.rt-r-pb-inset{padding-bottom:var(--inset-padding-bottom)}@media (min-width: 520px){.xs\:rt-r-pb{padding-bottom:var(--pb-xs)}.xs\:rt-r-pb-0{padding-bottom:0}.xs\:rt-r-pb-1{padding-bottom:var(--space-1)}.xs\:rt-r-pb-2{padding-bottom:var(--space-2)}.xs\:rt-r-pb-3{padding-bottom:var(--space-3)}.xs\:rt-r-pb-4{padding-bottom:var(--space-4)}.xs\:rt-r-pb-5{padding-bottom:var(--space-5)}.xs\:rt-r-pb-6{padding-bottom:var(--space-6)}.xs\:rt-r-pb-7{padding-bottom:var(--space-7)}.xs\:rt-r-pb-8{padding-bottom:var(--space-8)}.xs\:rt-r-pb-9{padding-bottom:var(--space-9)}.xs\:rt-r-pb-inset{padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 768px){.sm\:rt-r-pb{padding-bottom:var(--pb-sm)}.sm\:rt-r-pb-0{padding-bottom:0}.sm\:rt-r-pb-1{padding-bottom:var(--space-1)}.sm\:rt-r-pb-2{padding-bottom:var(--space-2)}.sm\:rt-r-pb-3{padding-bottom:var(--space-3)}.sm\:rt-r-pb-4{padding-bottom:var(--space-4)}.sm\:rt-r-pb-5{padding-bottom:var(--space-5)}.sm\:rt-r-pb-6{padding-bottom:var(--space-6)}.sm\:rt-r-pb-7{padding-bottom:var(--space-7)}.sm\:rt-r-pb-8{padding-bottom:var(--space-8)}.sm\:rt-r-pb-9{padding-bottom:var(--space-9)}.sm\:rt-r-pb-inset{padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 1024px){.md\:rt-r-pb{padding-bottom:var(--pb-md)}.md\:rt-r-pb-0{padding-bottom:0}.md\:rt-r-pb-1{padding-bottom:var(--space-1)}.md\:rt-r-pb-2{padding-bottom:var(--space-2)}.md\:rt-r-pb-3{padding-bottom:var(--space-3)}.md\:rt-r-pb-4{padding-bottom:var(--space-4)}.md\:rt-r-pb-5{padding-bottom:var(--space-5)}.md\:rt-r-pb-6{padding-bottom:var(--space-6)}.md\:rt-r-pb-7{padding-bottom:var(--space-7)}.md\:rt-r-pb-8{padding-bottom:var(--space-8)}.md\:rt-r-pb-9{padding-bottom:var(--space-9)}.md\:rt-r-pb-inset{padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 1280px){.lg\:rt-r-pb{padding-bottom:var(--pb-lg)}.lg\:rt-r-pb-0{padding-bottom:0}.lg\:rt-r-pb-1{padding-bottom:var(--space-1)}.lg\:rt-r-pb-2{padding-bottom:var(--space-2)}.lg\:rt-r-pb-3{padding-bottom:var(--space-3)}.lg\:rt-r-pb-4{padding-bottom:var(--space-4)}.lg\:rt-r-pb-5{padding-bottom:var(--space-5)}.lg\:rt-r-pb-6{padding-bottom:var(--space-6)}.lg\:rt-r-pb-7{padding-bottom:var(--space-7)}.lg\:rt-r-pb-8{padding-bottom:var(--space-8)}.lg\:rt-r-pb-9{padding-bottom:var(--space-9)}.lg\:rt-r-pb-inset{padding-bottom:var(--inset-padding-bottom)}}@media (min-width: 1640px){.xl\:rt-r-pb{padding-bottom:var(--pb-xl)}.xl\:rt-r-pb-0{padding-bottom:0}.xl\:rt-r-pb-1{padding-bottom:var(--space-1)}.xl\:rt-r-pb-2{padding-bottom:var(--space-2)}.xl\:rt-r-pb-3{padding-bottom:var(--space-3)}.xl\:rt-r-pb-4{padding-bottom:var(--space-4)}.xl\:rt-r-pb-5{padding-bottom:var(--space-5)}.xl\:rt-r-pb-6{padding-bottom:var(--space-6)}.xl\:rt-r-pb-7{padding-bottom:var(--space-7)}.xl\:rt-r-pb-8{padding-bottom:var(--space-8)}.xl\:rt-r-pb-9{padding-bottom:var(--space-9)}.xl\:rt-r-pb-inset{padding-bottom:var(--inset-padding-bottom)}}.rt-r-pl{padding-left:var(--pl)}.rt-r-pl-0{padding-left:0}.rt-r-pl-1{padding-left:var(--space-1)}.rt-r-pl-2{padding-left:var(--space-2)}.rt-r-pl-3{padding-left:var(--space-3)}.rt-r-pl-4{padding-left:var(--space-4)}.rt-r-pl-5{padding-left:var(--space-5)}.rt-r-pl-6{padding-left:var(--space-6)}.rt-r-pl-7{padding-left:var(--space-7)}.rt-r-pl-8{padding-left:var(--space-8)}.rt-r-pl-9{padding-left:var(--space-9)}.rt-r-pl-inset{padding-left:var(--inset-padding-left)}@media (min-width: 520px){.xs\:rt-r-pl{padding-left:var(--pl-xs)}.xs\:rt-r-pl-0{padding-left:0}.xs\:rt-r-pl-1{padding-left:var(--space-1)}.xs\:rt-r-pl-2{padding-left:var(--space-2)}.xs\:rt-r-pl-3{padding-left:var(--space-3)}.xs\:rt-r-pl-4{padding-left:var(--space-4)}.xs\:rt-r-pl-5{padding-left:var(--space-5)}.xs\:rt-r-pl-6{padding-left:var(--space-6)}.xs\:rt-r-pl-7{padding-left:var(--space-7)}.xs\:rt-r-pl-8{padding-left:var(--space-8)}.xs\:rt-r-pl-9{padding-left:var(--space-9)}.xs\:rt-r-pl-inset{padding-left:var(--inset-padding-left)}}@media (min-width: 768px){.sm\:rt-r-pl{padding-left:var(--pl-sm)}.sm\:rt-r-pl-0{padding-left:0}.sm\:rt-r-pl-1{padding-left:var(--space-1)}.sm\:rt-r-pl-2{padding-left:var(--space-2)}.sm\:rt-r-pl-3{padding-left:var(--space-3)}.sm\:rt-r-pl-4{padding-left:var(--space-4)}.sm\:rt-r-pl-5{padding-left:var(--space-5)}.sm\:rt-r-pl-6{padding-left:var(--space-6)}.sm\:rt-r-pl-7{padding-left:var(--space-7)}.sm\:rt-r-pl-8{padding-left:var(--space-8)}.sm\:rt-r-pl-9{padding-left:var(--space-9)}.sm\:rt-r-pl-inset{padding-left:var(--inset-padding-left)}}@media (min-width: 1024px){.md\:rt-r-pl{padding-left:var(--pl-md)}.md\:rt-r-pl-0{padding-left:0}.md\:rt-r-pl-1{padding-left:var(--space-1)}.md\:rt-r-pl-2{padding-left:var(--space-2)}.md\:rt-r-pl-3{padding-left:var(--space-3)}.md\:rt-r-pl-4{padding-left:var(--space-4)}.md\:rt-r-pl-5{padding-left:var(--space-5)}.md\:rt-r-pl-6{padding-left:var(--space-6)}.md\:rt-r-pl-7{padding-left:var(--space-7)}.md\:rt-r-pl-8{padding-left:var(--space-8)}.md\:rt-r-pl-9{padding-left:var(--space-9)}.md\:rt-r-pl-inset{padding-left:var(--inset-padding-left)}}@media (min-width: 1280px){.lg\:rt-r-pl{padding-left:var(--pl-lg)}.lg\:rt-r-pl-0{padding-left:0}.lg\:rt-r-pl-1{padding-left:var(--space-1)}.lg\:rt-r-pl-2{padding-left:var(--space-2)}.lg\:rt-r-pl-3{padding-left:var(--space-3)}.lg\:rt-r-pl-4{padding-left:var(--space-4)}.lg\:rt-r-pl-5{padding-left:var(--space-5)}.lg\:rt-r-pl-6{padding-left:var(--space-6)}.lg\:rt-r-pl-7{padding-left:var(--space-7)}.lg\:rt-r-pl-8{padding-left:var(--space-8)}.lg\:rt-r-pl-9{padding-left:var(--space-9)}.lg\:rt-r-pl-inset{padding-left:var(--inset-padding-left)}}@media (min-width: 1640px){.xl\:rt-r-pl{padding-left:var(--pl-xl)}.xl\:rt-r-pl-0{padding-left:0}.xl\:rt-r-pl-1{padding-left:var(--space-1)}.xl\:rt-r-pl-2{padding-left:var(--space-2)}.xl\:rt-r-pl-3{padding-left:var(--space-3)}.xl\:rt-r-pl-4{padding-left:var(--space-4)}.xl\:rt-r-pl-5{padding-left:var(--space-5)}.xl\:rt-r-pl-6{padding-left:var(--space-6)}.xl\:rt-r-pl-7{padding-left:var(--space-7)}.xl\:rt-r-pl-8{padding-left:var(--space-8)}.xl\:rt-r-pl-9{padding-left:var(--space-9)}.xl\:rt-r-pl-inset{padding-left:var(--inset-padding-left)}}.rt-r-position-static{position:static}.rt-r-position-absolute{position:absolute}.rt-r-position-relative{position:relative}.rt-r-position-fixed{position:fixed}.rt-r-position-sticky{position:sticky}@media (min-width: 520px){.xs\:rt-r-position-static{position:static}.xs\:rt-r-position-absolute{position:absolute}.xs\:rt-r-position-relative{position:relative}.xs\:rt-r-position-fixed{position:fixed}.xs\:rt-r-position-sticky{position:sticky}}@media (min-width: 768px){.sm\:rt-r-position-static{position:static}.sm\:rt-r-position-absolute{position:absolute}.sm\:rt-r-position-relative{position:relative}.sm\:rt-r-position-fixed{position:fixed}.sm\:rt-r-position-sticky{position:sticky}}@media (min-width: 1024px){.md\:rt-r-position-static{position:static}.md\:rt-r-position-absolute{position:absolute}.md\:rt-r-position-relative{position:relative}.md\:rt-r-position-fixed{position:fixed}.md\:rt-r-position-sticky{position:sticky}}@media (min-width: 1280px){.lg\:rt-r-position-static{position:static}.lg\:rt-r-position-absolute{position:absolute}.lg\:rt-r-position-relative{position:relative}.lg\:rt-r-position-fixed{position:fixed}.lg\:rt-r-position-sticky{position:sticky}}@media (min-width: 1640px){.xl\:rt-r-position-static{position:static}.xl\:rt-r-position-absolute{position:absolute}.xl\:rt-r-position-relative{position:relative}.xl\:rt-r-position-fixed{position:fixed}.xl\:rt-r-position-sticky{position:sticky}}.rt-r-w{width:var(--width)}@media (min-width: 520px){.xs\:rt-r-w{width:var(--width-xs)}}@media (min-width: 768px){.sm\:rt-r-w{width:var(--width-sm)}}@media (min-width: 1024px){.md\:rt-r-w{width:var(--width-md)}}@media (min-width: 1280px){.lg\:rt-r-w{width:var(--width-lg)}}@media (min-width: 1640px){.xl\:rt-r-w{width:var(--width-xl)}}.rt-r-min-w{min-width:var(--min-width)}@media (min-width: 520px){.xs\:rt-r-min-w{min-width:var(--min-width-xs)}}@media (min-width: 768px){.sm\:rt-r-min-w{min-width:var(--min-width-sm)}}@media (min-width: 1024px){.md\:rt-r-min-w{min-width:var(--min-width-md)}}@media (min-width: 1280px){.lg\:rt-r-min-w{min-width:var(--min-width-lg)}}@media (min-width: 1640px){.xl\:rt-r-min-w{min-width:var(--min-width-xl)}}.rt-r-max-w{max-width:var(--max-width)}@media (min-width: 520px){.xs\:rt-r-max-w{max-width:var(--max-width-xs)}}@media (min-width: 768px){.sm\:rt-r-max-w{max-width:var(--max-width-sm)}}@media (min-width: 1024px){.md\:rt-r-max-w{max-width:var(--max-width-md)}}@media (min-width: 1280px){.lg\:rt-r-max-w{max-width:var(--max-width-lg)}}@media (min-width: 1640px){.xl\:rt-r-max-w{max-width:var(--max-width-xl)}}.rt-r-weight-light{font-weight:var(--font-weight-light)}.rt-r-weight-regular{font-weight:var(--font-weight-regular)}.rt-r-weight-medium{font-weight:var(--font-weight-medium)}.rt-r-weight-bold{font-weight:var(--font-weight-bold)}@media (min-width: 520px){.xs\:rt-r-weight-light{font-weight:var(--font-weight-light)}.xs\:rt-r-weight-regular{font-weight:var(--font-weight-regular)}.xs\:rt-r-weight-medium{font-weight:var(--font-weight-medium)}.xs\:rt-r-weight-bold{font-weight:var(--font-weight-bold)}}@media (min-width: 768px){.sm\:rt-r-weight-light{font-weight:var(--font-weight-light)}.sm\:rt-r-weight-regular{font-weight:var(--font-weight-regular)}.sm\:rt-r-weight-medium{font-weight:var(--font-weight-medium)}.sm\:rt-r-weight-bold{font-weight:var(--font-weight-bold)}}@media (min-width: 1024px){.md\:rt-r-weight-light{font-weight:var(--font-weight-light)}.md\:rt-r-weight-regular{font-weight:var(--font-weight-regular)}.md\:rt-r-weight-medium{font-weight:var(--font-weight-medium)}.md\:rt-r-weight-bold{font-weight:var(--font-weight-bold)}}@media (min-width: 1280px){.lg\:rt-r-weight-light{font-weight:var(--font-weight-light)}.lg\:rt-r-weight-regular{font-weight:var(--font-weight-regular)}.lg\:rt-r-weight-medium{font-weight:var(--font-weight-medium)}.lg\:rt-r-weight-bold{font-weight:var(--font-weight-bold)}}@media (min-width: 1640px){.xl\:rt-r-weight-light{font-weight:var(--font-weight-light)}.xl\:rt-r-weight-regular{font-weight:var(--font-weight-regular)}.xl\:rt-r-weight-medium{font-weight:var(--font-weight-medium)}.xl\:rt-r-weight-bold{font-weight:var(--font-weight-bold)}}.rt-r-lt-normal:before,.rt-r-lt-end:before,.rt-r-lt-normal:after,.rt-r-lt-start:after{content:none}.rt-r-lt-start:before,.rt-r-lt-both:before,.rt-r-lt-end:after,.rt-r-lt-both:after{content:"";display:table}.rt-r-lt-start:before,.rt-r-lt-both:before{margin-bottom:calc(var(--leading-trim-start, var(--default-leading-trim-start)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}.rt-r-lt-end:after,.rt-r-lt-both:after{margin-top:calc(var(--leading-trim-end, var(--default-leading-trim-end)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}@media (min-width: 520px){.xs\:rt-r-lt-normal:before,.xs\:rt-r-lt-end:before,.xs\:rt-r-lt-normal:after,.xs\:rt-r-lt-start:after{content:none}.xs\:rt-r-lt-start:before,.xs\:rt-r-lt-both:before,.xs\:rt-r-lt-end:after,.xs\:rt-r-lt-both:after{content:"";display:table}.xs\:rt-r-lt-start:before,.xs\:rt-r-lt-both:before{margin-bottom:calc(var(--leading-trim-start, var(--default-leading-trim-start)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}.xs\:rt-r-lt-end:after,.xs\:rt-r-lt-both:after{margin-top:calc(var(--leading-trim-end, var(--default-leading-trim-end)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}}@media (min-width: 768px){.sm\:rt-r-lt-normal:before,.sm\:rt-r-lt-end:before,.sm\:rt-r-lt-normal:after,.sm\:rt-r-lt-start:after{content:none}.sm\:rt-r-lt-start:before,.sm\:rt-r-lt-both:before,.sm\:rt-r-lt-end:after,.sm\:rt-r-lt-both:after{content:"";display:table}.sm\:rt-r-lt-start:before,.sm\:rt-r-lt-both:before{margin-bottom:calc(var(--leading-trim-start, var(--default-leading-trim-start)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}.sm\:rt-r-lt-end:after,.sm\:rt-r-lt-both:after{margin-top:calc(var(--leading-trim-end, var(--default-leading-trim-end)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}}@media (min-width: 1024px){.md\:rt-r-lt-normal:before,.md\:rt-r-lt-end:before,.md\:rt-r-lt-normal:after,.md\:rt-r-lt-start:after{content:none}.md\:rt-r-lt-start:before,.md\:rt-r-lt-both:before,.md\:rt-r-lt-end:after,.md\:rt-r-lt-both:after{content:"";display:table}.md\:rt-r-lt-start:before,.md\:rt-r-lt-both:before{margin-bottom:calc(var(--leading-trim-start, var(--default-leading-trim-start)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}.md\:rt-r-lt-end:after,.md\:rt-r-lt-both:after{margin-top:calc(var(--leading-trim-end, var(--default-leading-trim-end)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}}@media (min-width: 1280px){.lg\:rt-r-lt-normal:before,.lg\:rt-r-lt-end:before,.lg\:rt-r-lt-normal:after,.lg\:rt-r-lt-start:after{content:none}.lg\:rt-r-lt-start:before,.lg\:rt-r-lt-both:before,.lg\:rt-r-lt-end:after,.lg\:rt-r-lt-both:after{content:"";display:table}.lg\:rt-r-lt-start:before,.lg\:rt-r-lt-both:before{margin-bottom:calc(var(--leading-trim-start, var(--default-leading-trim-start)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}.lg\:rt-r-lt-end:after,.lg\:rt-r-lt-both:after{margin-top:calc(var(--leading-trim-end, var(--default-leading-trim-end)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}}@media (min-width: 1640px){.xl\:rt-r-lt-normal:before,.xl\:rt-r-lt-end:before,.xl\:rt-r-lt-normal:after,.xl\:rt-r-lt-start:after{content:none}.xl\:rt-r-lt-start:before,.xl\:rt-r-lt-both:before,.xl\:rt-r-lt-end:after,.xl\:rt-r-lt-both:after{content:"";display:table}.xl\:rt-r-lt-start:before,.xl\:rt-r-lt-both:before{margin-bottom:calc(var(--leading-trim-start, var(--default-leading-trim-start)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}.xl\:rt-r-lt-end:after,.xl\:rt-r-lt-both:after{margin-top:calc(var(--leading-trim-end, var(--default-leading-trim-end)) - var(--line-height, calc(1em * var(--default-line-height))) / 2)}}.rt-r-resize-none{resize:none}.rt-r-resize-vertical{resize:vertical}.rt-r-resize-horizontal{resize:horizontal}.rt-r-resize-both{resize:both}@media (min-width: 520px){.xs\:rt-r-resize-none{resize:none}.xs\:rt-r-resize-vertical{resize:vertical}.xs\:rt-r-resize-horizontal{resize:horizontal}.xs\:rt-r-resize-both{resize:both}}@media (min-width: 768px){.sm\:rt-r-resize-none{resize:none}.sm\:rt-r-resize-vertical{resize:vertical}.sm\:rt-r-resize-horizontal{resize:horizontal}.sm\:rt-r-resize-both{resize:both}}@media (min-width: 1024px){.md\:rt-r-resize-none{resize:none}.md\:rt-r-resize-vertical{resize:vertical}.md\:rt-r-resize-horizontal{resize:horizontal}.md\:rt-r-resize-both{resize:both}}@media (min-width: 1280px){.lg\:rt-r-resize-none{resize:none}.lg\:rt-r-resize-vertical{resize:vertical}.lg\:rt-r-resize-horizontal{resize:horizontal}.lg\:rt-r-resize-both{resize:both}}@media (min-width: 1640px){.xl\:rt-r-resize-none{resize:none}.xl\:rt-r-resize-vertical{resize:vertical}.xl\:rt-r-resize-horizontal{resize:horizontal}.xl\:rt-r-resize-both{resize:both}}.rt-r-tl-auto{table-layout:auto}.rt-r-tl-fixed{table-layout:fixed}@media (min-width: 520px){.xs\:rt-r-tl-auto{table-layout:auto}.xs\:rt-r-tl-fixed{table-layout:fixed}}@media (min-width: 768px){.sm\:rt-r-tl-auto{table-layout:auto}.sm\:rt-r-tl-fixed{table-layout:fixed}}@media (min-width: 1024px){.md\:rt-r-tl-auto{table-layout:auto}.md\:rt-r-tl-fixed{table-layout:fixed}}@media (min-width: 1280px){.lg\:rt-r-tl-auto{table-layout:auto}.lg\:rt-r-tl-fixed{table-layout:fixed}}@media (min-width: 1640px){.xl\:rt-r-tl-auto{table-layout:auto}.xl\:rt-r-tl-fixed{table-layout:fixed}}.rt-r-ta-left{text-align:left}.rt-r-ta-center{text-align:center}.rt-r-ta-right{text-align:right}@media (min-width: 520px){.xs\:rt-r-ta-left{text-align:left}.xs\:rt-r-ta-center{text-align:center}.xs\:rt-r-ta-right{text-align:right}}@media (min-width: 768px){.sm\:rt-r-ta-left{text-align:left}.sm\:rt-r-ta-center{text-align:center}.sm\:rt-r-ta-right{text-align:right}}@media (min-width: 1024px){.md\:rt-r-ta-left{text-align:left}.md\:rt-r-ta-center{text-align:center}.md\:rt-r-ta-right{text-align:right}}@media (min-width: 1280px){.lg\:rt-r-ta-left{text-align:left}.lg\:rt-r-ta-center{text-align:center}.lg\:rt-r-ta-right{text-align:right}}@media (min-width: 1640px){.xl\:rt-r-ta-left{text-align:left}.xl\:rt-r-ta-center{text-align:center}.xl\:rt-r-ta-right{text-align:right}}.rt-r-tw-wrap{white-space:normal}.rt-r-tw-nowrap{white-space:nowrap}.rt-r-tw-pretty{white-space:normal;text-wrap:pretty}.rt-r-tw-balance{white-space:normal;text-wrap:balance}@media (min-width: 520px){.xs\:rt-r-tw-wrap{white-space:normal}.xs\:rt-r-tw-nowrap{white-space:nowrap}.xs\:rt-r-tw-pretty{white-space:normal;text-wrap:pretty}.xs\:rt-r-tw-balance{white-space:normal;text-wrap:balance}}@media (min-width: 768px){.sm\:rt-r-tw-wrap{white-space:normal}.sm\:rt-r-tw-nowrap{white-space:nowrap}.sm\:rt-r-tw-pretty{white-space:normal;text-wrap:pretty}.sm\:rt-r-tw-balance{white-space:normal;text-wrap:balance}}@media (min-width: 1024px){.md\:rt-r-tw-wrap{white-space:normal}.md\:rt-r-tw-nowrap{white-space:nowrap}.md\:rt-r-tw-pretty{white-space:normal;text-wrap:pretty}.md\:rt-r-tw-balance{white-space:normal;text-wrap:balance}}@media (min-width: 1280px){.lg\:rt-r-tw-wrap{white-space:normal}.lg\:rt-r-tw-nowrap{white-space:nowrap}.lg\:rt-r-tw-pretty{white-space:normal;text-wrap:pretty}.lg\:rt-r-tw-balance{white-space:normal;text-wrap:balance}}@media (min-width: 1640px){.xl\:rt-r-tw-wrap{white-space:normal}.xl\:rt-r-tw-nowrap{white-space:nowrap}.xl\:rt-r-tw-pretty{white-space:normal;text-wrap:pretty}.xl\:rt-r-tw-balance{white-space:normal;text-wrap:balance}}.rt-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rt-r-va-baseline{vertical-align:baseline}.rt-r-va-top{vertical-align:top}.rt-r-va-middle{vertical-align:middle}.rt-r-va-bottom{vertical-align:bottom}@media (min-width: 520px){.xs\:rt-r-va-baseline{vertical-align:baseline}.xs\:rt-r-va-top{vertical-align:top}.xs\:rt-r-va-middle{vertical-align:middle}.xs\:rt-r-va-bottom{vertical-align:bottom}}@media (min-width: 768px){.sm\:rt-r-va-baseline{vertical-align:baseline}.sm\:rt-r-va-top{vertical-align:top}.sm\:rt-r-va-middle{vertical-align:middle}.sm\:rt-r-va-bottom{vertical-align:bottom}}@media (min-width: 1024px){.md\:rt-r-va-baseline{vertical-align:baseline}.md\:rt-r-va-top{vertical-align:top}.md\:rt-r-va-middle{vertical-align:middle}.md\:rt-r-va-bottom{vertical-align:bottom}}@media (min-width: 1280px){.lg\:rt-r-va-baseline{vertical-align:baseline}.lg\:rt-r-va-top{vertical-align:top}.lg\:rt-r-va-middle{vertical-align:middle}.lg\:rt-r-va-bottom{vertical-align:bottom}}@media (min-width: 1640px){.xl\:rt-r-va-baseline{vertical-align:baseline}.xl\:rt-r-va-top{vertical-align:top}.xl\:rt-r-va-middle{vertical-align:middle}.xl\:rt-r-va-bottom{vertical-align:bottom}} diff --git a/mover/janrone/code/my-first-sui-dapp/dist/index.html b/mover/janrone/code/my-first-sui-dapp/dist/index.html new file mode 100644 index 000000000..3908c6e55 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/dist/index.html @@ -0,0 +1,60 @@ + + + + + + + Sui dApp Starter + + + + + + +
+ + diff --git a/mover/janrone/code/my-first-sui-dapp/index.html b/mover/janrone/code/my-first-sui-dapp/index.html new file mode 100644 index 000000000..bb7f75b16 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/index.html @@ -0,0 +1,59 @@ + + + + + + + Sui dApp Starter + + + + +
+ + + diff --git a/mover/janrone/code/my-first-sui-dapp/package-lock.json b/mover/janrone/code/my-first-sui-dapp/package-lock.json new file mode 100644 index 000000000..a363dc2b2 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/package-lock.json @@ -0,0 +1,5011 @@ +{ + "name": "my-first-sui-dapp", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "my-first-sui-dapp", + "version": "0.0.0", + "dependencies": { + "@mysten/dapp-kit": "0.14.38", + "@mysten/sui": "1.15.0", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^9.6.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@0no-co/graphql.web/-/graphql.web-1.0.11.tgz", + "integrity": "sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==", + "license": "MIT", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.16", + "resolved": "https://registry.npmmirror.com/@0no-co/graphqlsp/-/graphqlsp-1.12.16.tgz", + "integrity": "sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==", + "license": "MIT", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.0", + "resolved": "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.0", + "resolved": "https://registry.npmmirror.com/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.15.0", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" + }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/@gql.tada/cli-utils/-/cli-utils-1.6.3.tgz", + "integrity": "sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==", + "license": "MIT", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmmirror.com/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmmirror.com/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@mysten/bcs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@mysten/bcs/-/bcs-1.1.0.tgz", + "integrity": "sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==", + "license": "Apache-2.0", + "dependencies": { + "bs58": "^6.0.0" + } + }, + "node_modules/@mysten/dapp-kit": { + "version": "0.14.38", + "resolved": "https://registry.npmmirror.com/@mysten/dapp-kit/-/dapp-kit-0.14.38.tgz", + "integrity": "sha512-mFBgfEm1cNbcF0dQOewovk/cCrZKRe5qrK21SVXP6vN35P6N1Y1oAHh1snl9YgPdz4vMPZFhGupb4Lz7aJBv6w==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui": "1.15.0", + "@mysten/wallet-standard": "0.13.14", + "@mysten/zksend": "0.12.4", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-slot": "^1.1.0", + "@vanilla-extract/css": "^1.15.3", + "@vanilla-extract/dynamic": "^2.1.1", + "@vanilla-extract/recipes": "^0.5.3", + "clsx": "^2.1.1", + "zustand": "^4.5.4" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.0.0", + "react": "*" + } + }, + "node_modules/@mysten/sui": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/@mysten/sui/-/sui-1.15.0.tgz", + "integrity": "sha512-vuyKtb3dY3X6HYzSz/DjoNMQs0zqIWscR2W0lbcYyPOFQZ4lHpzLZszgQor+OGb6uMr7M4COIWKVaIJ82Bbt8w==", + "license": "Apache-2.0", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "1.1.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@scure/bip32": "^1.4.0", + "@scure/bip39": "^1.3.0", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.8.2", + "graphql": "^16.9.0", + "tweetnacl": "^1.0.3", + "valibot": "^0.36.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mysten/wallet-standard": { + "version": "0.13.14", + "resolved": "https://registry.npmmirror.com/@mysten/wallet-standard/-/wallet-standard-0.13.14.tgz", + "integrity": "sha512-pxrWW6znZRc1WvkgE4YtI1adOv7ws53qDpGOp93bLeKB8bY/lS2ieM05J8n/KvzsuFoIcbrXGuufx9FFpO0xGw==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui": "1.15.0", + "@wallet-standard/core": "1.0.3" + } + }, + "node_modules/@mysten/zksend": { + "version": "0.12.4", + "resolved": "https://registry.npmmirror.com/@mysten/zksend/-/zksend-0.12.4.tgz", + "integrity": "sha512-8obto9mooasxa+eJL1mOeeIUImX5P+XAgibYtMfC1A16QArGVR4QK49sYUQsf+4t/sdH42STfvrs9MHFNRmZzQ==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui": "1.15.0", + "@mysten/wallet-standard": "0.13.14", + "mitt": "^3.0.1", + "nanostores": "^0.10.3", + "valibot": "^0.36.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@radix-ui/colors": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/colors/-/colors-3.0.0.tgz", + "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==", + "license": "MIT" + }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.0.tgz", + "integrity": "sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.2.tgz", + "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dialog": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", + "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", + "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", + "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz", + "integrity": "sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.2.tgz", + "integrity": "sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", + "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", + "license": "MIT", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz", + "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popover/-/react-popover-1.1.2.tgz", + "integrity": "sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-progress/-/react-progress-1.1.0.tgz", + "integrity": "sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", + "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.1.tgz", + "integrity": "sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slider/-/react-slider-1.2.1.tgz", + "integrity": "sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", + "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", + "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", + "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", + "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-toggle": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", + "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@radix-ui/themes": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/@radix-ui/themes/-/themes-3.1.6.tgz", + "integrity": "sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==", + "license": "MIT", + "dependencies": { + "@radix-ui/colors": "^3.0.0", + "@radix-ui/primitive": "^1.1.0", + "@radix-ui/react-accessible-icon": "^1.1.0", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-compose-refs": "^1.1.0", + "@radix-ui/react-context": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.2", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-direction": "^1.1.0", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-hover-card": "^1.1.2", + "@radix-ui/react-navigation-menu": "^1.2.1", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-portal": "^1.1.2", + "@radix-ui/react-primitive": "^2.0.0", + "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-radio-group": "^1.2.1", + "@radix-ui/react-roving-focus": "^1.1.0", + "@radix-ui/react-scroll-area": "^1.2.1", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-slider": "^1.2.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.1", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-toggle-group": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.4", + "@radix-ui/react-use-callback-ref": "^1.1.0", + "@radix-ui/react-use-controllable-state": "^1.1.0", + "@radix-ui/react-visually-hidden": "^1.1.0", + "classnames": "^2.3.2", + "react-remove-scroll-bar": "^2.3.6" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", + "integrity": "sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.3.tgz", + "integrity": "sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.3.tgz", + "integrity": "sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.3.tgz", + "integrity": "sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.3.tgz", + "integrity": "sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.3.tgz", + "integrity": "sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.3.tgz", + "integrity": "sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.3.tgz", + "integrity": "sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.3.tgz", + "integrity": "sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.3.tgz", + "integrity": "sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.3.tgz", + "integrity": "sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.3.tgz", + "integrity": "sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.3.tgz", + "integrity": "sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.3.tgz", + "integrity": "sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.3.tgz", + "integrity": "sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.3.tgz", + "integrity": "sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.3.tgz", + "integrity": "sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.3.tgz", + "integrity": "sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==", + "license": "MIT" + }, + "node_modules/@swc/core": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.9.2.tgz", + "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.15" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.9.2", + "@swc/core-darwin-x64": "1.9.2", + "@swc/core-linux-arm-gnueabihf": "1.9.2", + "@swc/core-linux-arm64-gnu": "1.9.2", + "@swc/core-linux-arm64-musl": "1.9.2", + "@swc/core-linux-x64-gnu": "1.9.2", + "@swc/core-linux-x64-musl": "1.9.2", + "@swc/core-win32-arm64-msvc": "1.9.2", + "@swc/core-win32-ia32-msvc": "1.9.2", + "@swc/core-win32-x64-msvc": "1.9.2" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz", + "integrity": "sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.15.tgz", + "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.60.6", + "resolved": "https://registry.npmmirror.com/@tanstack/query-core/-/query-core-5.60.6.tgz", + "integrity": "sha512-tI+k0KyCo1EBJ54vxK1kY24LWj673ujTydCZmzEZKAew4NqZzTaVQJEuaG1qKj2M03kUHN46rchLRd+TxVq/zQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.61.0", + "resolved": "https://registry.npmmirror.com/@tanstack/react-query/-/react-query-5.61.0.tgz", + "integrity": "sha512-SBzV27XAeCRBOQ8QcC94w2H1Md0+LI0gTWwc3qRJoaGuewKn5FNW4LSqwPFJZVEItfhMfGT7RpZuSFXjTi12pQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.60.6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vanilla-extract/css": { + "version": "1.16.0", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/css/-/css-1.16.0.tgz", + "integrity": "sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@vanilla-extract/private": "^1.0.6", + "css-what": "^6.1.0", + "cssesc": "^3.0.0", + "csstype": "^3.0.7", + "dedent": "^1.5.3", + "deep-object-diff": "^1.1.9", + "deepmerge": "^4.2.2", + "lru-cache": "^10.4.3", + "media-query-parser": "^2.0.2", + "modern-ahocorasick": "^1.0.0", + "picocolors": "^1.0.0" + } + }, + "node_modules/@vanilla-extract/dynamic": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/dynamic/-/dynamic-2.1.2.tgz", + "integrity": "sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==", + "license": "MIT", + "dependencies": { + "@vanilla-extract/private": "^1.0.6" + } + }, + "node_modules/@vanilla-extract/private": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/private/-/private-1.0.6.tgz", + "integrity": "sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==", + "license": "MIT" + }, + "node_modules/@vanilla-extract/recipes": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/recipes/-/recipes-0.5.5.tgz", + "integrity": "sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==", + "license": "MIT", + "peerDependencies": { + "@vanilla-extract/css": "^1.0.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", + "integrity": "sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/core": "^1.7.26" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/@wallet-standard/app": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/app/-/app-1.1.0.tgz", + "integrity": "sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/base": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/base/-/base-1.1.0.tgz", + "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/core": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@wallet-standard/core/-/core-1.0.3.tgz", + "integrity": "sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/app": "^1.0.1", + "@wallet-standard/base": "^1.0.1", + "@wallet-standard/features": "^1.0.3", + "@wallet-standard/wallet": "^1.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/features": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/features/-/features-1.1.0.tgz", + "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/wallet": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/wallet/-/wallet-1.1.0.tgz", + "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==", + "license": "MIT" + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-object-diff": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.15.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.5", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.14", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", + "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmmirror.com/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gql.tada": { + "version": "1.8.10", + "resolved": "https://registry.npmmirror.com/gql.tada/-/gql.tada-1.8.10.tgz", + "integrity": "sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.3", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmmirror.com/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/media-query-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/media-query-parser/-/media-query-parser-2.0.2.tgz", + "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/modern-ahocorasick": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz", + "integrity": "sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanostores": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/nanostores/-/nanostores-0.10.3.tgz", + "integrity": "sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmmirror.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.27.3.tgz", + "integrity": "sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.27.3", + "@rollup/rollup-android-arm64": "4.27.3", + "@rollup/rollup-darwin-arm64": "4.27.3", + "@rollup/rollup-darwin-x64": "4.27.3", + "@rollup/rollup-freebsd-arm64": "4.27.3", + "@rollup/rollup-freebsd-x64": "4.27.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.27.3", + "@rollup/rollup-linux-arm-musleabihf": "4.27.3", + "@rollup/rollup-linux-arm64-gnu": "4.27.3", + "@rollup/rollup-linux-arm64-musl": "4.27.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.27.3", + "@rollup/rollup-linux-riscv64-gnu": "4.27.3", + "@rollup/rollup-linux-s390x-gnu": "4.27.3", + "@rollup/rollup-linux-x64-gnu": "4.27.3", + "@rollup/rollup-linux-x64-musl": "4.27.3", + "@rollup/rollup-win32-arm64-msvc": "4.27.3", + "@rollup/rollup-win32-ia32-msvc": "4.27.3", + "@rollup/rollup-win32-x64-msvc": "4.27.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/valibot": { + "version": "0.36.0", + "resolved": "https://registry.npmmirror.com/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.5", + "resolved": "https://registry.npmmirror.com/zustand/-/zustand-4.5.5.tgz", + "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/mover/janrone/code/my-first-sui-dapp/package.json b/mover/janrone/code/my-first-sui-dapp/package.json new file mode 100644 index 000000000..c930b4482 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/package.json @@ -0,0 +1,36 @@ +{ + "name": "my-first-sui-dapp", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "0.14.38", + "@mysten/sui": "1.15.0", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "navi-sdk": "^1.4.3", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^9.6.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } +} \ No newline at end of file diff --git a/mover/janrone/code/my-first-sui-dapp/pnpm-lock.yaml b/mover/janrone/code/my-first-sui-dapp/pnpm-lock.yaml new file mode 100644 index 000000000..1d2bdf199 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/pnpm-lock.yaml @@ -0,0 +1,4669 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@mysten/dapp-kit': + specifier: 0.14.38 + version: 0.14.38(@tanstack/react-query@5.61.0(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@mysten/sui': + specifier: 1.15.0 + version: 1.15.0(typescript@5.6.3) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.2(react@18.3.1) + '@radix-ui/themes': + specifier: ^3.1.1 + version: 3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.50.1 + version: 5.61.0(react@18.3.1) + navi-sdk: + specifier: ^1.4.3 + version: 1.4.3(@types/node@22.9.1)(typescript@5.6.3) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/react': + specifier: ^18.3.3 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.1 + '@typescript-eslint/eslint-plugin': + specifier: ^7.16.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^7.16.0 + version: 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.1(vite@5.4.11(@types/node@22.9.1)) + eslint: + specifier: ^9.6.0 + version: 9.15.0 + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@9.15.0) + eslint-plugin-react-refresh: + specifier: ^0.4.7 + version: 0.4.14(eslint@9.15.0) + prettier: + specifier: ^3.3.2 + version: 3.3.3 + typescript: + specifier: ^5.5.3 + version: 5.6.3 + vite: + specifier: ^5.3.3 + version: 5.4.11(@types/node@22.9.1) + +packages: + + '@0no-co/graphql.web@1.0.11': + resolution: {integrity: sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.16': + resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@digitak/grubber@3.1.4': + resolution: {integrity: sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.0': + resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.9.0': + resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.15.0': + resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.3': + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@gql.tada/cli-utils@1.6.3': + resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@mysten/bcs@0.11.1': + resolution: {integrity: sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==} + + '@mysten/bcs@1.1.0': + resolution: {integrity: sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==} + + '@mysten/dapp-kit@0.14.38': + resolution: {integrity: sha512-mFBgfEm1cNbcF0dQOewovk/cCrZKRe5qrK21SVXP6vN35P6N1Y1oAHh1snl9YgPdz4vMPZFhGupb4Lz7aJBv6w==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: '*' + + '@mysten/sui.js@0.54.1': + resolution: {integrity: sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==} + engines: {node: '>=16'} + deprecated: This package has been renamed to @mysten/sui, please update to use the renamed package. + + '@mysten/sui@1.15.0': + resolution: {integrity: sha512-vuyKtb3dY3X6HYzSz/DjoNMQs0zqIWscR2W0lbcYyPOFQZ4lHpzLZszgQor+OGb6uMr7M4COIWKVaIJ82Bbt8w==} + engines: {node: '>=18'} + + '@mysten/wallet-standard@0.13.14': + resolution: {integrity: sha512-pxrWW6znZRc1WvkgE4YtI1adOv7ws53qDpGOp93bLeKB8bY/lS2ieM05J8n/KvzsuFoIcbrXGuufx9FFpO0xGw==} + + '@mysten/zksend@0.12.4': + resolution: {integrity: sha512-8obto9mooasxa+eJL1mOeeIUImX5P+XAgibYtMfC1A16QArGVR4QK49sYUQsf+4t/sdH42STfvrs9MHFNRmZzQ==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + + '@pythnetwork/price-service-sdk@1.7.1': + resolution: {integrity: sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==} + + '@pythnetwork/pyth-sui-js@2.1.0': + resolution: {integrity: sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-accessible-icon@1.1.0': + resolution: {integrity: sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.2': + resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.0': + resolution: {integrity: sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.1': + resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.2': + resolution: {integrity: sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.2': + resolution: {integrity: sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.1': + resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.2': + resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.2': + resolution: {integrity: sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.2': + resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.1': + resolution: {integrity: sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.2': + resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.0': + resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.2.1': + resolution: {integrity: sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.1': + resolution: {integrity: sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.2.1': + resolution: {integrity: sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.1': + resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.0': + resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.0': + resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.4': + resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/themes@3.1.6': + resolution: {integrity: sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@rollup/rollup-android-arm-eabi@4.27.3': + resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.27.3': + resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.27.3': + resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.27.3': + resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.27.3': + resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.3': + resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.27.3': + resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.27.3': + resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.27.3': + resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': + resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.27.3': + resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.27.3': + resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.27.3': + resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.27.3': + resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.27.3': + resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.27.3': + resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.27.3': + resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.5.0': + resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@suchipi/femver@1.0.0': + resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} + + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.16': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==, tarball: https://registry.npmmirror.com/@swc/types/-/types-0.1.12.tgz} + deprecated: '[WARNING] Use 0.1.12 instead of 0.1.16, reason: https://github.com/swc-project/swc/issues/9753' + + '@tanstack/query-core@5.60.6': + resolution: {integrity: sha512-tI+k0KyCo1EBJ54vxK1kY24LWj673ujTydCZmzEZKAew4NqZzTaVQJEuaG1qKj2M03kUHN46rchLRd+TxVq/zQ==} + + '@tanstack/react-query@5.61.0': + resolution: {integrity: sha512-SBzV27XAeCRBOQ8QcC94w2H1Md0+LI0gTWwc3qRJoaGuewKn5FNW4LSqwPFJZVEItfhMfGT7RpZuSFXjTi12pQ==} + peerDependencies: + react: ^18 || ^19 + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@22.9.1': + resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@vanilla-extract/css@1.16.0': + resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.6': + resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + + '@vanilla-extract/recipes@0.5.5': + resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitejs/plugin-react-swc@3.7.1': + resolution: {integrity: sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==} + peerDependencies: + vite: ^4 || ^5 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@wallet-standard/app@1.1.0': + resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} + engines: {node: '>=16'} + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.0.3': + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.14: + resolution: {integrity: sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==} + peerDependencies: + eslint: '>=7' + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.15.0: + resolution: {integrity: sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + esrun@3.2.26: + resolution: {integrity: sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==} + engines: {node: '>=14.0'} + hasBin: true + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gql.tada@1.8.10: + resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.13: + resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.10.3: + resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + navi-sdk@1.4.3: + resolution: {integrity: sha512-ZFOpoP4wOLwJGpX00i7sKoBMl4P62KzaKEXS6/goRHVxs7+0RE1t2gDk35ZFyU3V4cmd4yvNW+zbSL3p7OTvhQ==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.27.3: + resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zustand@4.5.5: + resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@0no-co/graphql.web@1.0.11(graphql@16.9.0)': + optionalDependencies: + graphql: 16.9.0 + + '@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@digitak/grubber@3.1.4': {} + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0)': + dependencies: + eslint: 9.15.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.9.0': {} + + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.15.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.3': + dependencies: + levn: 0.4.1 + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.12': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.8': {} + + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@gql.tada/internal@1.0.8(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + graphql: 16.9.0 + typescript: 5.6.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': + dependencies: + graphql: 16.9.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@mysten/bcs@0.11.1': + dependencies: + bs58: 5.0.0 + + '@mysten/bcs@1.1.0': + dependencies: + bs58: 6.0.0 + + '@mysten/dapp-kit@0.14.38(@tanstack/react-query@5.61.0(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.15.0(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.14(typescript@5.6.3) + '@mysten/zksend': 0.12.4(typescript@5.6.3) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@tanstack/react-query': 5.61.0(react@18.3.1) + '@vanilla-extract/css': 1.16.0 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/recipes': 0.5.5(@vanilla-extract/css@1.16.0) + clsx: 2.1.1 + react: 18.3.1 + zustand: 4.5.5(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + + '@mysten/sui.js@0.54.1(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 0.11.1 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + superstruct: 1.0.4 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.15.0(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.13.14(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.15.0(typescript@5.6.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/zksend@0.12.4(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.15.0(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.14(typescript@5.6.3) + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pythnetwork/price-service-client@1.9.0': + dependencies: + '@pythnetwork/price-service-sdk': 1.7.1 + '@types/ws': 8.5.13 + axios: 1.7.7 + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0) + ts-log: 2.2.7 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.7.1': + dependencies: + bn.js: 5.2.1 + + '@pythnetwork/pyth-sui-js@2.1.0(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.15.0(typescript@5.6.3) + '@pythnetwork/price-service-client': 1.9.0 + buffer: 6.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - bufferutil + - debug + - typescript + - utf-8-validate + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-accessible-icon@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-aspect-ratio@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-avatar@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-checkbox@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-radio-group@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-scroll-area@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slider@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/themes@3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/colors': 3.0.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-accessible-icon': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-aspect-ratio': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context-menu': 2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-hover-card': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-switch': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@rollup/rollup-android-arm-eabi@4.27.3': + optional: true + + '@rollup/rollup-android-arm64@4.27.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.27.3': + optional: true + + '@rollup/rollup-darwin-x64@4.27.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.27.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.27.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.27.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.27.3': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.27.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.27.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.3': + optional: true + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.5.0': + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@sinclair/typebox@0.27.8': {} + + '@suchipi/femver@1.0.0': {} + + '@swc/core-darwin-arm64@1.9.2': + optional: true + + '@swc/core-darwin-x64@1.9.2': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.2': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.2': + optional: true + + '@swc/core-linux-arm64-musl@1.9.2': + optional: true + + '@swc/core-linux-x64-gnu@1.9.2': + optional: true + + '@swc/core-linux-x64-musl@1.9.2': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.2': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.2': + optional: true + + '@swc/core-win32-x64-msvc@1.9.2': + optional: true + + '@swc/core@1.9.2': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.16 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.16': + dependencies: + '@swc/counter': 0.1.3 + + '@tanstack/query-core@5.60.6': {} + + '@tanstack/react-query@5.61.0(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.60.6 + react: 18.3.1 + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@22.9.1': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.13': {} + + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.12 + + '@types/react@18.3.12': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/ws@8.5.13': + dependencies: + '@types/node': 22.9.1 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 9.15.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + eslint: 9.15.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + debug: 4.3.7 + eslint: 9.15.0 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + eslint: 9.15.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@vanilla-extract/css@1.16.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/private@1.0.6': {} + + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.16.0)': + dependencies: + '@vanilla-extract/css': 1.16.0 + + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.11(@types/node@22.9.1))': + dependencies: + '@swc/core': 1.9.2 + vite: 5.4.11(@types/node@22.9.1) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.13 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.0.3': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + array-union@2.1.0: {} + + assertion-error@1.1.0: {} + + asynckit@0.4.0: {} + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + bech32@2.0.0: {} + + binary-extensions@2.3.0: {} + + bn.js@5.2.1: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + callsites@3.1.0: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-node-es@1.1.0: {} + + diff-sequences@29.6.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.2(eslint@9.15.0): + dependencies: + eslint: 9.15.0 + + eslint-plugin-react-refresh@0.4.14(eslint@9.15.0): + dependencies: + eslint: 9.15.0 + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.15.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.0 + '@eslint/core': 0.9.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.15.0 + '@eslint/plugin-kit': 0.2.3 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + esrun@3.2.26: + dependencies: + '@digitak/grubber': 3.1.4 + chokidar: 3.6.0 + esbuild: 0.17.19 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fsevents@2.3.3: + optional: true + + get-func-name@2.0.2: {} + + get-nonce@1.0.1: {} + + get-stream@8.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gql.tada@1.8.10(graphql@16.9.0)(typescript@5.6.3): + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graphemer@1.4.0: {} + + graphql@16.9.0: {} + + has-flag@4.0.0: {} + + human-signals@5.0.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-retry-allowed@2.2.0: {} + + is-stream@3.0.0: {} + + isexe@2.0.0: {} + + isomorphic-ws@4.0.1(ws@8.18.0): + dependencies: + ws: 8.18.0 + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + magic-string@0.30.13: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.26.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mitt@3.0.1: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + modern-ahocorasick@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + nanostores@0.10.3: {} + + natural-compare@1.4.0: {} + + navi-sdk@1.4.3(@types/node@22.9.1)(typescript@5.6.3): + dependencies: + '@mysten/sui': 1.15.0(typescript@5.6.3) + '@mysten/sui.js': 0.54.1(typescript@5.6.3) + '@pythnetwork/pyth-sui-js': 2.1.0(typescript@5.6.3) + axios: 1.7.7 + esrun: 3.2.26 + tsconfig-paths: 4.2.0 + vitest: 1.6.0(@types/node@22.9.1) + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/node' + - '@vitest/browser' + - '@vitest/ui' + - bufferutil + - debug + - happy-dom + - jsdom + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - typescript + - utf-8-validate + + normalize-path@3.0.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.3.3: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + rollup@4.27.3: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.27.3 + '@rollup/rollup-android-arm64': 4.27.3 + '@rollup/rollup-darwin-arm64': 4.27.3 + '@rollup/rollup-darwin-x64': 4.27.3 + '@rollup/rollup-freebsd-arm64': 4.27.3 + '@rollup/rollup-freebsd-x64': 4.27.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 + '@rollup/rollup-linux-arm-musleabihf': 4.27.3 + '@rollup/rollup-linux-arm64-gnu': 4.27.3 + '@rollup/rollup-linux-arm64-musl': 4.27.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 + '@rollup/rollup-linux-riscv64-gnu': 4.27.3 + '@rollup/rollup-linux-s390x-gnu': 4.27.3 + '@rollup/rollup-linux-x64-gnu': 4.27.3 + '@rollup/rollup-linux-x64-musl': 4.27.3 + '@rollup/rollup-win32-arm64-msvc': 4.27.3 + '@rollup/rollup-win32-ia32-msvc': 4.27.3 + '@rollup/rollup-win32-x64-msvc': 4.27.3 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@3.8.0: {} + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + superstruct@1.0.4: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tinybench@2.9.0: {} + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@1.4.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-log@2.2.7: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.1.0: {} + + typescript@5.6.3: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + + valibot@0.36.0: {} + + vite-node@1.6.0(@types/node@22.9.1): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.11(@types/node@22.9.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.11(@types/node@22.9.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.27.3 + optionalDependencies: + '@types/node': 22.9.1 + fsevents: 2.3.3 + + vitest@1.6.0(@types/node@22.9.1): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.3.7 + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.13 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.0 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.11(@types/node@22.9.1) + vite-node: 1.6.0(@types/node@22.9.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.9.1 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + ws@8.18.0: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zustand@4.5.5(@types/react@18.3.12)(react@18.3.1): + dependencies: + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react: 18.3.1 diff --git a/mover/janrone/code/my-first-sui-dapp/prettier.config.cjs b/mover/janrone/code/my-first-sui-dapp/prettier.config.cjs new file mode 100644 index 000000000..c07541106 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/prettier.config.cjs @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-undef +module.exports = { + proseWrap: "always", +}; diff --git a/mover/janrone/code/my-first-sui-dapp/src/App.tsx b/mover/janrone/code/my-first-sui-dapp/src/App.tsx new file mode 100644 index 000000000..7c5eec106 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/App.tsx @@ -0,0 +1,42 @@ +import { ConnectButton } from "@mysten/dapp-kit"; +import { Box, Container, Flex, Heading } from "@radix-ui/themes"; +import { WalletStatus } from "./WalletStatus"; +import NaviTask from "./NaviTask"; + +function App() { + return ( + <> + + + dApp Starter Template + + + + + + + + + + + + + + + ); +} + +export default App; diff --git a/mover/janrone/code/my-first-sui-dapp/src/NaviTask.tsx b/mover/janrone/code/my-first-sui-dapp/src/NaviTask.tsx new file mode 100644 index 000000000..53cafe6c2 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/NaviTask.tsx @@ -0,0 +1,84 @@ +import { Button, Container, Flex, Text } from "@radix-ui/themes"; +import { + useCurrentAccount, + useSignAndExecuteTransaction, +} from "@mysten/dapp-kit"; +import { Transaction } from "@mysten/sui/transactions"; + +import { Pool, PoolConfig } from "navi-sdk/dist/types"; +import { pool, Sui, wUSDC } from "navi-sdk/dist/address"; +import { borrowCoin, depositCoin } from "navi-sdk/dist/libs/PTB"; +import { useState } from "react"; + +// 1.[存入Navi Protocol 1 SUI] +// 2.[借出当前日期的USDC 0.[月][天][小时] 的 USDC ] +// 3.[然后在存入等额的USDC] +export function NaviTask() { + //当前连接钱包账户 + const account = useCurrentAccount(); + + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + const [digest, setDigest] = useState(""); + const [message, setMessage] = useState(""); + + const deposit_borrow_Sui = async () => { + const date = new Date(); + const month = date.getMonth() + 1; // getMonth() returns 0-11 + const day = date.getDate(); + const hour = date.getHours(); + + // 确保每个数字都是两位数 + const borrow_amount = + parseFloat( + `0.${month.toString().padStart(2, "0")}${day.toString().padStart(2, "0")}${hour.toString().padStart(2, "0")}`, + ) * + 10 ** wUSDC.decimal; + console.log("borrow_amount: " + borrow_amount); + + const tx = new Transaction(); + tx.setSender(account!.address); + + //存入1Sui + // 获取Sui池子配置 + // @ts-ignore + const suiPool: PoolConfig = pool[Sui.symbol as keyof Pool]; + const [suiCoin] = tx.splitCoins(tx.gas, [1_000_000_000]); // 1 SUI = 10^9 MIST + await depositCoin(tx, suiPool, suiCoin, 1_000_000_000); + console.log("deposit_amount count", suiCoin.NestedResult); + + // 借出USDC + console.log("borrow count", borrow_amount); + const wusdcPool: PoolConfig = pool[wUSDC.symbol as keyof Pool]; + const [toBorrowCoin] = await borrowCoin(tx, wusdcPool, borrow_amount); + + // 存入USDC + await depositCoin(tx, wusdcPool, toBorrowCoin, borrow_amount); + + // 提交交易 + console.log("signAndExecuteTransaction"); + + await signAndExecuteTransaction( + { transaction: tx, chain: "sui:mainnet" }, + { + onSuccess: (result) => { + console.log("executed transaction success", result); + setDigest(result.digest); + }, + onError: (error) => { + console.log("executed transaction error", error); + setMessage(error.message); + }, + }, + ); + }; + return ( + + + + {digest ? `Transaction submitted: ${digest}` : message} + + + ); +} + +export default NaviTask; diff --git a/mover/janrone/code/my-first-sui-dapp/src/OwnedObjects.tsx b/mover/janrone/code/my-first-sui-dapp/src/OwnedObjects.tsx new file mode 100644 index 000000000..fa759db0a --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/OwnedObjects.tsx @@ -0,0 +1,42 @@ +import { useCurrentAccount, useSuiClientQuery } from "@mysten/dapp-kit"; +import { Flex, Heading, Text } from "@radix-ui/themes"; + +export function OwnedObjects() { + const account = useCurrentAccount(); + const { data, isPending, error } = useSuiClientQuery( + "getOwnedObjects", + { + owner: account?.address as string, + }, + { + enabled: !!account, + }, + ); + + if (!account) { + return; + } + + if (error) { + return Error: {error.message}; + } + + if (isPending || !data) { + return Loading...; + } + + return ( + + {data.data.length === 0 ? ( + No objects owned by the connected wallet + ) : ( + Objects owned by the connected wallet + )} + {data.data.map((object) => ( + + Object ID: {object.data?.objectId} + + ))} + + ); +} diff --git a/mover/janrone/code/my-first-sui-dapp/src/WalletStatus.tsx b/mover/janrone/code/my-first-sui-dapp/src/WalletStatus.tsx new file mode 100644 index 000000000..21e734677 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/WalletStatus.tsx @@ -0,0 +1,23 @@ +import { useCurrentAccount } from "@mysten/dapp-kit"; +import { Container, Flex, Heading, Text } from "@radix-ui/themes"; +import { OwnedObjects } from "./OwnedObjects"; + +export function WalletStatus() { + const account = useCurrentAccount(); + + return ( + + Wallet Status + + {account ? ( + + Wallet connected + Address: {account.address} + + ) : ( + Wallet not connected + )} + + + ); +} diff --git a/mover/janrone/code/my-first-sui-dapp/src/main.tsx b/mover/janrone/code/my-first-sui-dapp/src/main.tsx new file mode 100644 index 000000000..db3a81acc --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/main.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "@mysten/dapp-kit/dist/index.css"; +import "@radix-ui/themes/styles.css"; + +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Theme } from "@radix-ui/themes"; +import App from "./App.tsx"; +import { networkConfig } from "./networkConfig.ts"; + +const queryClient = new QueryClient(); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + + + + + + , +); diff --git a/mover/janrone/code/my-first-sui-dapp/src/networkConfig.ts b/mover/janrone/code/my-first-sui-dapp/src/networkConfig.ts new file mode 100644 index 000000000..96de92158 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/networkConfig.ts @@ -0,0 +1,17 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + }, + testnet: { + url: getFullnodeUrl("testnet"), + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/mover/janrone/code/my-first-sui-dapp/src/vite-env.d.ts b/mover/janrone/code/my-first-sui-dapp/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mover/janrone/code/my-first-sui-dapp/tsconfig.json b/mover/janrone/code/my-first-sui-dapp/tsconfig.json new file mode 100644 index 000000000..a7fc6fbf2 --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/mover/janrone/code/my-first-sui-dapp/tsconfig.node.json b/mover/janrone/code/my-first-sui-dapp/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/mover/janrone/code/my-first-sui-dapp/vite.config.ts b/mover/janrone/code/my-first-sui-dapp/vite.config.ts new file mode 100644 index 000000000..d366e8c8d --- /dev/null +++ b/mover/janrone/code/my-first-sui-dapp/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/mover/janrone/readme.md b/mover/janrone/readme.md index 60f978bb3..a01540a75 100644 --- a/mover/janrone/readme.md +++ b/mover/janrone/readme.md @@ -1,13 +1,14 @@ ## 基本信息 -- Sui钱包地址: `0xf3ae297c88b60fa70dd8c860c8b595d02e56fd41074ace7aa93b9ba835b794ff` -> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 + +- Sui 钱包地址: `0xf3ae297c88b60fa70dd8c860c8b595d02e56fd41074ace7aa93b9ba835b794ff` + > 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 - github: `janrone` ## 个人简介 -- 工作经验: 10年 -- 技术栈: `Java` `TypeScript` -- 多年移动开发经验,对Web3 ,Move特别感兴趣,想通过Move入门区块链 +- 工作经验: 10 年 +- 技术栈: `Java` `TypeScript` +- 多年移动开发经验,对 Web3 ,Move 特别感兴趣,想通过 Move 入门区块链 ## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) @@ -19,46 +20,52 @@ ## 任务 -## 01. hello move +## 01. hello move - [x] Sui cli version:sui 1.37.1-homebrew -- [x] Sui钱包截图: ![Sui钱包截图](./co-learn-2411/images/sui-wallet-img.jpg) -- [x] PackageID: 0x2cd97a540cdaf9d5bae9c455f9d5918a23570242af2647e8ee120a452acd0d91 +- [x] Sui 钱包截图: ![Sui钱包截图](./co-learn-2411/images/sui-wallet-img.jpg) +- [x] PackageID: 0x2cd97a540cdaf9d5bae9c455f9d5918a23570242af2647e8ee120a452acd0d91 - [x] https://testnet.suivision.xyz/package/0x2cd97a540cdaf9d5bae9c455f9d5918a23570242af2647e8ee120a452acd0d91?tab=Code - [x] ![package id 在 suivision 链上截图](./co-learn-2411/images/task01-2.jpg) +## 02 move coin -## 02 move coin - [x] My Coin package id : 0x5eba66432f3f60b472895c003872af367cc73f81c726207fae9585026da3858c -- [x] Faucet package id : 0x5865895f21bad55e8c747d2b53a3787a123b55c2dd0ea070e0813873b1e2c347 -- [x] 转账 `My Coin` hash: 8kyMipWo4U4iCBsxvqjkN5UDQUuyeuoyoWZLXrvw4rYC +- [x] Faucet package id : 0x5865895f21bad55e8c747d2b53a3787a123b55c2dd0ea070e0813873b1e2c347 +- [x] 转账 `My Coin` hash: 8kyMipWo4U4iCBsxvqjkN5UDQUuyeuoyoWZLXrvw4rYC - [x] `Faucet Coin` address1 mint hash: B2YVMGK3v1Ti8TTKQ9GST95jnpAFEexqmqSdBJMsGT8z - [x] `Faucet Coin` address2 mint hash: DsTyxsjSaYjMAmC6Bn2Nf9WyG6vpXDSoTcCM572BJ6Lg -## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +## 03 move NFT + +- [x] nft package id : 0xfa39712553ea4b508f755819b2b4946f9f93c3dfc76d4348305c9b0804f6b08d +- [x] nft object id : 0xfd8e2f69c4eae0f4db3d963bcf055fc42991b7ce53482341f8375d4b8837a2f0 +- [x] 转账 nft hash: 4CwsV6sx2q7qgFsZ1ADADYkj6rp2yWtF4dFnyCdJj2C1 +- [x] scan 上的 NFT 截图:![Scan截图](./co-learn-2411/images//nft_move_img_1.jpg) + +## 04 Move Game -## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id : 0xef7757243da29bc7efe22a38a27200c9f826cfd045739ee3c79e13b6b93ae78a +- [x] deposit Coin hash: AteMkxCoTTNtvQD1DQgr39911vkQCxNZsGWj4uFxGJw +- [x] withdraw `Coin` hash: ALLscCgww3Yo5yekaucbm2TfzZjuudkusvEfZ2X3kkyS +- [x] play game hash: CW5woz1EzzX7FhMtiBKZwqXkXxF8W7yjT6UDkGB1piwZ -## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +## 05 Move Swap -## 06 Dapp-kit SDK PTB -- [] save hash : +- [x] swap package id : 0xac069d4c34a5af5f663e8a6e3fd8dfcf442f841e088e1f0ced3da5f9cb0a07ba +- [x] call swap CoinA-> CoinB hash : 6CWP5wR6GWTm4eF4oqeQzHVNcqUYF6CWCc6UAiaQsTEC +- [x] call swap CoinB-> CoinA hash : 9WiV5HtymFyc2PiwTQQc5ynBXkurSioE4NGkpa9sTxh + +## 06 Dapp-kit SDK PTB + +- [x] save hash : AtinX5qkhqc84UNW72ZbHzEtU9cb1foBbb3UgN6wEBXh + +## 07 Move CTF Check In -## 07 Move CTF Check In - [] CLI call 截图 : ![截图](./images/你的图片地址) - [] flag hash : -## 08 Move CTF Lets Move -- [] proof : +## 08 Move CTF Lets Move + +- [] proof : - [] flag hash : diff --git a/mover/jethrozz/co-learn-2411/images/jethrozz_nft.png b/mover/jethrozz/co-learn-2411/images/jethrozz_nft.png new file mode 100644 index 000000000..cf8fab227 Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/jethrozz_nft.png differ diff --git a/mover/jethrozz/co-learn-2411/images/lesson02finish.png b/mover/jethrozz/co-learn-2411/images/lesson02finish.png new file mode 100644 index 000000000..891a0c88e Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/lesson02finish.png differ diff --git a/mover/jethrozz/co-learn-2411/images/mint1.png b/mover/jethrozz/co-learn-2411/images/mint1.png new file mode 100644 index 000000000..490c142c7 Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/mint1.png differ diff --git a/mover/jethrozz/co-learn-2411/images/mint2.png b/mover/jethrozz/co-learn-2411/images/mint2.png new file mode 100644 index 000000000..8e9cc6300 Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/mint2.png differ diff --git a/mover/jethrozz/co-learn-2411/images/transfer.png b/mover/jethrozz/co-learn-2411/images/transfer.png new file mode 100644 index 000000000..eaa6e6f47 Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/transfer.png differ diff --git a/mover/jethrozz/co-learn-2411/images/zhibo01.png b/mover/jethrozz/co-learn-2411/images/zhibo01.png new file mode 100644 index 000000000..2e5433c8c Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/zhibo01.png differ diff --git a/mover/jethrozz/co-learn-2411/images/zhibo02.png b/mover/jethrozz/co-learn-2411/images/zhibo02.png new file mode 100644 index 000000000..05e7f763b Binary files /dev/null and b/mover/jethrozz/co-learn-2411/images/zhibo02.png differ diff --git a/mover/jethrozz/co-learn-2411/readme.md b/mover/jethrozz/co-learn-2411/readme.md index 389c08a6e..8dcd43642 100644 --- a/mover/jethrozz/co-learn-2411/readme.md +++ b/mover/jethrozz/co-learn-2411/readme.md @@ -12,14 +12,14 @@ ## 每周课程学习 - [✔] 第一周:![学习记录截图](./images/lesson01finish.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [✔] 第二周:![学习记录截图](./images/lesson02finish.png) +- [✔] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 -- [] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [✔] 第一周:![学习记录截图](./images/zhibo01.png) +- [✔] 第二周:![学习记录截图](./images/zhibo02.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) diff --git a/mover/jethrozz/code/my_coin/Move.toml b/mover/jethrozz/code/my_coin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/jethrozz/code/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/jethrozz/code/my_coin/call.md b/mover/jethrozz/code/my_coin/call.md new file mode 100644 index 000000000..12f81b393 --- /dev/null +++ b/mover/jethrozz/code/my_coin/call.md @@ -0,0 +1,20 @@ +- 测试网 生成币并且转账到指定地址 +```shell +sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x702c5327120d07920d786b9a57215af70beee39c92cd492a11f1acd976cfecfe::donkey::DONKEY --args 0x8c23d324dfc0720388c5633c59d1bdb9a877e23c9157083d945d4bb9fe5be52e 9000000000000 0x91459991a3e1778334dc4bd007cb90fe9989a4aabfcef4ed19095e712507ea43 +``` + +- 主网 +- mint +```shell +//mint +//0x91459991a3e1778334dc4bd007cb90fe9989a4aabfcef4ed19095e712507ea43 +sui client call --package 0xea234fbb881adab94da3af129d8f7682da4f6ae5bf2cf5e013984bbeeebfcd2d --module jethro_coin --function mint --args 0x8796f5acc7d5be8c3addaa19503389dd5dcdf9a3b68044dec01f884e1778b682 9990000000000 0x91459991a3e1778334dc4bd007cb90fe9989a4aabfcef4ed19095e712507ea43 + +// address 0x2757c1c8f37e998dedaa7444f37de0369e454e5da8156d2cc58151aa15959bca +sui client call --package 0xea234fbb881adab94da3af129d8f7682da4f6ae5bf2cf5e013984bbeeebfcd2d --module jethro_coin --function mint --args 0x8796f5acc7d5be8c3addaa19503389dd5dcdf9a3b68044dec01f884e1778b682 10000000000 0x2757c1c8f37e998dedaa7444f37de0369e454e5da8156d2cc58151aa15959bca +``` +- 转账 +from 0x2757c1c8f37e998dedaa7444f37de0369e454e5da8156d2cc58151aa15959bca to 0x91459991a3e1778334dc4bd007cb90fe9989a4aabfcef4ed19095e712507ea43 +```shell +sui client call --package 0xea234fbb881adab94da3af129d8f7682da4f6ae5bf2cf5e013984bbeeebfcd2d --module jethro_coin --function transfer_coins --args 0x3fb7349de8ecee793b6a83bc314232c5d43a3da9fc22fa2e7e33b1ef8068bb38 8000000000 0xa1e7d0c18f5e9183671eb7bebd013b7ef3d2f3e8a48e4db56d2a38e590ecc0a1 +``` \ No newline at end of file diff --git a/mover/jethrozz/code/my_coin/sources/jethro_coin.move b/mover/jethrozz/code/my_coin/sources/jethro_coin.move new file mode 100644 index 000000000..cfe3e4ad7 --- /dev/null +++ b/mover/jethrozz/code/my_coin/sources/jethro_coin.move @@ -0,0 +1,45 @@ +module my_coin::jethro_coin; + +use std::option; +use sui::coin; +use sui::coin::{TreasuryCap, Coin}; +use sui::transfer; +use sui::url::Url; +use sui::tx_context::{TxContext}; + +public struct JETHRO_COIN has drop {} +public struct TreasuryCapHolder has key { + id: UID, + treasury_cap: TreasuryCap, +} +//构造函数 +fun init(otw: JETHRO_COIN, ctx: &mut TxContext) { + //"https://jethrowiki-1308786690.cos.ap-chongqing.myqcloud.com/mypicture%2Fimage%2Fdonkey.jpg" + let (treasury_cap, metadata) = coin::create_currency( + otw, + 9, + b"JETHRO_COIN", + b"jethro coin", + b"jethro token", + option::none(), + ctx, + ); + transfer::public_freeze_object(metadata); + let treasury_cap_holder = TreasuryCapHolder { + id: object::new(ctx), + treasury_cap, + }; + transfer::share_object(treasury_cap_holder); +} + +entry fun mint(treasury_cap_holder: &mut TreasuryCapHolder, amount: u64, recipient: address, ctx: &mut TxContext) { + let treasury_cap = &mut treasury_cap_holder.treasury_cap; + let coins = coin::mint(treasury_cap, amount, ctx); + // 用coin做点什么 + transfer::public_transfer(coins, recipient) +} + +entry fun transfer_coins(from_wallet: &mut Coin, amount: u64, to_wallet: &mut Coin, ctx: &mut TxContext) { + let cash = coin::take(coin::balance_mut(from_wallet), amount, ctx); + coin::put(coin::balance_mut(to_wallet), cash); +} \ No newline at end of file diff --git a/mover/jethrozz/code/my_coin/tests/my_coin_tests.move b/mover/jethrozz/code/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/jethrozz/code/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/jethrozz/code/my_nft/Move.lock b/mover/jethrozz/code/my_nft/Move.lock new file mode 100644 index 000000000..e5ce03987 --- /dev/null +++ b/mover/jethrozz/code/my_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "4C9B47E7441289AA0D50D87EEB9836BD01CE3604E3B249490E7F2046EAEE3400" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x486f57148d9f67c3a21180350b0bfb35cb0fe2476547586d8b0326536b709c80" +latest-published-id = "0x486f57148d9f67c3a21180350b0bfb35cb0fe2476547586d8b0326536b709c80" +published-version = "1" diff --git a/mover/jethrozz/code/my_nft/Move.toml b/mover/jethrozz/code/my_nft/Move.toml new file mode 100644 index 000000000..d40d13d2e --- /dev/null +++ b/mover/jethrozz/code/my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/jethrozz/code/my_nft/sources/my_nft.move b/mover/jethrozz/code/my_nft/sources/my_nft.move new file mode 100644 index 000000000..895db3431 --- /dev/null +++ b/mover/jethrozz/code/my_nft/sources/my_nft.move @@ -0,0 +1,79 @@ +/* +/// Module: my_nft +module my_nft::my_nft; +*/ +module my_nft::my_nft; + +use sui::package; +use sui::display; +use std::string::{String, utf8}; +use sui::tx_context::sender; + +public struct JETHROZZ_NFT02 has key, store{ + id: UID, + name: String, + image_url: String, +} + +public struct MY_NFT has drop { + +} + +fun init(otw: MY_NFT, ctx: &mut TxContext) { + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"https://sui-heroes.io/hero/{id}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"A true Hero of the Sui ecosystem!".to_string(), + // Project URL is usually static + b"https://sui-heroes.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `Hero` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + let nft = JETHROZZ_NFT02 { + id: object::new(ctx), + name: utf8(b"jethrozz_nft"), + image_url: utf8(b"https://jethrowiki-1308786690.cos.ap-chongqing.myqcloud.com/mypicture%2Fimage%2Fdonkey.jpg") + }; + transfer::public_transfer(nft, sender(ctx)); +} + +/// Anyone can mint their `Hero`! +public fun mint(name: String, image_url: String, ctx: &mut TxContext) { + let nft = JETHROZZ_NFT02 { + id: object::new(ctx), + name, + image_url + }; + + //生成一个nft转移给自己 + transfer::public_transfer(nft, sender(ctx)); +} \ No newline at end of file diff --git a/mover/jethrozz/code/my_nft/tests/my_nft_tests.move b/mover/jethrozz/code/my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/jethrozz/code/my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/jethrozz/readme.md b/mover/jethrozz/readme.md index a3fcddc32..39b0ec50d 100644 --- a/mover/jethrozz/readme.md +++ b/mover/jethrozz/readme.md @@ -19,17 +19,17 @@ - [✔] package id 在 scan上的查看截图:![Scan截图](./co-learn-2411//images/packageid.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [✔] My Coin package id : 0xea234fbb881adab94da3af129d8f7682da4f6ae5bf2cf5e013984bbeeebfcd2d +- [✔] Faucet package id : 0xea234fbb881adab94da3af129d8f7682da4f6ae5bf2cf5e013984bbeeebfcd2d +- [✔] 转账 `My Coin` hash: 3EGvPzgTstugTkrD9wbm9FcW6pcYnegChhSG5uvW3i8Z +- [✔] `Faucet Coin` address1 mint hash: GvsScjav22iC98CkWzg2mCWm1kSR7saLTXVfxCybnoN8 +- [✔] `Faucet Coin` address2 mint hash: iJQPVQXM8N4ymZ3khEqVYApX6fBLACGMNENsmXEaYsE ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [✔] nft package id : 0x486f57148d9f67c3a21180350b0bfb35cb0fe2476547586d8b0326536b709c80 +- [✔] nft object id : 0x56cf612aac46fc25552a12fca554c19802140cf916411c56e65c1abbb2dac207 +- [✔] 转账 nft hash: 8fSap7bHqrgWvP1aWqomdWZd2H1jL6qkw89j97qRcPA2 +- [✔] scan上的NFT截图:![Scan截图](./co-learn-2411//images/jethrozz_nft.png) ## 04 Move Game - [] game package id : diff --git a/mover/jf-li00/code/task6/package-lock.json b/mover/jf-li00/code/task6/package-lock.json index 2ee21c0f8..7eddeb614 100644 --- a/mover/jf-li00/code/task6/package-lock.json +++ b/mover/jf-li00/code/task6/package-lock.json @@ -9,7 +9,8 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "navi-sdk": "1.1.15" + "navi-sdk": "1.1.15", + "task6": "file:" }, "devDependencies": { "@types/node": "^20.12.7", @@ -1702,6 +1703,10 @@ "node": ">=14.0.0" } }, + "node_modules/task6": { + "resolved": "", + "link": true + }, "node_modules/tinybench": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz", diff --git a/mover/jf-li00/code/task6/package.json b/mover/jf-li00/code/task6/package.json index d902a05ec..b4ab9447e 100644 --- a/mover/jf-li00/code/task6/package.json +++ b/mover/jf-li00/code/task6/package.json @@ -16,6 +16,7 @@ "typescript": "^5.4.5" }, "dependencies": { - "navi-sdk": "1.1.15" + "navi-sdk": "1.1.15", + "task6": "file:" } } diff --git a/mover/klren0312/code/check_in/Move.toml b/mover/klren0312/code/check_in/Move.toml new file mode 100644 index 000000000..87af25a2b --- /dev/null +++ b/mover/klren0312/code/check_in/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "check_in" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +check_in = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/klren0312/code/check_in/sources/check_in.move b/mover/klren0312/code/check_in/sources/check_in.move new file mode 100644 index 000000000..c251914e3 --- /dev/null +++ b/mover/klren0312/code/check_in/sources/check_in.move @@ -0,0 +1,45 @@ +module check_in::check_in { + use std::ascii::{string, String}; + use std::bcs; + use std::hash::sha3_256; + use sui::transfer::share_object; + + const ESTRING: u64 = 0; + + + public struct FlagString has key { + id: UID, + str: String, + ture_num: u64 + } + + fun init(ctx: &mut TxContext) { + let flag_str = FlagString { + id: object::new(ctx), + str: string(b"LetsMoveCTF"), + ture_num: 0 + }; + share_object(flag_str); + } + + + + entry fun get_flag(): vector { + let mut bcs_flag = bcs::to_bytes(&string(b"9$3^U&7j'lX^yUsyP_")); + vector::append(&mut bcs_flag, *string(b"klren0312").as_bytes()); + let sha256 = sha3_256(bcs_flag); + sha256 + } + + entry fun check_get_flag( + flag: vector, + github_id: String, + flag_str: String, + ): vector { + let mut bcs_flag = bcs::to_bytes(&flag_str); + vector::append(&mut bcs_flag, *github_id.as_bytes()); + assert!(flag == sha3_256(bcs_flag), ESTRING); + sha3_256(bcs_flag) + } +} + diff --git a/mover/klren0312/code/check_in/tests/check_in_tests.move b/mover/klren0312/code/check_in/tests/check_in_tests.move new file mode 100644 index 000000000..4d658814e --- /dev/null +++ b/mover/klren0312/code/check_in/tests/check_in_tests.move @@ -0,0 +1,36 @@ + +#[test_only] +module check_in::check_in_tests; +// uncomment this line to import the module +use check_in::check_in; +use std::debug::print; +#[test] +fun test_check_in() { + let res2 = check_in::get_flag(); + print(&res2); + // check_in::check_get_flag( + // res2, + // string(b"klren0312"), + // string(b"0xc8dcd54baa7724177593a9f70598a09ae6a4286f996542e058f248209db08147"), + // ); + /** + function hexToUint8Array(hex) { + if (typeof hex !== 'string') { + throw new TypeError('Input must be a string'); + } + + if (hex.length % 2 !== 0) { + throw new Error('Hex string must have an even length'); + } + + const array = new Uint8Array(hex.length / 2); + for (let i = 0; i < hex.length; i += 2) { + array[i / 2] = parseInt(hex.substring(i, i + 2), 16); + } + + return array; + } + JSON.stringify(Array.from(hexToUint8Array('acb41a9ddfa1572aa4a818ffc04e27c1c16187115128323154257e452f033700'))) + + */ +} diff --git a/mover/klren0312/code/faucet_coin/Move.lock b/mover/klren0312/code/faucet_coin/Move.lock index 777b96dbd..d27173b2c 100644 --- a/mover/klren0312/code/faucet_coin/Move.lock +++ b/mover/klren0312/code/faucet_coin/Move.lock @@ -42,5 +42,5 @@ published-version = "1" [env.Mainnet] chain-id = "35834a8a" original-published-id = "0xc9fbe1280a650aecbfdad2a06fcb3d9caee10c07a1c0ae405e8494727d3a29a5" -latest-published-id = "0xc9fbe1280a650aecbfdad2a06fcb3d9caee10c07a1c0ae405e8494727d3a29a5" -published-version = "1" +latest-published-id = "0x5a409ea30302e1244c283939064b2f139d11e5bdaeb9970302d0d78b885b6921" +published-version = "2" diff --git a/mover/klren0312/code/faucet_coin/sources/faucet_coin.move b/mover/klren0312/code/faucet_coin/sources/faucet_coin.move index e67e7003a..bb72196eb 100644 --- a/mover/klren0312/code/faucet_coin/sources/faucet_coin.move +++ b/mover/klren0312/code/faucet_coin/sources/faucet_coin.move @@ -34,6 +34,15 @@ module faucet_coin::TRUMP_COIN { transfer::share_object(publicWallet); } + // 修改水龙头一次获取数量 + public entry fun set_faucet_amount( + wallet: &mut Public_Wallet, + amount: u64, + _ctx: &mut TxContext + ) { + wallet.faucet_amount = amount; + } + // 创建水龙头 public entry fun create_faucet( treasury_cap: &mut TreasuryCap, diff --git a/mover/klren0312/code/move_game/Move.lock b/mover/klren0312/code/move_game/Move.lock new file mode 100644 index 000000000..e72d3e986 --- /dev/null +++ b/mover/klren0312/code/move_game/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "14727144350BE98A1776A6A45FF824840C48219D5F18A98AD5127B3A41274ED8" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucet_coin", name = "faucet_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucet_coin" +source = { git = "https://github.com/move-cn/letsmove.git", rev = "main", subdir = "mover/klren0312/code/faucet_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.Mainnet] +chain-id = "35834a8a" +original-published-id = "0x413e80e5c694ee898cdb34ba412365702f2d7b5d5f2d0f3c6ccc40f89bdbb066" +latest-published-id = "0x413e80e5c694ee898cdb34ba412365702f2d7b5d5f2d0f3c6ccc40f89bdbb066" +published-version = "1" diff --git a/mover/klren0312/code/move_game/Move.toml b/mover/klren0312/code/move_game/Move.toml new file mode 100644 index 000000000..4954699cc --- /dev/null +++ b/mover/klren0312/code/move_game/Move.toml @@ -0,0 +1,41 @@ +[package] +name = "move_game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +# 引入线上水龙头币合约 +faucet_coin = { git = "https://github.com/move-cn/letsmove.git", subdir = "mover/klren0312/code/faucet_coin", rev = "main" } +# 引入本地水龙头币合约 +# faucet_coin = { local = "../faucet_coin", override = true} + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/klren0312/code/move_game/sources/move_game.move b/mover/klren0312/code/move_game/sources/move_game.move new file mode 100644 index 000000000..670d67b29 --- /dev/null +++ b/mover/klren0312/code/move_game/sources/move_game.move @@ -0,0 +1,144 @@ +module move_game::klren0312_game { + use sui::coin::{Self, Coin, value, from_balance}; + use sui::balance::{Self, Balance}; // 余额操作 + use faucet_coin::TRUMP_COIN::TRUMP_COIN; // 水龙头币 + use sui::tx_context::sender; + // Random has a reserved address 0x8 + use sui::random::{ Random, new_generator, generate_u8_in_range }; + use sui::event::{emit}; + use std::string::{utf8, String}; + + // 错误码 + const ErrorAddrBalanceInsufficient: u64 = 0; // 钱包余额不足 + const ErrorGameServerBalanceInsufficient: u64 = 1; // 游戏服务器余额不足 + + + // 管理员权限 + public struct AdminCap has key { + id: UID + } + + // 游戏服务 + public struct GameServer has key { + id: UID, + coin_pool: Balance, + need_coin_amount: u64, // 玩需要的钱 + reward_coin: u64 // 奖励的钱 + } + + // 游戏结果 + public struct GameResult has copy, drop { + game_server_number: u8, + player_guess_number: u8, + play_status: bool, + play_status_chinese: String, + reward_coin_amount: u64 + } + + // 生成游戏服务 + entry fun gen_game(amount: u64, ctx: &mut TxContext) { + // 共享gameserver + let gameServer = GameServer { + id: object::new(ctx), + coin_pool: balance::zero(), + need_coin_amount: amount, + reward_coin: amount * 2 + }; + transfer::share_object(gameServer); + + // 转移管理员权限给发送的人 + let admin_cap = AdminCap { + id: object::new(ctx) + }; + transfer::transfer(admin_cap, sender(ctx)); + } + + // 开始玩 + entry fun do_play (r: &Random, game_server: &mut GameServer, input_addr_coin_type: Coin, guess: u8, ctx: &mut TxContext) { + // 先把玩游戏的钱存到游戏服务器 + let amount = game_server.need_coin_amount; // 转一下 防止下面报错 + deposit(game_server, input_addr_coin_type, amount, ctx); + + let mut gen = new_generator(r, ctx); + // 生成游戏服务器的随机数结果 + let server_number: u8 = generate_u8_in_range(&mut gen, 1, 10); + + // 游戏状态 true-赢 false-输 + let mut play_result: bool = false; + // 相等,就是赢 + if (guess == server_number) { + // 获取游戏服务器资金池的余额数量 + let coin_pool_amount = balance::value(&game_server.coin_pool); + // 余额不够支付,报错 + assert!(game_server.reward_coin <= coin_pool_amount, ErrorGameServerBalanceInsufficient); + + // 从游戏服务器的资金池中分出来奖励的余额 + let reward_balance = balance::split(&mut game_server.coin_pool, game_server.reward_coin); + let reward_coin = coin::from_balance(reward_balance, ctx); + // 发给玩游戏的人 + transfer::public_transfer(reward_coin, sender(ctx)); + play_result = true; + }; + let mut reward_coin_amount: u64 = 0; + let mut play_status_chinese: String = utf8(b"输了"); + if (play_result == true) { + reward_coin_amount = game_server.reward_coin; + play_status_chinese = utf8(b"赢了"); + }; + // 发送游戏结果事件 + emit(GameResult{ + game_server_number: server_number, + player_guess_number: guess, + play_status: play_result, + play_status_chinese: play_status_chinese, + reward_coin_amount: reward_coin_amount + }); + } + + + // 给服务器存款 + entry fun deposit(game_server: &mut GameServer, input_addr_coin_type: Coin, amount: u64, ctx: &mut TxContext) { + // 获取存款账户当前TRUMP_COIN的余额 + let current_addr_coin = value(&input_addr_coin_type); + // 存的钱大于自己本身的余额,报错 + assert!(current_addr_coin >= amount, ErrorAddrBalanceInsufficient); + // 从存款账户中提取出余额 + let mut current_addr_balance = coin::into_balance(input_addr_coin_type); + // 如果存款账户的余额大于存款的钱,需要分割存款账户余额,提取存的钱那部分余额,存到游戏服务器的资金池 + if (current_addr_coin > amount) { + balance::join( + &mut game_server.coin_pool, + balance::split(&mut current_addr_balance, amount) + ); + // 把剩下的余额转成coin,用于转发回存款账户的钱包里 + let finish_current_addr_coin = from_balance(current_addr_balance, ctx); + transfer::public_transfer(finish_current_addr_coin, sender(ctx)); + } else { + // 如果存款账户的余额等于存款的钱,直接放到游戏服务器资金池 + balance::join( + &mut game_server.coin_pool, + current_addr_balance + ); + } + } + + // 用于服务管理员从服务器提款 + entry fun admin_withdraw(_: &AdminCap, game_server: &mut GameServer, amount: u64, ctx: &mut TxContext) { + // 获取游戏服务器资金池的余额数量 + let coin_pool_amount = balance::value(&game_server.coin_pool); + // 余额不够支付,报错 + assert!(amount <= coin_pool_amount, ErrorGameServerBalanceInsufficient); + // 提取出指定数量余额 + let withdraw_balance = balance::split(&mut game_server.coin_pool, amount); + // 余额转成coin + let withdraw_coin = from_balance(withdraw_balance , ctx); + // 发给管理员账户 + transfer::public_transfer(withdraw_coin, sender(ctx)); + } + + #[test_only] + entry fun get_random(r: &Random, ctx: &mut TxContext): u8 { + let mut gen = new_generator(r, ctx); + generate_u8_in_range(&mut gen, 10, 20) + } +} diff --git a/mover/klren0312/code/move_game/tests/move_game_tests.move b/mover/klren0312/code/move_game/tests/move_game_tests.move new file mode 100644 index 000000000..de7b14731 --- /dev/null +++ b/mover/klren0312/code/move_game/tests/move_game_tests.move @@ -0,0 +1,29 @@ +#[test_only] +module move_game::move_game_tests; +// uncomment this line to import the module +use move_game::klren0312_game::{get_random}; +use std::debug::print; +use sui::test_scenario as ts; +use sui::random::{Random, create_for_testing}; + +#[test] +fun test_get_random() { + let user = @0x0; + let mut ts = ts::begin(user); + create_for_testing(ts.ctx()); + ts.next_tx(user); + let mut random_state: Random = ts.take_shared(); + random_state.update_randomness_state_for_testing(0, x"feaafeaafeaafeaa", ts.ctx()); + let number = get_random(&random_state, ts.ctx()); + print(&number); + random_state.update_randomness_state_for_testing(1, x"feaafeaafeaafeaa", ts.ctx()); + let number2 = get_random(&random_state, ts.ctx()); + print(&number2); + random_state.update_randomness_state_for_testing(2, x"feaafeaafeaafeaa", ts.ctx()); + let number3 = get_random(&random_state, ts.ctx()); + print(&number3); + ts::return_shared(random_state); + ts.end(); +} + + diff --git a/mover/klren0312/code/move_swap/Move.lock b/mover/klren0312/code/move_swap/Move.lock new file mode 100644 index 000000000..f35bec519 --- /dev/null +++ b/mover/klren0312/code/move_swap/Move.lock @@ -0,0 +1,58 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "CC8677BF8ABC75558C0B3F2BD7828AB09B6A7E8F145C8953F0072A21388918DC" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucet_coin", name = "faucet_coin" }, + { id = "move_coin", name = "move_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucet_coin" +source = { git = "https://github.com/klren0312/letsmove.git", rev = "feature/task5", subdir = "mover/klren0312/code/faucet_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "move_coin" +source = { git = "https://github.com/move-cn/letsmove.git", rev = "main", subdir = "mover/klren0312/code/move_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.Devnet] +chain-id = "0fc07bbe" +original-published-id = "0x34df2fff07a93600b0292bc66a266441ca0c0d79c5fd91a11e35304befdce2d5" +latest-published-id = "0x34df2fff07a93600b0292bc66a266441ca0c0d79c5fd91a11e35304befdce2d5" +published-version = "1" + +[env.Mainnet] +chain-id = "35834a8a" +original-published-id = "0x2aabda497a78029660d83c04d26b294dbc66acc56873ff1e22302c9a98bb927a" +latest-published-id = "0x2aabda497a78029660d83c04d26b294dbc66acc56873ff1e22302c9a98bb927a" +published-version = "1" diff --git a/mover/klren0312/code/move_swap/Move.toml b/mover/klren0312/code/move_swap/Move.toml new file mode 100644 index 000000000..774414c7d --- /dev/null +++ b/mover/klren0312/code/move_swap/Move.toml @@ -0,0 +1,45 @@ +[package] +name = "move_swap" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +# 引入线上水龙头币合约 +faucet_coin = { git = "https://github.com/klren0312/letsmove.git", subdir = "mover/klren0312/code/faucet_coin", rev = "feature/task5" } +# 引入线上普通币合约 +move_coin = { git = "https://github.com/move-cn/letsmove.git", subdir = "mover/klren0312/code/move_coin", rev = "main" } + +# 引入本地水龙头币合约 +# faucet_coin = { local = "../faucet_coin", override = true } +# 引入本地普通币合约 +# move_coin = { local = "../move_coin", override = true } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +move_swap = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/klren0312/code/move_swap/sources/move_swap.move b/mover/klren0312/code/move_swap/sources/move_swap.move new file mode 100644 index 000000000..bac16f493 --- /dev/null +++ b/mover/klren0312/code/move_swap/sources/move_swap.move @@ -0,0 +1,71 @@ +module move_swap::klren0312_swap { + use faucet_coin::TRUMP_COIN::TRUMP_COIN; + use move_coin::ZCDCCOIN::ZCDCCOIN; + use sui::balance::{Balance, value, split, join}; + use sui::coin::{Coin, into_balance, from_balance}; + use sui::tx_context::sender; + + // 报错code + const ErrorSwapPoolBalanceInsufficient: u64 = 0; // 池子余额不足 + + // swap池子结构体 + public struct SwapPool has key { + id: UID, + trump_coin: Balance, + zcdc_coin: Balance, + } + + // 创建swap池子 + entry fun create_swap_pool(trump_coin: Coin, zcdc_coin: Coin, ctx: &mut TxContext) { + // 创建的时候就存好钱 + let swap_pool = SwapPool { + id: object::new(ctx), + trump_coin: into_balance(trump_coin), + zcdc_coin: into_balance(zcdc_coin), + }; + transfer::share_object(swap_pool); + } + + // trump to zcdc + entry fun swap_trump_to_zcdc(swap_pool: &mut SwapPool, trump_coin: Coin, ctx: &mut TxContext) { + let trump_coin_balance = into_balance(trump_coin); + // 获取trump的数量 + let trump_coin_value = value(&trump_coin_balance); + // 换算出能兑换的zcdc数量 + let zcdc_coin_swap_value = trump_coin_value * 4; + // 获取池子的zcdc余额 + let swap_zcdc_balance = value(&swap_pool.zcdc_coin); + // 池子余额不足报错 + assert!(swap_zcdc_balance >= zcdc_coin_swap_value, ErrorSwapPoolBalanceInsufficient); + // 从池子里取出要需要swap的zcdc + let zcdc_coin_balance = split(&mut swap_pool.zcdc_coin, zcdc_coin_swap_value); + // zcdc余额转换成coin + let zcdc_coin = from_balance(zcdc_coin_balance, ctx); + // 把trump放入池子中 + join(&mut swap_pool.trump_coin, trump_coin_balance); + // 把zcdc发给账号 + transfer::public_transfer(zcdc_coin, sender(ctx)); + } + + // zcdc to trump + entry fun swap_zcdc_to_trump(swap_pool: &mut SwapPool, zcdc_coin: Coin, ctx: &mut TxContext) { + let zcdc_coin_balance = into_balance(zcdc_coin); + // 获取zcdc的数量 + let zcdc_coin_value = value(&zcdc_coin_balance); + // 换算出能兑换的trump数量 + let trump_coin_swap_value = zcdc_coin_value / 4; + // 获取池子的trump余额 + let swap_trump_balance = value(&swap_pool.trump_coin); + // 池子余额不足报错 + assert!(swap_trump_balance >= trump_coin_swap_value, ErrorSwapPoolBalanceInsufficient); + // 从池子里取出要需要swap的trump + let trump_coin_balance = split(&mut swap_pool.trump_coin, trump_coin_swap_value); + // trump余额转换成coin + let trump_coin = from_balance(trump_coin_balance, ctx); + // 把zcdc放入池子中 + join(&mut swap_pool.zcdc_coin, zcdc_coin_balance); + // 把zcdc发给账号 + transfer::public_transfer(trump_coin, sender(ctx)); + } +} + diff --git a/mover/klren0312/code/move_swap/tests/move_swap_tests.move b/mover/klren0312/code/move_swap/tests/move_swap_tests.move new file mode 100644 index 000000000..cfd3c3deb --- /dev/null +++ b/mover/klren0312/code/move_swap/tests/move_swap_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module move_swap::move_swap_tests; +// uncomment this line to import the module +// use move_swap::move_swap; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_move_swap() { + // pass +} + +#[test, expected_failure(abort_code = ::move_swap::move_swap_tests::ENotImplemented)] +fun test_move_swap_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/klren0312/code/sdk_ptb_navi/README.md b/mover/klren0312/code/sdk_ptb_navi/README.md new file mode 100644 index 000000000..0c6bab850 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/README.md @@ -0,0 +1,35 @@ +# sdk_ptb_navi + +1.[存入Navi Protocol 1 SUI] +2.[借出当前日期的USDC 0.[月][天][小时] 的 USDC] +3.[然后在存入等额的USDC] + +> 当前时间是2024年4月25日15点 借出的金额就是 `0.042515` 月 天 小时 必须是两位数 2024年5月1日2点 `0.050102` + +## 访问地址 +[https://4mjqn8g7bpt52zb1sepiqc48q5l9i3kw561f6epd40c3iz2my3.walrus.site](https://4mjqn8g7bpt52zb1sepiqc48q5l9i3kw561f6epd40c3iz2my3.walrus.site) + +## 执行结果 +![](./docImage/res.png) + +## Starting your dApp + +To install dependencies you can run + +```bash +pnpm install +``` + +To start your dApp in development mode run + +```bash +pnpm dev +``` + +## Building + +To build your app for deployment you can run + +```bash +pnpm build +``` diff --git a/mover/klren0312/code/sdk_ptb_navi/docImage/res.png b/mover/klren0312/code/sdk_ptb_navi/docImage/res.png new file mode 100644 index 000000000..eae822eec Binary files /dev/null and b/mover/klren0312/code/sdk_ptb_navi/docImage/res.png differ diff --git a/mover/klren0312/code/sdk_ptb_navi/index.html b/mover/klren0312/code/sdk_ptb_navi/index.html new file mode 100644 index 000000000..85e265a64 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/index.html @@ -0,0 +1,59 @@ + + + + + + + SDK PTB NAVI + + + + +
+ + + diff --git a/mover/klren0312/code/sdk_ptb_navi/package.json b/mover/klren0312/code/sdk_ptb_navi/package.json new file mode 100644 index 000000000..9fd2a32bd --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/package.json @@ -0,0 +1,37 @@ +{ + "name": "sdk_ptb_navi", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "0.14.33", + "@mysten/sui": "1.14.3", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "navi-sdk": "^1.3.10", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.16.0", + "@typescript-eslint/parser": "^7.16.0", + "@vitejs/plugin-basic-ssl": "^1.1.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^9.6.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } +} \ No newline at end of file diff --git a/mover/klren0312/code/sdk_ptb_navi/pnpm-lock.yaml b/mover/klren0312/code/sdk_ptb_navi/pnpm-lock.yaml new file mode 100644 index 000000000..245710fb6 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/pnpm-lock.yaml @@ -0,0 +1,4673 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@mysten/dapp-kit': + specifier: 0.14.33 + version: 0.14.33(@tanstack/react-query@5.60.5(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@mysten/sui': + specifier: 1.14.3 + version: 1.14.3(typescript@5.6.3) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.2(react@18.3.1) + '@radix-ui/themes': + specifier: ^3.1.1 + version: 3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.50.1 + version: 5.60.5(react@18.3.1) + navi-sdk: + specifier: ^1.3.10 + version: 1.3.10(@types/node@22.9.0)(typescript@5.6.3) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@types/react': + specifier: ^18.3.3 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.1 + '@typescript-eslint/eslint-plugin': + specifier: ^7.16.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^7.16.0 + version: 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@vitejs/plugin-basic-ssl': + specifier: ^1.1.0 + version: 1.1.0(vite@5.4.11(@types/node@22.9.0)) + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.1(vite@5.4.11(@types/node@22.9.0)) + eslint: + specifier: ^9.6.0 + version: 9.15.0 + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@9.15.0) + eslint-plugin-react-refresh: + specifier: ^0.4.7 + version: 0.4.14(eslint@9.15.0) + prettier: + specifier: ^3.3.2 + version: 3.3.3 + typescript: + specifier: ^5.5.3 + version: 5.6.3 + vite: + specifier: ^5.3.3 + version: 5.4.11(@types/node@22.9.0) + +packages: + + '@0no-co/graphql.web@1.0.11': + resolution: {integrity: sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.16': + resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@digitak/grubber@3.1.4': + resolution: {integrity: sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.0': + resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.9.0': + resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.15.0': + resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.3': + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@gql.tada/cli-utils@1.6.3': + resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@mysten/bcs@0.11.1': + resolution: {integrity: sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==} + + '@mysten/bcs@1.1.0': + resolution: {integrity: sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==} + + '@mysten/dapp-kit@0.14.33': + resolution: {integrity: sha512-R4gNlfumXuSZb2d8/3StUPaIu+nXmi+KDX507tE8+CD5mric4b6yr6vkTd3zkwsRqnvKHrvu4v6keXK+I6Wdvg==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: '*' + + '@mysten/sui.js@0.54.1': + resolution: {integrity: sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==} + engines: {node: '>=16'} + + '@mysten/sui@1.14.3': + resolution: {integrity: sha512-5vhOnbSAT/9daMIDPYOp7q9j+6DXqjPAYEJy7ZbR9viBsyAx4UMChCwaLyjoYcJKvhrkDn4LTdDTJEUvpj7TTg==} + engines: {node: '>=18'} + + '@mysten/wallet-standard@0.13.12': + resolution: {integrity: sha512-qFNtgi85Ja4F1dY8MyLIQ+uxzhru+h6TQ6VG2N2AnTutCiFvaQeu2S/akFYeJMfZ0CN/m0v3TNQZN5cxtrLEeg==} + + '@mysten/zksend@0.12.1': + resolution: {integrity: sha512-fccvdpK8tRJxIeThqAzmPl/fnVzoklsKp3L/s9AcKXNdCEoABxuix15ttu4haZgEEuXdEcH2El0nlZ9/PTSXKA==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + + '@pythnetwork/price-service-sdk@1.7.1': + resolution: {integrity: sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==} + + '@pythnetwork/pyth-sui-js@2.1.0': + resolution: {integrity: sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-accessible-icon@1.1.0': + resolution: {integrity: sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.2': + resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.0': + resolution: {integrity: sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.1': + resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.2': + resolution: {integrity: sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.2': + resolution: {integrity: sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.1': + resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.2': + resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.2': + resolution: {integrity: sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.2': + resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.1': + resolution: {integrity: sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.2': + resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.0': + resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.2.1': + resolution: {integrity: sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.1': + resolution: {integrity: sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.2.1': + resolution: {integrity: sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.1': + resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.0': + resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.0': + resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.4': + resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/themes@3.1.6': + resolution: {integrity: sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@rollup/rollup-android-arm-eabi@4.27.2': + resolution: {integrity: sha512-Tj+j7Pyzd15wAdSJswvs5CJzJNV+qqSUcr/aCD+jpQSBtXvGnV0pnrjoc8zFTe9fcKCatkpFpOO7yAzpO998HA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.27.2': + resolution: {integrity: sha512-xsPeJgh2ThBpUqlLgRfiVYBEf/P1nWlWvReG+aBWfNv3XEBpa6ZCmxSVnxJgLgkNz4IbxpLy64h2gCmAAQLneQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.27.2': + resolution: {integrity: sha512-KnXU4m9MywuZFedL35Z3PuwiTSn/yqRIhrEA9j+7OSkji39NzVkgxuxTYg5F8ryGysq4iFADaU5osSizMXhU2A==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.27.2': + resolution: {integrity: sha512-Hj77A3yTvUeCIx/Vi+4d4IbYhyTwtHj07lVzUgpUq9YpJSEiGJj4vXMKwzJ3w5zp5v3PFvpJNgc/J31smZey6g==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.27.2': + resolution: {integrity: sha512-RjgKf5C3xbn8gxvCm5VgKZ4nn0pRAIe90J0/fdHUsgztd3+Zesb2lm2+r6uX4prV2eUByuxJNdt647/1KPRq5g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.2': + resolution: {integrity: sha512-duq21FoXwQtuws+V9H6UZ+eCBc7fxSpMK1GQINKn3fAyd9DFYKPJNcUhdIKOrMFjLEJgQskoMoiuizMt+dl20g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.2': + resolution: {integrity: sha512-6npqOKEPRZkLrMcvyC/32OzJ2srdPzCylJjiTJT2c0bwwSGm7nz2F9mNQ1WrAqCBZROcQn91Fno+khFhVijmFA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.27.2': + resolution: {integrity: sha512-V9Xg6eXtgBtHq2jnuQwM/jr2mwe2EycnopO8cbOvpzFuySCGtKlPCI3Hj9xup/pJK5Q0388qfZZy2DqV2J8ftw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.27.2': + resolution: {integrity: sha512-uCFX9gtZJoQl2xDTpRdseYuNqyKkuMDtH6zSrBTA28yTfKyjN9hQ2B04N5ynR8ILCoSDOrG/Eg+J2TtJ1e/CSA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.27.2': + resolution: {integrity: sha512-/PU9P+7Rkz8JFYDHIi+xzHabOu9qEWR07L5nWLIUsvserrxegZExKCi2jhMZRd0ATdboKylu/K5yAXbp7fYFvA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.2': + resolution: {integrity: sha512-eCHmol/dT5odMYi/N0R0HC8V8QE40rEpkyje/ZAXJYNNoSfrObOvG/Mn+s1F/FJyB7co7UQZZf6FuWnN6a7f4g==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.27.2': + resolution: {integrity: sha512-DEP3Njr9/ADDln3kNi76PXonLMSSMiCir0VHXxmGSHxCxDfQ70oWjHcJGfiBugzaqmYdTC7Y+8Int6qbnxPBIQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.27.2': + resolution: {integrity: sha512-NHGo5i6IE/PtEPh5m0yw5OmPMpesFnzMIS/lzvN5vknnC1sXM5Z/id5VgcNPgpD+wHmIcuYYgW+Q53v+9s96lQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.27.2': + resolution: {integrity: sha512-PaW2DY5Tan+IFvNJGHDmUrORadbe/Ceh8tQxi8cmdQVCCYsLoQo2cuaSj+AU+YRX8M4ivS2vJ9UGaxfuNN7gmg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.27.2': + resolution: {integrity: sha512-dOlWEMg2gI91Qx5I/HYqOD6iqlJspxLcS4Zlg3vjk1srE67z5T2Uz91yg/qA8sY0XcwQrFzWWiZhMNERylLrpQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.27.2': + resolution: {integrity: sha512-euMIv/4x5Y2/ImlbGl88mwKNXDsvzbWUlT7DFky76z2keajCtcbAsN9LUdmk31hAoVmJJYSThgdA0EsPeTr1+w==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.27.2': + resolution: {integrity: sha512-RsnE6LQkUHlkC10RKngtHNLxb7scFykEbEwOFDjr3CeCMG+Rr+cKqlkKc2/wJ1u4u990urRHCbjz31x84PBrSQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.27.2': + resolution: {integrity: sha512-foJM5vv+z2KQmn7emYdDLyTbkoO5bkHZE1oth2tWbQNGW7mX32d46Hz6T0MqXdWS2vBZhaEtHqdy9WYwGfiliA==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.5.0': + resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@suchipi/femver@1.0.0': + resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} + + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.15': + resolution: {integrity: sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==} + + '@tanstack/query-core@5.60.5': + resolution: {integrity: sha512-jiS1aC3XI3BJp83ZiTuDLerTmn9P3U95r6p+6/SNauLJaYxfIC4dMuWygwnBHIZxjn2zJqEpj3nysmPieoxfPQ==} + + '@tanstack/react-query@5.60.5': + resolution: {integrity: sha512-M77bOsPwj1wYE56gk7iJvxGAr4IC12NWdIDhT+Eo8ldkWRHMvIR8I/rufIvT1OXoV/bl7EECwuRuMlxxWtvW2Q==} + peerDependencies: + react: ^18 || ^19 + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@vanilla-extract/css@1.16.0': + resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.6': + resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + + '@vanilla-extract/recipes@0.5.5': + resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitejs/plugin-basic-ssl@1.1.0': + resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + + '@vitejs/plugin-react-swc@3.7.1': + resolution: {integrity: sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==} + peerDependencies: + vite: ^4 || ^5 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@wallet-standard/app@1.1.0': + resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} + engines: {node: '>=16'} + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.0.3': + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} + engines: {node: '>= 8'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.14: + resolution: {integrity: sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==} + peerDependencies: + eslint: '>=7' + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.15.0: + resolution: {integrity: sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + esrun@3.2.26: + resolution: {integrity: sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==} + engines: {node: '>=14.0'} + hasBin: true + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gql.tada@1.8.10: + resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.10.3: + resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + navi-sdk@1.3.10: + resolution: {integrity: sha512-rqPn72iOYj9nEM61StXnOSngtRilL/VsUgYsWHgljCXjgnjQCdgqW22BemG3sYbGtbSVT7HfOTn5Z1Fx3oiCBw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.27.2: + resolution: {integrity: sha512-KreA+PzWmk2yaFmZVwe6GB2uBD86nXl86OsDkt1bJS9p3vqWuEQ6HnJJ+j/mZi/q0920P99/MVRlB4L3crpF5w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zustand@4.5.5: + resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@0no-co/graphql.web@1.0.11(graphql@16.9.0)': + optionalDependencies: + graphql: 16.9.0 + + '@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@digitak/grubber@3.1.4': {} + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0)': + dependencies: + eslint: 9.15.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.9.0': {} + + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.15.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.3': + dependencies: + levn: 0.4.1 + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.12': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.8': {} + + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@gql.tada/internal@1.0.8(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + graphql: 16.9.0 + typescript: 5.6.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': + dependencies: + graphql: 16.9.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@mysten/bcs@0.11.1': + dependencies: + bs58: 5.0.0 + + '@mysten/bcs@1.1.0': + dependencies: + bs58: 6.0.0 + + '@mysten/dapp-kit@0.14.33(@tanstack/react-query@5.60.5(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.6.3) + '@mysten/zksend': 0.12.1(typescript@5.6.3) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@tanstack/react-query': 5.60.5(react@18.3.1) + '@vanilla-extract/css': 1.16.0 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/recipes': 0.5.5(@vanilla-extract/css@1.16.0) + clsx: 2.1.1 + react: 18.3.1 + zustand: 4.5.5(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + + '@mysten/sui.js@0.54.1(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 0.11.1 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + superstruct: 1.0.4 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.14.3(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.13.12(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/zksend@0.12.1(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.6.3) + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pythnetwork/price-service-client@1.9.0': + dependencies: + '@pythnetwork/price-service-sdk': 1.7.1 + '@types/ws': 8.5.13 + axios: 1.7.7 + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0) + ts-log: 2.2.7 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.7.1': + dependencies: + bn.js: 5.2.1 + + '@pythnetwork/pyth-sui-js@2.1.0(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@pythnetwork/price-service-client': 1.9.0 + buffer: 6.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - bufferutil + - debug + - typescript + - utf-8-validate + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-accessible-icon@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-aspect-ratio@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-avatar@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-checkbox@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-radio-group@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-scroll-area@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slider@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/themes@3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/colors': 3.0.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-accessible-icon': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-aspect-ratio': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context-menu': 2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-hover-card': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-switch': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@rollup/rollup-android-arm-eabi@4.27.2': + optional: true + + '@rollup/rollup-android-arm64@4.27.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.27.2': + optional: true + + '@rollup/rollup-darwin-x64@4.27.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.27.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.27.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.27.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.27.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.27.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.27.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.27.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.2': + optional: true + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.5.0': + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@sinclair/typebox@0.27.8': {} + + '@suchipi/femver@1.0.0': {} + + '@swc/core-darwin-arm64@1.9.2': + optional: true + + '@swc/core-darwin-x64@1.9.2': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.2': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.2': + optional: true + + '@swc/core-linux-arm64-musl@1.9.2': + optional: true + + '@swc/core-linux-x64-gnu@1.9.2': + optional: true + + '@swc/core-linux-x64-musl@1.9.2': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.2': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.2': + optional: true + + '@swc/core-win32-x64-msvc@1.9.2': + optional: true + + '@swc/core@1.9.2': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.15 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.15': + dependencies: + '@swc/counter': 0.1.3 + + '@tanstack/query-core@5.60.5': {} + + '@tanstack/react-query@5.60.5(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.60.5 + react: 18.3.1 + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@22.9.0': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.13': {} + + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.12 + + '@types/react@18.3.12': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/ws@8.5.13': + dependencies: + '@types/node': 22.9.0 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 9.15.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + eslint: 9.15.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.15.0)(typescript@5.6.3) + debug: 4.3.7 + eslint: 9.15.0 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@9.15.0)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + eslint: 9.15.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@vanilla-extract/css@1.16.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/private@1.0.6': {} + + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.16.0)': + dependencies: + '@vanilla-extract/css': 1.16.0 + + '@vitejs/plugin-basic-ssl@1.1.0(vite@5.4.11(@types/node@22.9.0))': + dependencies: + vite: 5.4.11(@types/node@22.9.0) + + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.11(@types/node@22.9.0))': + dependencies: + '@swc/core': 1.9.2 + vite: 5.4.11(@types/node@22.9.0) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.12 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.0.3': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + array-union@2.1.0: {} + + assertion-error@1.1.0: {} + + asynckit@0.4.0: {} + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + bech32@2.0.0: {} + + binary-extensions@2.3.0: {} + + bn.js@5.2.1: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + callsites@3.1.0: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + cross-spawn@7.0.5: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-node-es@1.1.0: {} + + diff-sequences@29.6.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dotenv@16.4.5: {} + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.2(eslint@9.15.0): + dependencies: + eslint: 9.15.0 + + eslint-plugin-react-refresh@0.4.14(eslint@9.15.0): + dependencies: + eslint: 9.15.0 + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.15.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.0 + '@eslint/core': 0.9.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.15.0 + '@eslint/plugin-kit': 0.2.3 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.5 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + esrun@3.2.26: + dependencies: + '@digitak/grubber': 3.1.4 + chokidar: 3.6.0 + esbuild: 0.17.19 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.5 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fsevents@2.3.3: + optional: true + + get-func-name@2.0.2: {} + + get-nonce@1.0.1: {} + + get-stream@8.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gql.tada@1.8.10(graphql@16.9.0)(typescript@5.6.3): + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graphemer@1.4.0: {} + + graphql@16.9.0: {} + + has-flag@4.0.0: {} + + human-signals@5.0.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-retry-allowed@2.2.0: {} + + is-stream@3.0.0: {} + + isexe@2.0.0: {} + + isomorphic-ws@4.0.1(ws@8.18.0): + dependencies: + ws: 8.18.0 + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.26.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mitt@3.0.1: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + modern-ahocorasick@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + nanostores@0.10.3: {} + + natural-compare@1.4.0: {} + + navi-sdk@1.3.10(@types/node@22.9.0)(typescript@5.6.3): + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/sui.js': 0.54.1(typescript@5.6.3) + '@pythnetwork/pyth-sui-js': 2.1.0(typescript@5.6.3) + axios: 1.7.7 + dotenv: 16.4.5 + esrun: 3.2.26 + tsconfig-paths: 4.2.0 + vitest: 1.6.0(@types/node@22.9.0) + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/node' + - '@vitest/browser' + - '@vitest/ui' + - bufferutil + - debug + - happy-dom + - jsdom + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - typescript + - utf-8-validate + + normalize-path@3.0.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.3.3: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + rollup@4.27.2: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.27.2 + '@rollup/rollup-android-arm64': 4.27.2 + '@rollup/rollup-darwin-arm64': 4.27.2 + '@rollup/rollup-darwin-x64': 4.27.2 + '@rollup/rollup-freebsd-arm64': 4.27.2 + '@rollup/rollup-freebsd-x64': 4.27.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.2 + '@rollup/rollup-linux-arm-musleabihf': 4.27.2 + '@rollup/rollup-linux-arm64-gnu': 4.27.2 + '@rollup/rollup-linux-arm64-musl': 4.27.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.2 + '@rollup/rollup-linux-riscv64-gnu': 4.27.2 + '@rollup/rollup-linux-s390x-gnu': 4.27.2 + '@rollup/rollup-linux-x64-gnu': 4.27.2 + '@rollup/rollup-linux-x64-musl': 4.27.2 + '@rollup/rollup-win32-arm64-msvc': 4.27.2 + '@rollup/rollup-win32-ia32-msvc': 4.27.2 + '@rollup/rollup-win32-x64-msvc': 4.27.2 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@3.8.0: {} + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + superstruct@1.0.4: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tinybench@2.9.0: {} + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@1.4.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-log@2.2.7: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.1.0: {} + + typescript@5.6.3: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + + valibot@0.36.0: {} + + vite-node@1.6.0(@types/node@22.9.0): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.11(@types/node@22.9.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.11(@types/node@22.9.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.27.2 + optionalDependencies: + '@types/node': 22.9.0 + fsevents: 2.3.3 + + vitest@1.6.0(@types/node@22.9.0): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.3.7 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.12 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.0 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.11(@types/node@22.9.0) + vite-node: 1.6.0(@types/node@22.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.9.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + ws@8.18.0: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zustand@4.5.5(@types/react@18.3.12)(react@18.3.1): + dependencies: + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react: 18.3.1 diff --git a/mover/klren0312/code/sdk_ptb_navi/prettier.config.cjs b/mover/klren0312/code/sdk_ptb_navi/prettier.config.cjs new file mode 100644 index 000000000..c07541106 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/prettier.config.cjs @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-undef +module.exports = { + proseWrap: "always", +}; diff --git a/mover/klren0312/code/sdk_ptb_navi/src/App.tsx b/mover/klren0312/code/sdk_ptb_navi/src/App.tsx new file mode 100644 index 000000000..95ee473d3 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/App.tsx @@ -0,0 +1,58 @@ +import { ConnectButton } from "@mysten/dapp-kit"; +import { Box, Container, Flex, Heading } from "@radix-ui/themes"; +import { PtbBlock } from "./PtbBlock"; +import { useEffect, useState } from "react"; +import { addZero, getCurrentTime } from "./utils"; +function App() { + const [time, setTime] = useState('') + const currentTime = () => { + const { + year, + month, + date, + hour, + min, + second + } = getCurrentTime() + + setTime(`${year}-${addZero(month)}-${addZero(date)} ${addZero(hour)}:${addZero(min)}:${addZero(second)}`) + } + useEffect(() => { + setInterval(() => { + currentTime() + }, 1000) + }, []) + return ( + <> + + + SDK PTB NAVI ({time}) + + + + + + + + + + + + + ); +} + +export default App; diff --git a/mover/klren0312/code/sdk_ptb_navi/src/PtbBlock.tsx b/mover/klren0312/code/sdk_ptb_navi/src/PtbBlock.tsx new file mode 100644 index 000000000..f0c24c6ce --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/PtbBlock.tsx @@ -0,0 +1,135 @@ +import { useCurrentAccount, useSignAndExecuteTransaction } from "@mysten/dapp-kit"; +import { Box, Button, Card, Container, DataList, Flex, Text } from "@radix-ui/themes"; +import { pool, Sui, nUSDC } from 'navi-sdk/dist/address' +import { getLatestProtocolPackageId } from 'navi-sdk/dist/libs/PoolInfo' +import { NAVISDKClient } from "navi-sdk/dist/naviSDK"; +import { useEffect, useState } from "react"; +import { Transaction } from "@mysten/sui/transactions"; +import { depositCoin, borrowCoin, repayDebt } from 'navi-sdk/dist/libs/PTB' +import { Pool, PoolConfig } from "navi-sdk/dist/types"; +import { addZero, getCurrentTime } from "./utils"; + +export function PtbBlock() { + const [realtimeData, setRealtimeData] = useState<{[key: string]: any}[]>() + const [digest, setDigest] = useState('') + + const naviClient = new NAVISDKClient({ networkType: 'mainnet' }); + const account = useCurrentAccount(); + + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + + const getNaviPackageId = async () => { + const id = await getLatestProtocolPackageId() + console.log(id) + } + + const getRealTimeData = async () => { + const res = await Promise.all([naviClient.getPoolInfo(nUSDC), naviClient.getPoolInfo(Sui)]) + setRealtimeData(res) + } + + // usdc精度为6 + const getCurrentDateAmount = () => { + const { + month, + date, + hour, + } = getCurrentTime() + // [月][天][小时] 5位 + return parseInt(`${addZero(month)}${addZero(date)}${addZero(hour)}`) + + } + const startPtb =async () => { + if (!account) { + return + } + const tx = new Transaction(); + + // 存入 1 Sui + // 获取sui池子配置 + const suiAmount = 1000000000 + const suiPoolConfig: PoolConfig = pool[Sui.symbol as keyof Pool]; + const suiCoin = tx.splitCoins(tx.gas, [suiAmount]) + await depositCoin(tx, suiPoolConfig, suiCoin, suiAmount) + console.log('存入Sui:', suiAmount) + + // 借出当前时间的nUSDC + const nUSDCPoolConfig: PoolConfig = pool[nUSDC.symbol as keyof Pool]; + // 借出nUSDC的数量 0.[月][天][小时] + const nUSDCAmount = getCurrentDateAmount() + const [borrowBalance] = await borrowCoin(tx, nUSDCPoolConfig, nUSDCAmount) + console.log('借出 nUSDC:', nUSDCAmount) + + // 归还nUSDC + await repayDebt(tx, nUSDCPoolConfig, borrowBalance, nUSDCAmount) + console.log('归还 nUSDC:', nUSDCAmount) + + // 执行ptb + signAndExecuteTransaction( + { + transaction: tx, + }, + { + onSuccess: (result) => { + console.log('executed transaction', result); + setDigest(result.digest); + }, + onError: (error) => { + console.error(error.message) + } + } + ) + } + + useEffect(() => { + getNaviPackageId() + + getRealTimeData() + // setInterval(() => { + // getRealTimeData() + // }, 10000) + }, []) + return ( + + {account ? ( + + 钱包已连接 + Address: {account.address} + + ) : ( + 钱包未连接 + )} +
+ +
{digest}
+
+ + { + realtimeData?.map((data, realtimeKey) => ( + + + + { + data && Object.keys(data).map(key => { + if (key !== 'rewardTokenAddress' && key !== 'coin_type') { + return ( + + { key } + + { data[key] } + + + ) + } + }) + } + + + + )) + } + + +
+ ); +} diff --git a/mover/klren0312/code/sdk_ptb_navi/src/assets/index.css b/mover/klren0312/code/sdk_ptb_navi/src/assets/index.css new file mode 100644 index 000000000..d6008a169 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/assets/index.css @@ -0,0 +1,7 @@ +.ctrl-block { + width: 100%; + margin: 10px 0; + display: flex; + flex-direction: column; + justify-content: center; +} diff --git a/mover/klren0312/code/sdk_ptb_navi/src/main.tsx b/mover/klren0312/code/sdk_ptb_navi/src/main.tsx new file mode 100644 index 000000000..8ba065e1a --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/main.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "@mysten/dapp-kit/dist/index.css"; +import "@radix-ui/themes/styles.css"; +import "./assets/index.css"; +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Theme } from "@radix-ui/themes"; +import App from "./App.tsx"; +import { networkConfig } from "./networkConfig.ts"; + +const queryClient = new QueryClient(); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + + + + + + , +); diff --git a/mover/klren0312/code/sdk_ptb_navi/src/networkConfig.ts b/mover/klren0312/code/sdk_ptb_navi/src/networkConfig.ts new file mode 100644 index 000000000..96de92158 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/networkConfig.ts @@ -0,0 +1,17 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + }, + testnet: { + url: getFullnodeUrl("testnet"), + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/mover/klren0312/code/sdk_ptb_navi/src/utils/index.ts b/mover/klren0312/code/sdk_ptb_navi/src/utils/index.ts new file mode 100644 index 000000000..b22fb34dc --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/utils/index.ts @@ -0,0 +1,25 @@ +export const addZero = (v: number) => { + if (v < 10) { + return '0' + v + } else { + return '' + v + } +} + +export const getCurrentTime = () => { + const myDate=new Date(); + const year = myDate.getFullYear(); + const month = myDate.getMonth()+1; + const date = myDate.getDate(); + const hour = myDate.getHours(); + const min = myDate.getMinutes(); + const second = myDate.getSeconds(); + return { + year, + month, + date, + hour, + min, + second + } +} diff --git a/mover/klren0312/code/sdk_ptb_navi/src/vite-env.d.ts b/mover/klren0312/code/sdk_ptb_navi/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mover/klren0312/code/sdk_ptb_navi/tsconfig.json b/mover/klren0312/code/sdk_ptb_navi/tsconfig.json new file mode 100644 index 000000000..a7fc6fbf2 --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/mover/klren0312/code/sdk_ptb_navi/tsconfig.node.json b/mover/klren0312/code/sdk_ptb_navi/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/mover/klren0312/code/sdk_ptb_navi/vite.config.ts b/mover/klren0312/code/sdk_ptb_navi/vite.config.ts new file mode 100644 index 000000000..b968cbc4d --- /dev/null +++ b/mover/klren0312/code/sdk_ptb_navi/vite.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import basicSsl from '@vitejs/plugin-basic-ssl' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), basicSsl()], + server: { + host: '0.0.0.0', + }, +}); diff --git a/mover/klren0312/images/07checkin/call.png b/mover/klren0312/images/07checkin/call.png new file mode 100644 index 000000000..4d708edcf Binary files /dev/null and b/mover/klren0312/images/07checkin/call.png differ diff --git a/mover/klren0312/readme.md b/mover/klren0312/readme.md index b31b01580..0f3f6dab9 100644 --- a/mover/klren0312/readme.md +++ b/mover/klren0312/readme.md @@ -31,22 +31,22 @@ - [x] scan上的NFT截图:![Scan截图](./images/03movenft/scan上的NFT截图.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id: [0x413e80e5c694ee898cdb34ba412365702f2d7b5d5f2d0f3c6ccc40f89bdbb066](https://suiscan.xyz/mainnet/object/0x413e80e5c694ee898cdb34ba412365702f2d7b5d5f2d0f3c6ccc40f89bdbb066) +- [x] deposit Coin hash: [F8SrvkmhmXoCozCJdMCEeLVpco9WRLv4Nc7P8JBwsJk1](https://suiscan.xyz/mainnet/tx/F8SrvkmhmXoCozCJdMCEeLVpco9WRLv4Nc7P8JBwsJk1) +- [x] withdraw `Coin` hash: [2kcQf8D3KaDqdwU6rgBpddVuGA7E1ccvfM14XmqubzFd](https://suiscan.xyz/mainnet/tx/2kcQf8D3KaDqdwU6rgBpddVuGA7E1ccvfM14XmqubzFd) +- [x] play game hash: [JALk1BLnrTyTAV71cDZ3Be2AJPqaJYZ1WM47yT4ux4PQ](https://suiscan.xyz/mainnet/tx/JALk1BLnrTyTAV71cDZ3Be2AJPqaJYZ1WM47yT4ux4PQ) ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [x] swap package id : [0x2aabda497a78029660d83c04d26b294dbc66acc56873ff1e22302c9a98bb927a](https://suiscan.xyz/mainnet/object/0x2aabda497a78029660d83c04d26b294dbc66acc56873ff1e22302c9a98bb927a) +- [x] call swap CoinA-> CoinB hash : [DB6Wy9Ba4xoUVjSnPqAm7HSJahmtiVSLyhVJH9zR8zEc](https://suiscan.xyz/mainnet/tx/DB6Wy9Ba4xoUVjSnPqAm7HSJahmtiVSLyhVJH9zR8zEc) +- [x] call swap CoinB-> CoinA hash : [Gattj5oWZMaYggjc7vke8rUdTi9SaMMsmC1xdV9hQ9dW](https://suiscan.xyz/mainnet/tx/Gattj5oWZMaYggjc7vke8rUdTi9SaMMsmC1xdV9hQ9dW) ## 06 Dapp-kit SDK PTB -- [] save hash : +- [x] save hash : [7LaCsFnPva62KDDSECgFFgFXYsrvEAzc8jEFY2sFkEX5](https://suiscan.xyz/mainnet/tx/7LaCsFnPva62KDDSECgFFgFXYsrvEAzc8jEFY2sFkEX5) ## 07 Move CTF Check In -- [] CLI call 截图 : ![截图](./images/你的图片地址) -- [] flag hash : +- [x] CLI call 截图 : ![截图](./images/07checkin/call.png) +- [x] flag hash : [5WVoCoD1RoWnXo8Z17r1QR8WjrjCfTcqpBnKSqn8i29D](https://suiscan.xyz/mainnet/tx/5WVoCoD1RoWnXo8Z17r1QR8WjrjCfTcqpBnKSqn8i29D) ## 08 Move CTF Lets Move - [] proof : diff --git a/mover/krypton/co-learn-2411/images/01learn.png b/mover/krypton/co-learn-2411/images/01learn.png new file mode 100644 index 000000000..73ddd3404 Binary files /dev/null and b/mover/krypton/co-learn-2411/images/01learn.png differ diff --git a/mover/krypton/co-learn-2411/images/01zhibo.png b/mover/krypton/co-learn-2411/images/01zhibo.png new file mode 100644 index 000000000..aed5cbb49 Binary files /dev/null and b/mover/krypton/co-learn-2411/images/01zhibo.png differ diff --git a/mover/krypton/co-learn-2411/images/02learn.png b/mover/krypton/co-learn-2411/images/02learn.png new file mode 100644 index 000000000..e2645234f Binary files /dev/null and b/mover/krypton/co-learn-2411/images/02learn.png differ diff --git a/mover/krypton/co-learn-2411/images/02zhibo.png b/mover/krypton/co-learn-2411/images/02zhibo.png new file mode 100644 index 000000000..472af88fd Binary files /dev/null and b/mover/krypton/co-learn-2411/images/02zhibo.png differ diff --git a/mover/krypton/co-learn-2411/images/bilibili.png b/mover/krypton/co-learn-2411/images/bilibili.png new file mode 100644 index 000000000..e79f5841c Binary files /dev/null and b/mover/krypton/co-learn-2411/images/bilibili.png differ diff --git a/mover/krypton/co-learn-2411/images/github1.png b/mover/krypton/co-learn-2411/images/github1.png new file mode 100644 index 000000000..f9002c4f5 Binary files /dev/null and b/mover/krypton/co-learn-2411/images/github1.png differ diff --git a/mover/krypton/co-learn-2411/images/github2.png b/mover/krypton/co-learn-2411/images/github2.png new file mode 100644 index 000000000..ca4eb4e45 Binary files /dev/null and b/mover/krypton/co-learn-2411/images/github2.png differ diff --git a/mover/krypton/co-learn-2411/images/readme.md b/mover/krypton/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/krypton/co-learn-2411/images/wechat.png b/mover/krypton/co-learn-2411/images/wechat.png new file mode 100644 index 000000000..d7c283dbf Binary files /dev/null and b/mover/krypton/co-learn-2411/images/wechat.png differ diff --git a/mover/krypton/co-learn-2411/project/readme.md b/mover/krypton/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/krypton/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/krypton/co-learn-2411/readme.md b/mover/krypton/co-learn-2411/readme.md new file mode 100644 index 000000000..773d89278 --- /dev/null +++ b/mover/krypton/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [X] b站,推特关注截图: ![关注截图](./images/bilibili.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [X] 宣传截图:![宣传截图](./images/wechat.png) + +## 每周课程学习 + +- [X] 第一周:![学习记录截图](./images/01learn.png) +- [x] 第二周:![学习记录截图](./images/02learn.png) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [X] 第一周:![学习记录截图](./images/01zhibo.png) +- [x] 第二周:![学习记录截图](./images/02zhibo.png) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [x] 第一篇笔记(https://learnblockchain.cn/article/9924) +- [x] 第二篇笔记(https://learnblockchain.cn/article/9965) +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [x] 第一篇笔记[学习笔记链接](https://learnblockchain.cn/article/9827) +- [x] 第二篇笔记[学习笔记链接](https://learnblockchain.cn/article/9924) +- [x] 第三篇笔记[学习笔记链接](https://learnblockchain.cn/article/9965) +- [] 第四篇笔记[学习笔记链接] + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记[公众号文章链接] +- [] 第二篇笔记[公众号文章链接] +- [] 第三篇笔记[公众号文章链接] +- [] 第四篇笔记[公众号文章链接] + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/krypton/code/readme.md b/mover/krypton/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/krypton/code/task1/hello_move/Move.lock b/mover/krypton/code/task1/hello_move/Move.lock new file mode 100644 index 000000000..a2c85ef52 --- /dev/null +++ b/mover/krypton/code/task1/hello_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "15C92DB7143AE506431E8FE14625189CE312456B12D01A47D7711D0BFBD6A124" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x96f25a337f1fc39433059e81834f9721293b8fad906f5019ff6e7efc06f72c31" +latest-published-id = "0x96f25a337f1fc39433059e81834f9721293b8fad906f5019ff6e7efc06f72c31" +published-version = "1" diff --git a/mover/krypton/code/task1/hello_move/Move.toml b/mover/krypton/code/task1/hello_move/Move.toml new file mode 100644 index 000000000..2fd3b0f2a --- /dev/null +++ b/mover/krypton/code/task1/hello_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hello_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hello_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/krypton/code/task1/hello_move/sources/hello_move.move b/mover/krypton/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..0bfa29f3b --- /dev/null +++ b/mover/krypton/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,19 @@ +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext, sender}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"krypton"), + }; + transfer(hello_move, sender(ctx)); +} \ No newline at end of file diff --git a/mover/krypton/code/task1/hello_move/tests/hello_move_tests.move b/mover/krypton/code/task1/hello_move/tests/hello_move_tests.move new file mode 100644 index 000000000..7798d8dda --- /dev/null +++ b/mover/krypton/code/task1/hello_move/tests/hello_move_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hello_move::hello_move_tests; +// uncomment this line to import the module +// use hello_move::hello_move; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hello_move() { + // pass +} + +#[test, expected_failure(abort_code = ::hello_move::hello_move_tests::ENotImplemented)] +fun test_hello_move_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/krypton/code/task3/krypton_nft/Move.lock b/mover/krypton/code/task3/krypton_nft/Move.lock new file mode 100644 index 000000000..cbb299a2c --- /dev/null +++ b/mover/krypton/code/task3/krypton_nft/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "A4FE5925AD51ABA6C4C0E33157834BFC87DB60AAF5EF7BC9F85DC823752FD904" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x7f6319d4738cf7ae30c925bded7131c46763bc256724e2a40118795787a787ef" +latest-published-id = "0x7f6319d4738cf7ae30c925bded7131c46763bc256724e2a40118795787a787ef" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xea7b1c3aee1d00449f3612f493832de21a55b96d9c73627377eb5fb7c7c26774" +latest-published-id = "0xea7b1c3aee1d00449f3612f493832de21a55b96d9c73627377eb5fb7c7c26774" +published-version = "1" diff --git a/mover/krypton/code/task3/krypton_nft/Move.toml b/mover/krypton/code/task3/krypton_nft/Move.toml new file mode 100644 index 000000000..3c65e0e49 --- /dev/null +++ b/mover/krypton/code/task3/krypton_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "krypton_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +krypton_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/krypton/code/task3/krypton_nft/sources/krypton_nft.move b/mover/krypton/code/task3/krypton_nft/sources/krypton_nft.move new file mode 100644 index 000000000..3cac5bc76 --- /dev/null +++ b/mover/krypton/code/task3/krypton_nft/sources/krypton_nft.move @@ -0,0 +1,45 @@ +module krypton_nft::krypton_nft; + +use std::string; +use std::string::String; +use sui::transfer::transfer; +use sui::tx_context::sender; +use sui::object::UID; // 引入 UID 类型 + +// MyNFT 结构体,包含 creator 字段 +public struct MyNFT has key { + id: UID, + name: String, + image_url: String, + creator: address, // 添加 creator 字段,用于存储创建者地址 +} + +// 初始化功能:创建并转移 NFT 到发送者 +fun init(ctx: &mut TxContext) { + let my_nft = MyNFT { + id: object::new(ctx), + name: string::utf8(b"Kry NFT"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/154910746?v=4"), + creator: ctx.sender(), // 设置 creator 字段 + }; + transfer(my_nft, sender(ctx)); +} + +// 铸造 NFT 并转移给发送者 +public entry fun mint(url: String, ctx: &mut TxContext) { + let my_nft = MyNFT { + id: object::new(ctx), + name: string::utf8(b"Kry NFT"), + image_url: url, + creator: ctx.sender(), // 设置 creator 字段 + }; + transfer(my_nft, sender(ctx)); +} + +// 转移 NFT 到另一个地址 +public entry fun transfer_nft(nft: MyNFT, to_address: address, ctx: &mut TxContext) { + // 确保转移 NFT 的地址与发送者一致 + assert!(nft.creator == sender(ctx)); + + transfer(nft, to_address); // 将 NFT 转移到目标地址 +} diff --git a/mover/krypton/code/task3/krypton_nft/tests/krypton_nft_tests.move b/mover/krypton/code/task3/krypton_nft/tests/krypton_nft_tests.move new file mode 100644 index 000000000..f16189bd3 --- /dev/null +++ b/mover/krypton/code/task3/krypton_nft/tests/krypton_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module krypton_nft::krypton_nft_tests; +// uncomment this line to import the module +// use krypton_nft::krypton_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_krypton_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::krypton_nft::krypton_nft_tests::ENotImplemented)] +fun test_krypton_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/krypton/images/K.png b/mover/krypton/images/K.png new file mode 100644 index 000000000..366543be8 Binary files /dev/null and b/mover/krypton/images/K.png differ diff --git a/mover/krypton/images/NFT.png b/mover/krypton/images/NFT.png new file mode 100644 index 000000000..a0f03ba22 Binary files /dev/null and b/mover/krypton/images/NFT.png differ diff --git a/mover/krypton/images/l.png b/mover/krypton/images/l.png new file mode 100644 index 000000000..17635ea83 Binary files /dev/null and b/mover/krypton/images/l.png differ diff --git a/mover/krypton/notes/02.md b/mover/krypton/notes/02.md new file mode 100644 index 000000000..c20c12d69 --- /dev/null +++ b/mover/krypton/notes/02.md @@ -0,0 +1 @@ +

登链社区

基础数据类型

move 无小数无负数

  • 定义变量:let <变量名>:<类型> =<变量值> 赋值后无法修改 eg:let a :u8 = 1;
  • 另一种写法:let <变量名> =<变量值><类型>eg:let b = 10u16;
  • 定义一个可变变量:let mut <变量名>:<类型> =<变量值>
  • 使用 a/b 表示小数 类型相同才能运算eg:let c= a/(b as u8); ->c=0.1
  • 布尔型: let d : boot = true or false;
  • 地址型: let addr: address = @0x1;

image-20240930222847819.png

方法的定义

image-20240930222847819.png

image-20240930222847819.png

基础语法

  • 循环

image-20240930222847819.png

  • 条件 if , break ,continue

image-20240930222847819.png

image-20240930222847819.png

image-20240930222847819.png

  • loop 与while等价

image-20240930222847819.png


登链社区是一个 Web3 开发者社区,通过构建高质量技术内容平台和线下空间,助力开发者成为更好的 Web3 Builder。

登链社区

  • 登链社区网站 : learnblockchain.cn
  • 开发者技能认证 : decert.me
  • B站 : space.bilibili.com/581611011
  • YouTube : www.youtube.com/@upchain

登链社区

\ No newline at end of file diff --git a/mover/krypton/notes/readme.md b/mover/krypton/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/krypton/notes/task1.md b/mover/krypton/notes/task1.md new file mode 100644 index 000000000..a31390551 --- /dev/null +++ b/mover/krypton/notes/task1.md @@ -0,0 +1 @@ +

登链社区

choco install sui 用chocolatey安装sui环境
创建项目 sui move new hello_move

查看地址 sui client addresses

领取testgas sui client faucet

发布上链 sui client publish

  • sui client publish报错解决方法
报错:
Failed to build Move modules: Failed to resolve dependencies for package 'hellomove'

Caused by:
    0: Fetching 'Sui'
    1: Failed to reset to latest Git state 'framework/testnet' for package 'Sui', to skip set --skip-fetch-latest-git-deps | Exit status: exit code: 128.

方法是跳过 运行sui move build --skip-fetch-latest-git-deps 或者换系统,因为windows就是可能会连接不上github
Overall 一定要好好看报错 很感谢社区里的前辈们细心解答我的问题

24/11/10 0.19


登链社区是一个 Web3 开发者社区,通过构建高质量技术内容平台和线下空间,助力开发者成为更好的 Web3 Builder。

登链社区

  • 登链社区网站 : learnblockchain.cn
  • 开发者技能认证 : decert.me
  • B站 : space.bilibili.com/581611011
  • YouTube : www.youtube.com/@upchain

登链社区

\ No newline at end of file diff --git a/mover/krypton/notes/task3.md b/mover/krypton/notes/task3.md new file mode 100644 index 000000000..b6f9dcb2b --- /dev/null +++ b/mover/krypton/notes/task3.md @@ -0,0 +1 @@ +

登链社区

需求

  • 完成 NFT相关知识的学习
  • 完成可以mint NFT的合约上链
  • 给自己地址mint一个NFT
  • NFT必须是自己 github 的头像作为图片
  • mint 一个 nft 发送到地址: 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2
  • 提交mint到自己地址的浏览器查看(Scan)截图

1. 三个主要功能

  • ' MyNFT ' : 定义NFT结构体,有key功能(对象可以全局存储
  • ' mint ' : 铸造 NFT 并转移给发送者
  • ' transfer_nft ' : 转移 NFT 到另一个地址

2.初始化函数

2.1 给NFT赋值

2.2 将NFT转移至生成者地址

fun init(ctx: &mut TxContext) {
    let my_nft = MyNFT {
        id: object::new(ctx),
        name: string::utf8(b"Kry NFT"),
        image_url: string::utf8(b"<url>"),
        creator: ctx.sender(), 
    };
    transfer(my_nft, sender(ctx));
}

3.合约交互

3.1合约部署

‘sui client publish ’将程序部署上链

3.2运行transfer_nft

‘ sui client call --gas-budget <flag> --package <package id> --module <module id> --function transfer_nft --args <NFT id> <recipient id>’将指定NFT 转移置指定接收者地址

4.完结

感谢hoh社区对小白的帮助


登链社区是一个 Web3 开发者社区,通过构建高质量技术内容平台和线下空间,助力开发者成为更好的 Web3 Builder。

登链社区

  • 登链社区网站 : learnblockchain.cn
  • 开发者技能认证 : decert.me
  • B站 : space.bilibili.com/581611011
  • YouTube : www.youtube.com/@upchain

登链社区

\ No newline at end of file diff --git a/mover/krypton/readme.md b/mover/krypton/readme.md new file mode 100644 index 000000000..93e3e3f44 --- /dev/null +++ b/mover/krypton/readme.md @@ -0,0 +1,54 @@ +## 基本信息 +- Sui钱包地址: `0xddfa241c39ba6085ae6e1d179dce779d88779165d43d1d14a876297bd9eda6a8` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `krypt0n123` + +## 个人简介 +- 工作经验: 0年 +- 技术栈: `c` `python` +> 重要提示 请认真写自己的简介 +- 本科院校大一在读生,主打一个尝鲜 +- 联系方式: tg: `@kiko_kry` + +## 任务 + +## 01 hello move +- [x] Sui cli version: sui 1.37.1-homebrew +- [x] Sui钱包截图: ![Sui钱包截图](./images/K.png) +- [x] package id: 0xf54f02036244432d8462f5122fe8d7141efce900accfe987187caff17130624d +- [X] package id 在 scan上的查看截图:![Scan截图](./images/l.png) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [x] nft package id :0xea7b1c3aee1d00449f3612f493832de21a55b96d9c73627377eb5fb7c7c26774 +- [x] nft object id : 0x3239bd6dc00d8a991bd85a05ffa029773ef0c5c1f3eaaf9cd33e27a32c2731da +- [x] 转账 nft hash:7qpuh7jzWznXTsXyYamqQ4fBohRya1XF4euZdjyAzxYW +- [x] scan上的NFT截图:![Scan截图](./images/NFT.png) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/krypton/scan/readme.md b/mover/krypton/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/krypton/scan/readme.md @@ -0,0 +1 @@ + diff --git a/mover/lianshus/readme.md b/mover/lianshus/readme.md index 19e65be6b..406667b9a 100644 --- a/mover/lianshus/readme.md +++ b/mover/lianshus/readme.md @@ -42,7 +42,7 @@ - [] call swap CoinB-> CoinA hash :6v7PenK9rJyP1TsYUwjfxfmZ9jUU9o3F3czZNZX25SEX ## 06 Dapp-kit SDK PTB -- [] save hash : +- [√] save hash : 2F3JcEb1e6fo2AXQpMZM2Stte4LDMCnzLy6XKC2VWmNb ## 07 Move CTF Check In - [] CLI call 截图 : [alt text](image-2.png) diff --git a/mover/linqining/co-learn-2411/images/live/week1.png b/mover/linqining/co-learn-2411/images/office_hour/week1.png similarity index 100% rename from mover/linqining/co-learn-2411/images/live/week1.png rename to mover/linqining/co-learn-2411/images/office_hour/week1.png diff --git a/mover/linqining/co-learn-2411/images/office_hour/week2.png b/mover/linqining/co-learn-2411/images/office_hour/week2.png new file mode 100644 index 000000000..8cd20b9a4 Binary files /dev/null and b/mover/linqining/co-learn-2411/images/office_hour/week2.png differ diff --git a/mover/linqining/co-learn-2411/images/task/learn_task1/img.png b/mover/linqining/co-learn-2411/images/task/learn_week1/img.png similarity index 100% rename from mover/linqining/co-learn-2411/images/task/learn_task1/img.png rename to mover/linqining/co-learn-2411/images/task/learn_week1/img.png diff --git a/mover/linqining/co-learn-2411/images/task/learn_week2/img.png b/mover/linqining/co-learn-2411/images/task/learn_week2/img.png new file mode 100644 index 000000000..d3f71de42 Binary files /dev/null and b/mover/linqining/co-learn-2411/images/task/learn_week2/img.png differ diff --git a/mover/linqining/co-learn-2411/readme.md b/mover/linqining/co-learn-2411/readme.md index 11f81f2bc..106ab29f9 100644 --- a/mover/linqining/co-learn-2411/readme.md +++ b/mover/linqining/co-learn-2411/readme.md @@ -15,15 +15,15 @@ ## 每周课程学习 -- [x] 第一周:![学习记录截图](./images/task/learn_task1/img.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](images/task/learn_week1/img.png) +- [x] 第二周:![学习记录截图](./images/task/learn_week2/img.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 -- [x] 第一周:![学习记录截图](./images/live/week1.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第一周:![学习记录截图](images/office_hour/week1.png) +- [x] 第二周:![学习记录截图](./images/office_hour/week2.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) diff --git a/mover/linqining/code/task2/faucet_coin/Move.lock b/mover/linqining/code/task2/faucet_coin/Move.lock new file mode 100644 index 000000000..426795c0f --- /dev/null +++ b/mover/linqining/code/task2/faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "F8CFCF256E2F1BB7CD401C27799A09C40777C5C100F0DFA253E86DD7F0D4ED1B" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xf855a34f6870634a444260ec3a7ad5581334849d8388f63d67e703b06428edc4" +latest-published-id = "0xf855a34f6870634a444260ec3a7ad5581334849d8388f63d67e703b06428edc4" +published-version = "1" diff --git a/mover/linqining/code/task2/faucet_coin/Move.toml b/mover/linqining/code/task2/faucet_coin/Move.toml new file mode 100644 index 000000000..ce62a246c --- /dev/null +++ b/mover/linqining/code/task2/faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/linqining/code/task2/faucet_coin/gen.sh b/mover/linqining/code/task2/faucet_coin/gen.sh new file mode 100644 index 000000000..7b244679d --- /dev/null +++ b/mover/linqining/code/task2/faucet_coin/gen.sh @@ -0,0 +1,3 @@ +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0xf855a34f6870634a444260ec3a7ad5581334849d8388f63d67e703b06428edc4::eig::EIG \ +--args 0x500fdab62d80e0e75fd09fe6e9cb463cf017cfb4171e25a70c9f9d387a01d187 10000000000000 0xc1f4704452819f75c258fe3a01e54d6561899e3478f818625ee8be716fbdd007 --gas-budget 3000000 \ No newline at end of file diff --git a/mover/linqining/code/task2/faucet_coin/sources/faucet_coin.move b/mover/linqining/code/task2/faucet_coin/sources/faucet_coin.move new file mode 100644 index 000000000..9ce68238a --- /dev/null +++ b/mover/linqining/code/task2/faucet_coin/sources/faucet_coin.move @@ -0,0 +1,15 @@ +module faucet_coin::eig; +use std::option::none; +use sui::coin::create_currency; +use sui::transfer::{public_freeze_object, public_share_object}; +use sui::url::Url; + +public struct EIG has drop{} + +fun init(eig:EIG,ctx: &mut TxContext){ + let eig_img = none(); + let (treasury,metadata) = create_currency(eig,8,b"EIG",b"EIG",b"eig coin",eig_img,ctx); + public_freeze_object(metadata); + public_share_object(treasury); +} + diff --git a/mover/linqining/code/task2/faucet_coin/tests/faucet_coin_tests.move b/mover/linqining/code/task2/faucet_coin/tests/faucet_coin_tests.move new file mode 100644 index 000000000..74b01751a --- /dev/null +++ b/mover/linqining/code/task2/faucet_coin/tests/faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucet_coin::faucet_coin_tests; +// uncomment this line to import the module +// use faucet_coin::faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucet_coin::faucet_coin_tests::ENotImplemented)] +fun test_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/linqining/code/task2/my_coin/Move.lock b/mover/linqining/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..e8e853077 --- /dev/null +++ b/mover/linqining/code/task2/my_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0A4652D38CF3C3FDB79EC6C1C98FCFF7B2E933E12B84A1DA267DB28F66AFECE3" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x23728ec5d011eaf7a8bca55811edf283d83a3ffe105b1bfd067ebb16a475cb1d" +latest-published-id = "0x23728ec5d011eaf7a8bca55811edf283d83a3ffe105b1bfd067ebb16a475cb1d" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xff6c887f84778d86304dab92b31fed7ea25fec1bdc783c9f7c9a2bfa0546f4a3" +latest-published-id = "0xff6c887f84778d86304dab92b31fed7ea25fec1bdc783c9f7c9a2bfa0546f4a3" +published-version = "1" diff --git a/mover/linqining/code/task2/my_coin/Move.toml b/mover/linqining/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/linqining/code/task2/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/linqining/code/task2/my_coin/gen.sh b/mover/linqining/code/task2/my_coin/gen.sh new file mode 100644 index 000000000..553c61872 --- /dev/null +++ b/mover/linqining/code/task2/my_coin/gen.sh @@ -0,0 +1,3 @@ +sui client call --package 0x2 --module coin --function mint_and_transfer \ +--type-args 0xff6c887f84778d86304dab92b31fed7ea25fec1bdc783c9f7c9a2bfa0546f4a3::usd::USD \ +--args 0x3e29fd3385f060829514eba6e0aabcdca7e7de0c6b689f4a25a5484b9fa86a0c 10000000000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 --gas-budget 3000000 \ No newline at end of file diff --git a/mover/linqining/code/task2/my_coin/sources/my_coin.move b/mover/linqining/code/task2/my_coin/sources/my_coin.move new file mode 100644 index 000000000..67beb012b --- /dev/null +++ b/mover/linqining/code/task2/my_coin/sources/my_coin.move @@ -0,0 +1,14 @@ +module my_coin::usd; +use std::option::none; +use sui::coin::create_currency; +use sui::transfer::{public_freeze_object, public_transfer}; +use sui::url::Url; + +public struct USD has drop{} + +fun init(usd:USD,ctx: &mut TxContext){ + let usd_img = none(); + let (treasury,metadata) = create_currency(usd,8,b"USD",b"USD",b"world currency",usd_img,ctx); + public_freeze_object(metadata); + public_transfer(treasury,ctx.sender()); +} diff --git a/mover/linqining/code/task2/my_coin/tests/my_coin_tests.move b/mover/linqining/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/linqining/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/linqining/code/task3/display_nft/Move.lock b/mover/linqining/code/task3/display_nft/Move.lock new file mode 100644 index 000000000..4a8817084 --- /dev/null +++ b/mover/linqining/code/task3/display_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "6B7A8AED2C1EF029F8D2281D36C6E8AADD6050481843FF50F3E1DB6F5CE02FC4" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x08e4c88ca1eb4233b4ea72e3b762d94ae48e3fd6e73939a7244fd31b2ade8db9" +latest-published-id = "0x08e4c88ca1eb4233b4ea72e3b762d94ae48e3fd6e73939a7244fd31b2ade8db9" +published-version = "1" diff --git a/mover/linqining/code/task3/display_nft/Move.toml b/mover/linqining/code/task3/display_nft/Move.toml new file mode 100644 index 000000000..7ab1e284d --- /dev/null +++ b/mover/linqining/code/task3/display_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "display_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +display_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/linqining/code/task3/display_nft/sources/display_nft.move b/mover/linqining/code/task3/display_nft/sources/display_nft.move new file mode 100644 index 000000000..b029d9fda --- /dev/null +++ b/mover/linqining/code/task3/display_nft/sources/display_nft.move @@ -0,0 +1,70 @@ +module display_nft::display_nft; +use std::string::String; +use std::string; +use sui::package; +use sui::display; + +public struct MyNFT has key,store{ + id: UID, + name:String, + image_url:String, +} + +public struct DISPLAY_NFT has drop{ + +} + +fun init(otw:DISPLAY_NFT,ctx:&mut TxContext){ + + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"https://sui-heroes.io/hero/{id}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"A true Hero of the Sui ecosystem!".to_string(), + // Project URL is usually static + b"https://sui-heroes.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `Hero` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + transfer::public_transfer(publisher,ctx.sender()); + transfer::public_transfer(display,ctx.sender()); + + let my_nft = MyNFT{ + id: object::new(ctx), + name:string::utf8(b"linqining"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/18323181?s=400&u=1a7a274db375e0ffe9f303939d3283c5cedc1e25&v=4"), + }; + transfer::public_transfer(my_nft,ctx.sender()) +} + +public entry fun mint(url:String,ctx:&mut TxContext){ + let my_nft = MyNFT{ + id: object::new(ctx), + name:string::utf8(b"linqining"), + image_url: url, + }; + transfer::public_transfer(my_nft,ctx.sender()); +} \ No newline at end of file diff --git a/mover/linqining/code/task3/display_nft/tests/display_nft_tests.move b/mover/linqining/code/task3/display_nft/tests/display_nft_tests.move new file mode 100644 index 000000000..8bb8a300a --- /dev/null +++ b/mover/linqining/code/task3/display_nft/tests/display_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module display_nft::display_nft_tests; +// uncomment this line to import the module +// use display_nft::display_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_display_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::display_nft::display_nft_tests::ENotImplemented)] +fun test_display_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/linqining/code/task3/nft/Move.lock b/mover/linqining/code/task3/nft/Move.lock new file mode 100644 index 000000000..dd986e72f --- /dev/null +++ b/mover/linqining/code/task3/nft/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "9D4FCF5807A34E3110DFBA44AD92FEFEC55EE3DE8CF58F3D302F55D3004E70D1" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x34caeefe0d3b271ec280a386a37090cae86a35b5caadb9ed1b19c42698e2a92c" +latest-published-id = "0x34caeefe0d3b271ec280a386a37090cae86a35b5caadb9ed1b19c42698e2a92c" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xd274bf8a1ad63e7969ac9f653c2017c684e3a3762dff2bd48d7c5b7796a4263a" +latest-published-id = "0xd274bf8a1ad63e7969ac9f653c2017c684e3a3762dff2bd48d7c5b7796a4263a" +published-version = "1" diff --git a/mover/linqining/code/task3/nft/Move.toml b/mover/linqining/code/task3/nft/Move.toml new file mode 100644 index 000000000..504c662e4 --- /dev/null +++ b/mover/linqining/code/task3/nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/linqining/code/task3/nft/sources/nft.move b/mover/linqining/code/task3/nft/sources/nft.move new file mode 100644 index 000000000..e17dd30c0 --- /dev/null +++ b/mover/linqining/code/task3/nft/sources/nft.move @@ -0,0 +1,67 @@ +module nft::mynft; +use std::string::String; +use std::string; +use sui::transfer::transfer; + +public struct MyNFT has key{ + id: UID, + name:String, + image_url:String, +} + +public struct DisplayNft has drop{ + +} + +fun init(otw:DisplayNft,ctx:&mut TxContext){ + let my_nft = MyNFT{ + id: object::new(ctx), + name:string::utf8(b"linqining"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/18323181?s=400&u=1a7a274db375e0ffe9f303939d3283c5cedc1e25&v=4"), + }; + transfer(my_nft,ctx.sender()); +} + +public entry fun mint(url:String,ctx:&mut TxContext){ + let my_nft = MyNFT{ + id: object::new(ctx), + name:string::utf8(b"linqining"), + image_url: url, + }; + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"https://sui-heroes.io/hero/{id}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"ipfs://{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"A true Hero of the Sui ecosystem!".to_string(), + // Project URL is usually static + b"https://sui-heroes.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `Hero` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(&display); + transfer(my_nft,ctx.sender()); + transfer(display,ctx.sender()); +} \ No newline at end of file diff --git a/mover/linqining/code/task3/nft/tests/nft_tests.move b/mover/linqining/code/task3/nft/tests/nft_tests.move new file mode 100644 index 000000000..3c9c56a93 --- /dev/null +++ b/mover/linqining/code/task3/nft/tests/nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module nft::nft_tests; +// uncomment this line to import the module +// use nft::nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::nft::nft_tests::ENotImplemented)] +fun test_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/linqining/images/nft_mint.png b/mover/linqining/images/nft_mint.png new file mode 100644 index 000000000..4c09dbed2 Binary files /dev/null and b/mover/linqining/images/nft_mint.png differ diff --git a/mover/linqining/readme.md b/mover/linqining/readme.md index e1b1e7872..0e3b4c62d 100644 --- a/mover/linqining/readme.md +++ b/mover/linqining/readme.md @@ -16,23 +16,24 @@ ## 任务 ## 01 hello move -- [✓] Sui cli version: sui 1.37.1-homebrew -- [✓] Sui钱包截图: ![Sui钱包截图](./images/IMG_3635.PNG) -- [✓] package id: 0x2fee616afb84d0252eddbcd75c7b5b5bebade95ba2683e3f2600d6437f7b74e2 -- [✓] package id 在 scan上的查看截图:![Scan截图](./images/img.png) +- [x] Sui cli version: sui 1.37.1-homebrew +- [x] Sui钱包截图: ![Sui钱包截图](./images/IMG_3635.PNG) +- [x] package id: 0x2fee616afb84d0252eddbcd75c7b5b5bebade95ba2683e3f2600d6437f7b74e2 +- [x] package id 在 scan上的查看截图:![Scan截图](./images/img.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0xff6c887f84778d86304dab92b31fed7ea25fec1bdc783c9f7c9a2bfa0546f4a3 +- [x] Faucet package id : 0xf855a34f6870634a444260ec3a7ad5581334849d8388f63d67e703b06428edc4 +- [x] 转账 `My Coin` hash: zMbWbMhgKgaWxJBwYswUJpqHR4ZmUCVu8856P2jjz2p +- [x] `Faucet Coin` address1(0x7caaf3d123266f92398b3b642682133098afa7017b3a74b7fd0442d0368ae595) mint hash: 5XY6xTNBYmSYN4zGGf7WRUV3pB7Q4Tn8fm1WFjqktQZc +- [x] `Faucet Coin` address2(0xc1f4704452819f75c258fe3a01e54d6561899e3478f818625ee8be716fbdd007) mint hash: HYr5URs9WbfP4sEUxQJtbfPg16U33XCmNnGwv7MPyVVM ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id : 0x08e4c88ca1eb4233b4ea72e3b762d94ae48e3fd6e73939a7244fd31b2ade8db9 +- [x] nft object id : 0x2f7c23c9e1e90dde2164fd15bdded9e8d43e6f19e81822883a3beb93f4495899 +- [x] 转账 nft hash: PmWjBzc9RfS8UnQ14URBZKktEptWv4r1x3FN8dUCDqt +- [x] scan上的NFT截图:![Scan截图](./images/nft_mint.png) + ## 04 Move Game - [] game package id : diff --git a/mover/lizhecome/co-learn-2411/images/week3_learning.png b/mover/lizhecome/co-learn-2411/images/week3_learning.png new file mode 100644 index 000000000..89eb07300 Binary files /dev/null and b/mover/lizhecome/co-learn-2411/images/week3_learning.png differ diff --git a/mover/lizhecome/co-learn-2411/images/week3_living_ask.png b/mover/lizhecome/co-learn-2411/images/week3_living_ask.png new file mode 100644 index 000000000..7c949056d Binary files /dev/null and b/mover/lizhecome/co-learn-2411/images/week3_living_ask.png differ diff --git a/mover/lizhecome/co-learn-2411/readme.md b/mover/lizhecome/co-learn-2411/readme.md index bd1a49537..5548e3bd4 100644 --- a/mover/lizhecome/co-learn-2411/readme.md +++ b/mover/lizhecome/co-learn-2411/readme.md @@ -16,32 +16,53 @@ - [x] 第一周:![学习记录截图](./images/task1_learning.png) - [x] 第二周:![学习记录截图](./images/week2_learning.png) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [x] 第三周:![学习记录截图](./images/week3_learning.png) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 - [x] 第一周:![学习记录截图](./images/week1_living_ask.jpg) - [x] 第二周:![学习记录截图](./images/week2_living_qa.png) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [x] 第三周:![学习记录截图](./images/week4_living_ask.png) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 +- [x] 基础学习(一)Windows DOS 命令 - 学习笔记【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/00_01_windows_dos_commands.md)】 +- [x] 基础学习(二)速学150个Linux常用命令 - 学习笔记【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/00_02_150_linux_commands.md)】 +- [x] 基础学习(三)VS Code 零基础学习笔记【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/00_03_vscode_learning.md)】 +- [x] 基础学习(四)Git 入门到精通全套教程 - 学习笔记【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/00_04_git_github_learning.md)】 - [x] (一)初识Move:区块链智能合约语言概览 【[代码库链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/01_new_to_move.md)】 - [x] (二)Move开发环境搭建与工具介绍【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/02_move_dev_env.md)】 - [x] (三)使用Move在Sui上发行Coin快速上手【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/03_move_mint_coin.md)】 - [x] (四)使用Move在Sui上发行第一个NFT【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/04_move_first_nft.md)】 - [x] (五)使用Move语言开发第一个链上游戏【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/05_move_game.md)】 +- [x] (六)Move实现简单的代币swap功能【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/06_move_swap.md)】 +- [x] (七)Move语言基础数据类型【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/07_move_base_types.md)】 +- [x] (八)Move语言的函数【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/08_move_function.md)】 +- [x] (九)Move语言中的能力(Ability)【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/09_move_ability.md)】 +- [x] (十)让Move语言的单元测试跑起来!【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/10_move_unit_test.md)】 +- [x] (十一)Move泛型:从入门到“我真的会了”【[学习笔记链接](https://github.com/move-cn/letsmove/tree/main/mover/lizhecome/notes/11_move_generics.md)】 ## 对外输出学习笔记 +- [x] 基础学习(一)Windows DOS 命令 - 学习笔记【[学习笔记链接](https://zhuanlan.zhihu.com/p/8711813251)】 +- [x] 基础学习(二)速学150个Linux常用命令 - 学习笔记【[学习笔记链接](https://zhuanlan.zhihu.com/p/8712060263)】 +- [x] 基础学习(三)VS Code 零基础学习笔记【[学习笔记链接](https://zhuanlan.zhihu.com/p/8712206795)】 +- [x] 基础学习(四)Git 入门到精通全套教程 - 学习笔记【[学习笔记链接](https://zhuanlan.zhihu.com/p/8712285850)】 +- [x] (一)初识Move:区块链智能合约语言概览【[学习笔记链接](https://learnblockchain.cn/article/9790)】 - [x] (一)初识Move:区块链智能合约语言概览【[学习笔记链接](https://learnblockchain.cn/article/9790)】 - [x] (二)Move开发环境搭建与工具介绍【[学习笔记链接](https://learnblockchain.cn/article/9807)】 - [x] (三)使用Move在Sui上发行Coin快速上手【[学习笔记链接](https://learnblockchain.cn/article/9838)】 - [x] (四)使用Move在Sui上发行第一个NFT【[学习笔记链接](https://learnblockchain.cn/article/9849)】 - [x] (五)使用Move语言开发第一个链上游戏【[学习笔记链接](https://learnblockchain.cn/article/9869)】 +- [x] (六)Move实现简单的代币swap功能【[学习笔记链接](https://learnblockchain.cn/article/9908)】 +- [x] (七)Move语言基础数据类型【[学习笔记链接](https://learnblockchain.cn/article/9935)】 +- [x] (八)Move语言的函数【[学习笔记链接](https://learnblockchain.cn/article/9942)】 +- [x] (九)Move语言中的能力(Ability)【[学习笔记链接](https://learnblockchain.cn/article/9982)】 +- [x] (十)让Move语言的单元测试跑起来!【[学习笔记链接](https://learnblockchain.cn/article/10011)】 +- [x] (十一)Move泛型:从入门到“我真的会了”【[学习笔记链接](https://learnblockchain.cn/article/10019)】 ## 在HOH社区公众号发布自己的技术文章 diff --git a/mover/lizhecome/code/task6/package-lock.json b/mover/lizhecome/code/task6/package-lock.json new file mode 100644 index 000000000..a66c74aff --- /dev/null +++ b/mover/lizhecome/code/task6/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "task6", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/mover/lizhecome/code/task6/ptb_navi/README.md b/mover/lizhecome/code/task6/ptb_navi/README.md new file mode 100644 index 000000000..1d2e227fb --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/README.md @@ -0,0 +1,102 @@ +# Sui dApp Starter Template + +This dApp was created using `@mysten/create-dapp` that sets up a basic React +Client dApp using the following tools: + +- [React](https://react.dev/) as the UI framework +- [TypeScript](https://www.typescriptlang.org/) for type checking +- [Vite](https://vitejs.dev/) for build tooling +- [Radix UI](https://www.radix-ui.com/) for pre-built UI components +- [ESLint](https://eslint.org/) for linting +- [`@mysten/dapp-kit`](https://sdk.mystenlabs.com/dapp-kit) for connecting to + wallets and loading data +- [pnpm](https://pnpm.io/) for package management + +For a full guide on how to build this dApp from scratch, visit this +[guide](http://docs.sui.io/guides/developer/app-examples/e2e-counter#frontend). + +## Deploying your Move code + +### Install Sui cli + +Before deploying your move code, ensure that you have installed the Sui CLI. You +can follow the [Sui installation instruction](https://docs.sui.io/build/install) +to get everything set up. + +This template uses `testnet` by default, so we'll need to set up a testnet +environment in the CLI: + +```bash +sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443 +sui client switch --env testnet +``` + +If you haven't set up an address in the sui client yet, you can use the +following command to get a new address: + +```bash +sui client new-address secp256k1 +``` + +This well generate a new address and recover phrase for you. You can mark a +newly created address as you active address by running the following command +with your new address: + +```bash +sui client switch --address 0xYOUR_ADDRESS... +``` + +We can ensure we have some Sui in our new wallet by requesting Sui from the +faucet (make sure to replace the address with your address): + +```bash +curl --location --request POST 'https://faucet.testnet.sui.io/gas' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "FixedAmountRequest": { + "recipient": "" + } +}' +``` + +### Publishing the move package + +The move code for this template is located in the `move` directory. To publish +it, you can enter the `move` directory, and publish it with the Sui CLI: + +```bash +cd move +sui client publish --gas-budget 100000000 counter +``` + +In the output there will be an object with a `"packageId"` property. You'll want +to save that package ID to the `src/constants.ts` file as `PACKAGE_ID`: + +```ts +export const TESTNET_COUNTER_PACKAGE_ID = ""; +``` + +Now that we have published the move code, and update the package ID, we can +start the app. + +## Starting your dApp + +To install dependencies you can run + +```bash +pnpm install +``` + +To start your dApp in development mode run + +```bash +pnpm dev +``` + +## Building + +To build your app for deployment you can run + +```bash +pnpm build +``` diff --git a/mover/lizhecome/code/task6/ptb_navi/index.html b/mover/lizhecome/code/task6/ptb_navi/index.html new file mode 100644 index 000000000..bb7f75b16 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/index.html @@ -0,0 +1,59 @@ + + + + + + + Sui dApp Starter + + + + +
+ + + diff --git a/mover/lizhecome/code/task6/ptb_navi/move/counter/Move.toml b/mover/lizhecome/code/task6/ptb_navi/move/counter/Move.toml new file mode 100644 index 000000000..94e850382 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/move/counter/Move.toml @@ -0,0 +1,10 @@ +[package] +name = "counter" +version = "0.0.1" +edition = "2024.beta" + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +[addresses] +counter = "0x0" diff --git a/mover/lizhecome/code/task6/ptb_navi/move/counter/sources/counter.move b/mover/lizhecome/code/task6/ptb_navi/move/counter/sources/counter.move new file mode 100644 index 000000000..56e4939ad --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/move/counter/sources/counter.move @@ -0,0 +1,36 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// This example demonstrates a basic use of a shared object. +/// Rules: +/// - anyone can create and share a counter +/// - everyone can increment a counter by 1 +/// - the owner of the counter can reset it to any value +module counter::counter { + /// A shared counter. + public struct Counter has key { + id: UID, + owner: address, + value: u64 + } + + /// Create and share a Counter object. + public fun create(ctx: &mut TxContext) { + transfer::share_object(Counter { + id: object::new(ctx), + owner: ctx.sender(), + value: 0 + }) + } + + /// Increment a counter by 1. + public fun increment(counter: &mut Counter) { + counter.value = counter.value + 1; + } + + /// Set value (only runnable by the Counter owner) + public fun set_value(counter: &mut Counter, value: u64, ctx: &TxContext) { + assert!(counter.owner == ctx.sender(), 0); + counter.value = value; + } +} diff --git a/mover/lizhecome/code/task6/ptb_navi/package-lock.json b/mover/lizhecome/code/task6/ptb_navi/package-lock.json new file mode 100644 index 000000000..58163630a --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/package-lock.json @@ -0,0 +1,5122 @@ +{ + "name": "ptb_navi", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ptb_navi", + "version": "0.0.0", + "dependencies": { + "@mysten/dapp-kit": "0.14.32", + "@mysten/sui": "1.14.3", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-spinners": "^0.14.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^8.45.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@0no-co/graphql.web/-/graphql.web-1.0.11.tgz", + "integrity": "sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==", + "license": "MIT", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.16", + "resolved": "https://registry.npmmirror.com/@0no-co/graphqlsp/-/graphqlsp-1.12.16.tgz", + "integrity": "sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==", + "license": "MIT", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" + }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/@gql.tada/cli-utils/-/cli-utils-1.6.3.tgz", + "integrity": "sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==", + "license": "MIT", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@mysten/bcs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@mysten/bcs/-/bcs-1.1.0.tgz", + "integrity": "sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==", + "license": "Apache-2.0", + "dependencies": { + "bs58": "^6.0.0" + } + }, + "node_modules/@mysten/dapp-kit": { + "version": "0.14.32", + "resolved": "https://registry.npmmirror.com/@mysten/dapp-kit/-/dapp-kit-0.14.32.tgz", + "integrity": "sha512-Ge4lhhqow/Kz9QHOjYQ0JMjPLA/x5wODsX8AnlKVWzS2E0AcBQ/MOL9VIB/q+KrClh650LM3fPezTo/iQx+7TQ==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui": "1.14.3", + "@mysten/wallet-standard": "0.13.12", + "@mysten/zksend": "0.12.0", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-slot": "^1.1.0", + "@vanilla-extract/css": "^1.15.3", + "@vanilla-extract/dynamic": "^2.1.1", + "@vanilla-extract/recipes": "^0.5.3", + "clsx": "^2.1.1", + "zustand": "^4.5.4" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.0.0", + "react": "*" + } + }, + "node_modules/@mysten/sui": { + "version": "1.14.3", + "resolved": "https://registry.npmmirror.com/@mysten/sui/-/sui-1.14.3.tgz", + "integrity": "sha512-5vhOnbSAT/9daMIDPYOp7q9j+6DXqjPAYEJy7ZbR9viBsyAx4UMChCwaLyjoYcJKvhrkDn4LTdDTJEUvpj7TTg==", + "license": "Apache-2.0", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "1.1.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@scure/bip32": "^1.4.0", + "@scure/bip39": "^1.3.0", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.8.2", + "graphql": "^16.9.0", + "tweetnacl": "^1.0.3", + "valibot": "^0.36.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mysten/wallet-standard": { + "version": "0.13.12", + "resolved": "https://registry.npmmirror.com/@mysten/wallet-standard/-/wallet-standard-0.13.12.tgz", + "integrity": "sha512-qFNtgi85Ja4F1dY8MyLIQ+uxzhru+h6TQ6VG2N2AnTutCiFvaQeu2S/akFYeJMfZ0CN/m0v3TNQZN5cxtrLEeg==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui": "1.14.3", + "@wallet-standard/core": "1.0.3" + } + }, + "node_modules/@mysten/zksend": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@mysten/zksend/-/zksend-0.12.0.tgz", + "integrity": "sha512-j1qsD2TZR+mjKf7B/j6Hf00F1KpMN4u7KVL9pqFtRRzDLR4n3u8V09ckX+98qu7+NWvFVDb0oaaOZjQzhrRADw==", + "license": "Apache-2.0", + "dependencies": { + "@mysten/sui": "1.14.3", + "@mysten/wallet-standard": "0.13.12", + "mitt": "^3.0.1", + "nanostores": "^0.10.3", + "valibot": "^0.36.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@radix-ui/colors": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/colors/-/colors-3.0.0.tgz", + "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==", + "license": "MIT" + }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.0.tgz", + "integrity": "sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.2.tgz", + "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dialog": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", + "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", + "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", + "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz", + "integrity": "sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.2.tgz", + "integrity": "sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-icons/-/react-icons-1.3.1.tgz", + "integrity": "sha512-QvYompk0X+8Yjlo/Fv4McrzxohDdM5GgLHyQcPpcsPvlOSXCGFjdbuyGL5dzRbg0GpknAjQJJZzdiRK7iWVuFQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x || ^19.x" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz", + "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popover/-/react-popover-1.1.2.tgz", + "integrity": "sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-progress/-/react-progress-1.1.0.tgz", + "integrity": "sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", + "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.1.tgz", + "integrity": "sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slider/-/react-slider-1.2.1.tgz", + "integrity": "sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", + "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", + "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", + "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", + "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-toggle": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", + "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@radix-ui/themes": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/@radix-ui/themes/-/themes-3.1.6.tgz", + "integrity": "sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==", + "license": "MIT", + "dependencies": { + "@radix-ui/colors": "^3.0.0", + "@radix-ui/primitive": "^1.1.0", + "@radix-ui/react-accessible-icon": "^1.1.0", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-compose-refs": "^1.1.0", + "@radix-ui/react-context": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.2", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-direction": "^1.1.0", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-hover-card": "^1.1.2", + "@radix-ui/react-navigation-menu": "^1.2.1", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-portal": "^1.1.2", + "@radix-ui/react-primitive": "^2.0.0", + "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-radio-group": "^1.2.1", + "@radix-ui/react-roving-focus": "^1.1.0", + "@radix-ui/react-scroll-area": "^1.2.1", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-slider": "^1.2.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.1", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-toggle-group": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.4", + "@radix-ui/react-use-callback-ref": "^1.1.0", + "@radix-ui/react-use-controllable-state": "^1.1.0", + "@radix-ui/react-visually-hidden": "^1.1.0", + "classnames": "^2.3.2", + "react-remove-scroll-bar": "^2.3.6" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.26.0.tgz", + "integrity": "sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.26.0.tgz", + "integrity": "sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz", + "integrity": "sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.26.0.tgz", + "integrity": "sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.26.0.tgz", + "integrity": "sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.26.0.tgz", + "integrity": "sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.26.0.tgz", + "integrity": "sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.26.0.tgz", + "integrity": "sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.26.0.tgz", + "integrity": "sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.26.0.tgz", + "integrity": "sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.26.0.tgz", + "integrity": "sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.26.0.tgz", + "integrity": "sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.26.0.tgz", + "integrity": "sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.26.0.tgz", + "integrity": "sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.26.0.tgz", + "integrity": "sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.26.0.tgz", + "integrity": "sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.26.0.tgz", + "integrity": "sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.26.0.tgz", + "integrity": "sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==", + "license": "MIT" + }, + "node_modules/@swc/core": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.9.2.tgz", + "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.15" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.9.2", + "@swc/core-darwin-x64": "1.9.2", + "@swc/core-linux-arm-gnueabihf": "1.9.2", + "@swc/core-linux-arm64-gnu": "1.9.2", + "@swc/core-linux-arm64-musl": "1.9.2", + "@swc/core-linux-x64-gnu": "1.9.2", + "@swc/core-linux-x64-musl": "1.9.2", + "@swc/core-win32-arm64-msvc": "1.9.2", + "@swc/core-win32-ia32-msvc": "1.9.2", + "@swc/core-win32-x64-msvc": "1.9.2" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz", + "integrity": "sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.15.tgz", + "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.59.20", + "resolved": "https://registry.npmmirror.com/@tanstack/query-core/-/query-core-5.59.20.tgz", + "integrity": "sha512-e8vw0lf7KwfGe1if4uPFhvZRWULqHjFcz3K8AebtieXvnMOz5FSzlZe3mTLlPuUBcydCnBRqYs2YJ5ys68wwLg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.59.20", + "resolved": "https://registry.npmmirror.com/@tanstack/react-query/-/react-query-5.59.20.tgz", + "integrity": "sha512-Zly0egsK0tFdfSbh5/mapSa+Zfc3Et0Zkar7Wo5sQkFzWyB3p3uZWOHR2wrlAEEV2L953eLuDBtbgFvMYiLvUw==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.59.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vanilla-extract/css": { + "version": "1.16.0", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/css/-/css-1.16.0.tgz", + "integrity": "sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@vanilla-extract/private": "^1.0.6", + "css-what": "^6.1.0", + "cssesc": "^3.0.0", + "csstype": "^3.0.7", + "dedent": "^1.5.3", + "deep-object-diff": "^1.1.9", + "deepmerge": "^4.2.2", + "lru-cache": "^10.4.3", + "media-query-parser": "^2.0.2", + "modern-ahocorasick": "^1.0.0", + "picocolors": "^1.0.0" + } + }, + "node_modules/@vanilla-extract/dynamic": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/dynamic/-/dynamic-2.1.2.tgz", + "integrity": "sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==", + "license": "MIT", + "dependencies": { + "@vanilla-extract/private": "^1.0.6" + } + }, + "node_modules/@vanilla-extract/private": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/private/-/private-1.0.6.tgz", + "integrity": "sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==", + "license": "MIT" + }, + "node_modules/@vanilla-extract/recipes": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/recipes/-/recipes-0.5.5.tgz", + "integrity": "sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==", + "license": "MIT", + "peerDependencies": { + "@vanilla-extract/css": "^1.0.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", + "integrity": "sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/core": "^1.7.26" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/@wallet-standard/app": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/app/-/app-1.1.0.tgz", + "integrity": "sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/base": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/base/-/base-1.1.0.tgz", + "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/core": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@wallet-standard/core/-/core-1.0.3.tgz", + "integrity": "sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/app": "^1.0.1", + "@wallet-standard/base": "^1.0.1", + "@wallet-standard/features": "^1.0.3", + "@wallet-standard/wallet": "^1.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/features": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/features/-/features-1.1.0.tgz", + "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/wallet": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/wallet/-/wallet-1.1.0.tgz", + "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==", + "license": "MIT" + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-object-diff": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.14", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", + "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gql.tada": { + "version": "1.8.10", + "resolved": "https://registry.npmmirror.com/gql.tada/-/gql.tada-1.8.10.tgz", + "integrity": "sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==", + "license": "MIT", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.3", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmmirror.com/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/media-query-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/media-query-parser/-/media-query-parser-2.0.2.tgz", + "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/modern-ahocorasick": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz", + "integrity": "sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanostores": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/nanostores/-/nanostores-0.10.3.tgz", + "integrity": "sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmmirror.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-spinners": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/react-spinners/-/react-spinners-0.14.1.tgz", + "integrity": "sha512-2Izq+qgQ08HTofCVEdcAQCXFEYfqTDdfeDQJeo/HHQiQJD4imOicNLhkfN2eh1NYEWVOX4D9ok2lhuDB0z3Aag==", + "license": "MIT", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.26.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.26.0.tgz", + "integrity": "sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.26.0", + "@rollup/rollup-android-arm64": "4.26.0", + "@rollup/rollup-darwin-arm64": "4.26.0", + "@rollup/rollup-darwin-x64": "4.26.0", + "@rollup/rollup-freebsd-arm64": "4.26.0", + "@rollup/rollup-freebsd-x64": "4.26.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.26.0", + "@rollup/rollup-linux-arm-musleabihf": "4.26.0", + "@rollup/rollup-linux-arm64-gnu": "4.26.0", + "@rollup/rollup-linux-arm64-musl": "4.26.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.26.0", + "@rollup/rollup-linux-riscv64-gnu": "4.26.0", + "@rollup/rollup-linux-s390x-gnu": "4.26.0", + "@rollup/rollup-linux-x64-gnu": "4.26.0", + "@rollup/rollup-linux-x64-musl": "4.26.0", + "@rollup/rollup-win32-arm64-msvc": "4.26.0", + "@rollup/rollup-win32-ia32-msvc": "4.26.0", + "@rollup/rollup-win32-x64-msvc": "4.26.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/valibot": { + "version": "0.36.0", + "resolved": "https://registry.npmmirror.com/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.5", + "resolved": "https://registry.npmmirror.com/zustand/-/zustand-4.5.5.tgz", + "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/mover/lizhecome/code/task6/ptb_navi/package.json b/mover/lizhecome/code/task6/ptb_navi/package.json new file mode 100644 index 000000000..553415967 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/package.json @@ -0,0 +1,37 @@ +{ + "name": "ptb_navi", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "0.14.32", + "@mysten/sui": "1.14.3", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "navi-sdk": "^1.3.9", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-spinners": "^0.14.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^8.45.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } +} \ No newline at end of file diff --git a/mover/lizhecome/code/task6/ptb_navi/pnpm-lock.yaml b/mover/lizhecome/code/task6/ptb_navi/pnpm-lock.yaml new file mode 100644 index 000000000..7c27d96d9 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/pnpm-lock.yaml @@ -0,0 +1,4752 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@mysten/dapp-kit': + specifier: 0.14.32 + version: 0.14.32(@tanstack/react-query@5.59.20(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@mysten/sui': + specifier: 1.14.3 + version: 1.14.3(typescript@5.6.3) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.1(react@18.3.1) + '@radix-ui/themes': + specifier: ^3.1.1 + version: 3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.50.1 + version: 5.59.20(react@18.3.1) + navi-sdk: + specifier: ^1.3.9 + version: 1.3.9(@types/node@22.9.0)(typescript@5.6.3) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-spinners: + specifier: ^0.14.1 + version: 0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@types/react': + specifier: ^18.3.3 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.1 + '@typescript-eslint/eslint-plugin': + specifier: ^6.1.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^6.1.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.1(vite@5.4.11(@types/node@22.9.0)) + eslint: + specifier: ^8.45.0 + version: 8.57.1 + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.1) + eslint-plugin-react-refresh: + specifier: ^0.4.7 + version: 0.4.14(eslint@8.57.1) + prettier: + specifier: ^3.3.2 + version: 3.3.3 + typescript: + specifier: ^5.5.3 + version: 5.6.3 + vite: + specifier: ^5.3.3 + version: 5.4.11(@types/node@22.9.0) + +packages: + + '@0no-co/graphql.web@1.0.11': + resolution: {integrity: sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.16': + resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@digitak/grubber@3.1.4': + resolution: {integrity: sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@gql.tada/cli-utils@1.6.3': + resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@mysten/bcs@0.11.1': + resolution: {integrity: sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==} + + '@mysten/bcs@1.1.0': + resolution: {integrity: sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==} + + '@mysten/dapp-kit@0.14.32': + resolution: {integrity: sha512-Ge4lhhqow/Kz9QHOjYQ0JMjPLA/x5wODsX8AnlKVWzS2E0AcBQ/MOL9VIB/q+KrClh650LM3fPezTo/iQx+7TQ==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: '*' + + '@mysten/sui.js@0.54.1': + resolution: {integrity: sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==} + engines: {node: '>=16'} + deprecated: This package has been renamed to @mysten/sui, please update to use the renamed package. + + '@mysten/sui@1.14.3': + resolution: {integrity: sha512-5vhOnbSAT/9daMIDPYOp7q9j+6DXqjPAYEJy7ZbR9viBsyAx4UMChCwaLyjoYcJKvhrkDn4LTdDTJEUvpj7TTg==} + engines: {node: '>=18'} + + '@mysten/wallet-standard@0.13.12': + resolution: {integrity: sha512-qFNtgi85Ja4F1dY8MyLIQ+uxzhru+h6TQ6VG2N2AnTutCiFvaQeu2S/akFYeJMfZ0CN/m0v3TNQZN5cxtrLEeg==} + + '@mysten/zksend@0.12.0': + resolution: {integrity: sha512-j1qsD2TZR+mjKf7B/j6Hf00F1KpMN4u7KVL9pqFtRRzDLR4n3u8V09ckX+98qu7+NWvFVDb0oaaOZjQzhrRADw==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + + '@pythnetwork/price-service-sdk@1.7.1': + resolution: {integrity: sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==} + + '@pythnetwork/pyth-sui-js@2.1.0': + resolution: {integrity: sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-accessible-icon@1.1.0': + resolution: {integrity: sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.2': + resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.0': + resolution: {integrity: sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.1': + resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.2': + resolution: {integrity: sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.2': + resolution: {integrity: sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.1': + resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.2': + resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.2': + resolution: {integrity: sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.1': + resolution: {integrity: sha512-QvYompk0X+8Yjlo/Fv4McrzxohDdM5GgLHyQcPpcsPvlOSXCGFjdbuyGL5dzRbg0GpknAjQJJZzdiRK7iWVuFQ==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.x + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.2': + resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.1': + resolution: {integrity: sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.2': + resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.0': + resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.2.1': + resolution: {integrity: sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.1': + resolution: {integrity: sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.2.1': + resolution: {integrity: sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.1': + resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.0': + resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.0': + resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.4': + resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/themes@3.1.6': + resolution: {integrity: sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@rollup/rollup-android-arm-eabi@4.26.0': + resolution: {integrity: sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.26.0': + resolution: {integrity: sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.26.0': + resolution: {integrity: sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.26.0': + resolution: {integrity: sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.26.0': + resolution: {integrity: sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.26.0': + resolution: {integrity: sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.26.0': + resolution: {integrity: sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.26.0': + resolution: {integrity: sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.26.0': + resolution: {integrity: sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.26.0': + resolution: {integrity: sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.26.0': + resolution: {integrity: sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.26.0': + resolution: {integrity: sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.26.0': + resolution: {integrity: sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.26.0': + resolution: {integrity: sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.26.0': + resolution: {integrity: sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.26.0': + resolution: {integrity: sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.26.0': + resolution: {integrity: sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.26.0': + resolution: {integrity: sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.5.0': + resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@suchipi/femver@1.0.0': + resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} + + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.15': + resolution: {integrity: sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==} + + '@tanstack/query-core@5.59.20': + resolution: {integrity: sha512-e8vw0lf7KwfGe1if4uPFhvZRWULqHjFcz3K8AebtieXvnMOz5FSzlZe3mTLlPuUBcydCnBRqYs2YJ5ys68wwLg==} + + '@tanstack/react-query@5.59.20': + resolution: {integrity: sha512-Zly0egsK0tFdfSbh5/mapSa+Zfc3Et0Zkar7Wo5sQkFzWyB3p3uZWOHR2wrlAEEV2L953eLuDBtbgFvMYiLvUw==} + peerDependencies: + react: ^18 || ^19 + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vanilla-extract/css@1.16.0': + resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.6': + resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + + '@vanilla-extract/recipes@0.5.5': + resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitejs/plugin-react-swc@3.7.1': + resolution: {integrity: sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==} + peerDependencies: + vite: ^4 || ^5 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@wallet-standard/app@1.1.0': + resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} + engines: {node: '>=16'} + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.0.3': + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} + engines: {node: '>= 8'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.14: + resolution: {integrity: sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==} + peerDependencies: + eslint: '>=7' + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + esrun@3.2.26: + resolution: {integrity: sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==} + engines: {node: '>=14.0'} + hasBin: true + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gql.tada@1.8.10: + resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.10.3: + resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + navi-sdk@1.3.9: + resolution: {integrity: sha512-6gF8BoP3NSce1I83CDEOkgNNAtQ9ss5585ys2WbWbIbj2kUDgp//ot32FHHyaUcKe130LGKYx42IVTGYHjMf9Q==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-spinners@0.14.1: + resolution: {integrity: sha512-2Izq+qgQ08HTofCVEdcAQCXFEYfqTDdfeDQJeo/HHQiQJD4imOicNLhkfN2eh1NYEWVOX4D9ok2lhuDB0z3Aag==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.26.0: + resolution: {integrity: sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zustand@4.5.5: + resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@0no-co/graphql.web@1.0.11(graphql@16.9.0)': + optionalDependencies: + graphql: 16.9.0 + + '@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@digitak/grubber@3.1.4': {} + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.12': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.8': {} + + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@gql.tada/internal@1.0.8(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + graphql: 16.9.0 + typescript: 5.6.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': + dependencies: + graphql: 16.9.0 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@mysten/bcs@0.11.1': + dependencies: + bs58: 5.0.0 + + '@mysten/bcs@1.1.0': + dependencies: + bs58: 6.0.0 + + '@mysten/dapp-kit@0.14.32(@tanstack/react-query@5.59.20(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.6.3) + '@mysten/zksend': 0.12.0(typescript@5.6.3) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@tanstack/react-query': 5.59.20(react@18.3.1) + '@vanilla-extract/css': 1.16.0 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/recipes': 0.5.5(@vanilla-extract/css@1.16.0) + clsx: 2.1.1 + react: 18.3.1 + zustand: 4.5.5(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + + '@mysten/sui.js@0.54.1(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 0.11.1 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + superstruct: 1.0.4 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/sui@1.14.3(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.13.12(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/zksend@0.12.0(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.6.3) + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pythnetwork/price-service-client@1.9.0': + dependencies: + '@pythnetwork/price-service-sdk': 1.7.1 + '@types/ws': 8.5.13 + axios: 1.7.7 + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0) + ts-log: 2.2.7 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.7.1': + dependencies: + bn.js: 5.2.1 + + '@pythnetwork/pyth-sui-js@2.1.0(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@pythnetwork/price-service-client': 1.9.0 + buffer: 6.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - bufferutil + - debug + - typescript + - utf-8-validate + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-accessible-icon@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-aspect-ratio@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-avatar@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-checkbox@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-icons@1.3.1(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-radio-group@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-scroll-area@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slider@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/themes@3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/colors': 3.0.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-accessible-icon': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-aspect-ratio': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context-menu': 2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-hover-card': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-switch': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@rollup/rollup-android-arm-eabi@4.26.0': + optional: true + + '@rollup/rollup-android-arm64@4.26.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.26.0': + optional: true + + '@rollup/rollup-darwin-x64@4.26.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.26.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.26.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.26.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.26.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.26.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.26.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.26.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.26.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.26.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.26.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.26.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.26.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.26.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.26.0': + optional: true + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.5.0': + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@sinclair/typebox@0.27.8': {} + + '@suchipi/femver@1.0.0': {} + + '@swc/core-darwin-arm64@1.9.2': + optional: true + + '@swc/core-darwin-x64@1.9.2': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.2': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.2': + optional: true + + '@swc/core-linux-arm64-musl@1.9.2': + optional: true + + '@swc/core-linux-x64-gnu@1.9.2': + optional: true + + '@swc/core-linux-x64-musl@1.9.2': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.2': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.2': + optional: true + + '@swc/core-win32-x64-msvc@1.9.2': + optional: true + + '@swc/core@1.9.2': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.15 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.15': + dependencies: + '@swc/counter': 0.1.3 + + '@tanstack/query-core@5.59.20': {} + + '@tanstack/react-query@5.59.20(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.59.20 + react: 18.3.1 + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@22.9.0': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.13': {} + + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.12 + + '@types/react@18.3.12': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/semver@7.5.8': {} + + '@types/ws@8.5.13': + dependencies: + '@types/node': 22.9.0 + + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.7 + eslint: 8.57.1 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + eslint: 8.57.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vanilla-extract/css@1.16.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/private@1.0.6': {} + + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.16.0)': + dependencies: + '@vanilla-extract/css': 1.16.0 + + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.11(@types/node@22.9.0))': + dependencies: + '@swc/core': 1.9.2 + vite: 5.4.11(@types/node@22.9.0) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.12 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.0.3': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + array-union@2.1.0: {} + + assertion-error@1.1.0: {} + + asynckit@0.4.0: {} + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + bech32@2.0.0: {} + + binary-extensions@2.3.0: {} + + bn.js@5.2.1: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + callsites@3.1.0: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + cross-spawn@7.0.5: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-node-es@1.1.0: {} + + diff-sequences@29.6.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react-refresh@0.4.14(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.5 + debug: 4.3.7 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + esrun@3.2.26: + dependencies: + '@digitak/grubber': 3.1.4 + chokidar: 3.6.0 + esbuild: 0.17.19 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.5 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.1: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + get-func-name@2.0.2: {} + + get-nonce@1.0.1: {} + + get-stream@8.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gql.tada@1.8.10(graphql@16.9.0)(typescript@5.6.3): + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graphemer@1.4.0: {} + + graphql@16.9.0: {} + + has-flag@4.0.0: {} + + human-signals@5.0.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-retry-allowed@2.2.0: {} + + is-stream@3.0.0: {} + + isexe@2.0.0: {} + + isomorphic-ws@4.0.1(ws@8.18.0): + dependencies: + ws: 8.18.0 + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.26.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mitt@3.0.1: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + modern-ahocorasick@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + nanostores@0.10.3: {} + + natural-compare@1.4.0: {} + + navi-sdk@1.3.9(@types/node@22.9.0)(typescript@5.6.3): + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/sui.js': 0.54.1(typescript@5.6.3) + '@pythnetwork/pyth-sui-js': 2.1.0(typescript@5.6.3) + axios: 1.7.7 + esrun: 3.2.26 + tsconfig-paths: 4.2.0 + vitest: 1.6.0(@types/node@22.9.0) + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/node' + - '@vitest/browser' + - '@vitest/ui' + - bufferutil + - debug + - happy-dom + - jsdom + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - typescript + - utf-8-validate + + normalize-path@3.0.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.3.3: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + react-spinners@0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.26.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.26.0 + '@rollup/rollup-android-arm64': 4.26.0 + '@rollup/rollup-darwin-arm64': 4.26.0 + '@rollup/rollup-darwin-x64': 4.26.0 + '@rollup/rollup-freebsd-arm64': 4.26.0 + '@rollup/rollup-freebsd-x64': 4.26.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.26.0 + '@rollup/rollup-linux-arm-musleabihf': 4.26.0 + '@rollup/rollup-linux-arm64-gnu': 4.26.0 + '@rollup/rollup-linux-arm64-musl': 4.26.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.26.0 + '@rollup/rollup-linux-riscv64-gnu': 4.26.0 + '@rollup/rollup-linux-s390x-gnu': 4.26.0 + '@rollup/rollup-linux-x64-gnu': 4.26.0 + '@rollup/rollup-linux-x64-musl': 4.26.0 + '@rollup/rollup-win32-arm64-msvc': 4.26.0 + '@rollup/rollup-win32-ia32-msvc': 4.26.0 + '@rollup/rollup-win32-x64-msvc': 4.26.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@3.8.0: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + superstruct@1.0.4: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + text-table@0.2.0: {} + + tinybench@2.9.0: {} + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@1.4.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-log@2.2.7: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.1.0: {} + + type-fest@0.20.2: {} + + typescript@5.6.3: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + + valibot@0.36.0: {} + + vite-node@1.6.0(@types/node@22.9.0): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.11(@types/node@22.9.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.11(@types/node@22.9.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.26.0 + optionalDependencies: + '@types/node': 22.9.0 + fsevents: 2.3.3 + + vitest@1.6.0(@types/node@22.9.0): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.3.7 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.12 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.0 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.11(@types/node@22.9.0) + vite-node: 1.6.0(@types/node@22.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.9.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + ws@8.18.0: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zustand@4.5.5(@types/react@18.3.12)(react@18.3.1): + dependencies: + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react: 18.3.1 diff --git a/mover/lizhecome/code/task6/ptb_navi/prettier.config.cjs b/mover/lizhecome/code/task6/ptb_navi/prettier.config.cjs new file mode 100644 index 000000000..c07541106 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/prettier.config.cjs @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-undef +module.exports = { + proseWrap: "always", +}; diff --git a/mover/lizhecome/code/task6/ptb_navi/src/App.tsx b/mover/lizhecome/code/task6/ptb_navi/src/App.tsx new file mode 100644 index 000000000..20e1d748f --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/App.tsx @@ -0,0 +1,62 @@ +import { ConnectButton, useCurrentAccount } from "@mysten/dapp-kit"; +import { isValidSuiObjectId } from "@mysten/sui/utils"; +import { Box, Container, Flex, Heading } from "@radix-ui/themes"; +import { useState } from "react"; +import { Counter } from "./Counter"; +import { CreateCounter } from "./CreateCounter"; +import NaviPage from "./navi"; +function App() { + const currentAccount = useCurrentAccount(); + const [counterId, setCounter] = useState(() => { + const hash = window.location.hash.slice(1); + return isValidSuiObjectId(hash) ? hash : null; + }); + + return ( + <> + + + dApp Starter Template + + + + + + + + + {currentAccount ? ( + counterId ? ( + + ) : ( + { + window.location.hash = id; + setCounter(id); + }} + /> + ) + ) : ( + Please connect your wallet + )} + + + + + ); +} + +export default App; diff --git a/mover/lizhecome/code/task6/ptb_navi/src/Counter.tsx b/mover/lizhecome/code/task6/ptb_navi/src/Counter.tsx new file mode 100644 index 000000000..3ad530d86 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/Counter.tsx @@ -0,0 +1,106 @@ +import { + useCurrentAccount, + useSignAndExecuteTransaction, + useSuiClient, + useSuiClientQuery, +} from "@mysten/dapp-kit"; +import type { SuiObjectData } from "@mysten/sui/client"; +import { Transaction } from "@mysten/sui/transactions"; +import { Button, Flex, Heading, Text } from "@radix-ui/themes"; +import { useNetworkVariable } from "./networkConfig"; +import { useState } from "react"; +import ClipLoader from "react-spinners/ClipLoader"; + +export function Counter({ id }: { id: string }) { + const counterPackageId = useNetworkVariable("counterPackageId"); + const suiClient = useSuiClient(); + const currentAccount = useCurrentAccount(); + const { mutate: signAndExecute } = useSignAndExecuteTransaction(); + const { data, isPending, error, refetch } = useSuiClientQuery("getObject", { + id, + options: { + showContent: true, + showOwner: true, + }, + }); + + const [waitingForTxn, setWaitingForTxn] = useState(""); + + const executeMoveCall = (method: "increment" | "reset") => { + setWaitingForTxn(method); + + const tx = new Transaction(); + + if (method === "reset") { + tx.moveCall({ + arguments: [tx.object(id), tx.pure.u64(0)], + target: `${counterPackageId}::counter::set_value`, + }); + } else { + tx.moveCall({ + arguments: [tx.object(id)], + target: `${counterPackageId}::counter::increment`, + }); + } + + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: (tx) => { + suiClient.waitForTransaction({ digest: tx.digest }).then(async () => { + await refetch(); + setWaitingForTxn(""); + }); + }, + }, + ); + }; + + if (isPending) return Loading...; + + if (error) return Error: {error.message}; + + if (!data.data) return Not found; + + const ownedByCurrentAccount = + getCounterFields(data.data)?.owner === currentAccount?.address; + + return ( + <> + Counter {id} + + + Count: {getCounterFields(data.data)?.value} + + + {ownedByCurrentAccount ? ( + + ) : null} + + + + ); +} +function getCounterFields(data: SuiObjectData) { + if (data.content?.dataType !== "moveObject") { + return null; + } + + return data.content.fields as { value: number; owner: string }; +} diff --git a/mover/lizhecome/code/task6/ptb_navi/src/CreateCounter.tsx b/mover/lizhecome/code/task6/ptb_navi/src/CreateCounter.tsx new file mode 100644 index 000000000..32d8aafa2 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/CreateCounter.tsx @@ -0,0 +1,60 @@ +import { Transaction } from "@mysten/sui/transactions"; +import { Button, Container } from "@radix-ui/themes"; +import { useSignAndExecuteTransaction, useSuiClient } from "@mysten/dapp-kit"; +import { useNetworkVariable } from "./networkConfig"; +import ClipLoader from "react-spinners/ClipLoader"; + +export function CreateCounter({ + onCreated, +}: { + onCreated: (id: string) => void; +}) { + const counterPackageId = useNetworkVariable("counterPackageId"); + const suiClient = useSuiClient(); + const { + mutate: signAndExecute, + isSuccess, + isPending, + } = useSignAndExecuteTransaction(); + + function create() { + const tx = new Transaction(); + + tx.moveCall({ + arguments: [], + target: `${counterPackageId}::counter::create`, + }); + + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: async ({ digest }) => { + const { effects } = await suiClient.waitForTransaction({ + digest: digest, + options: { + showEffects: true, + }, + }); + + onCreated(effects?.created?.[0]?.reference?.objectId!); + }, + }, + ); + } + + return ( + + + + ); +} diff --git a/mover/lizhecome/code/task6/ptb_navi/src/constants.ts b/mover/lizhecome/code/task6/ptb_navi/src/constants.ts new file mode 100644 index 000000000..0ffffc297 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/constants.ts @@ -0,0 +1,3 @@ +export const DEVNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const TESTNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const MAINNET_COUNTER_PACKAGE_ID = "0xTODO"; diff --git a/mover/lizhecome/code/task6/ptb_navi/src/main.tsx b/mover/lizhecome/code/task6/ptb_navi/src/main.tsx new file mode 100644 index 000000000..db3a81acc --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/main.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "@mysten/dapp-kit/dist/index.css"; +import "@radix-ui/themes/styles.css"; + +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Theme } from "@radix-ui/themes"; +import App from "./App.tsx"; +import { networkConfig } from "./networkConfig.ts"; + +const queryClient = new QueryClient(); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + + + + + + , +); diff --git a/mover/lizhecome/code/task6/ptb_navi/src/navi.tsx b/mover/lizhecome/code/task6/ptb_navi/src/navi.tsx new file mode 100644 index 000000000..69b98afac --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/navi.tsx @@ -0,0 +1,76 @@ +// 创建与navi协议交互的页面 +import { useCurrentAccount, useSignAndExecuteTransaction, useSuiClient } from "@mysten/dapp-kit"; +import { Button, Flex, Heading } from "@radix-ui/themes"; +import { Transaction } from "@mysten/sui/transactions"; +import { depositCoin, borrowCoin } from 'navi-sdk/dist/libs/PTB'; +import { pool, wUSDC } from 'navi-sdk/dist/address'; +import type { CoinInfo, Pool, PoolConfig } from "navi-sdk/dist/types"; + +const NaviPage = () => { + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + const client = useSuiClient(); + const currentAccount = useCurrentAccount(); + + const handleButtonClick = async () => { + // 如果当前账户为空,则提示用户先连接钱包 + if (!currentAccount) { + alert("请先连接钱包"); + return; + } + + // 获得当前sui的钱包账户 + console.log(currentAccount); + + // 创建一个sui 交易 + const tx = new Transaction(); + // 设置交易的发送者 + tx.setSender(currentAccount.address); + + try { + const suiPoolConfig: PoolConfig = pool['Sui']; + // 从钱包中拆分出1SUI,注意不是MIST + + const splitCoin = tx.splitCoins(tx.gas, [1_000_000_000]) + console.log(1); + + // 1. 存入Navi Protocol 1 SUI + await depositCoin(tx, suiPoolConfig, splitCoin, 1_000_000_000); + console.log(2); + // 2. 借出当前日期的USDC 0.[月][天][小时] 的 USDC + // 创建usdc的pool + const toBorrowCoin: CoinInfo = wUSDC; + const loanPoolConfig: PoolConfig = pool[toBorrowCoin.symbol as keyof Pool]; + const currentDate = new Date(); + const month = currentDate.getMonth() + 1; + const day = currentDate.getDate(); + const hour = currentDate.getHours(); + const borrowAmount = parseFloat(`0.${month}${day}${hour}`); + + //将wUSDC的borrowAmount转为正确精度 + const borrowAmountInCorrectPrecision = borrowAmount * Math.pow(10, wUSDC.decimal); + + console.log(borrowAmountInCorrectPrecision); + // 借出wUSDC + const [borrowedUSDC] = await borrowCoin(tx, loanPoolConfig, borrowAmountInCorrectPrecision); + console.log(3); + // 3. 然后在存入等额的wUSDC + await depositCoin(tx, loanPoolConfig, borrowedUSDC, borrowAmountInCorrectPrecision); + // 签名并执行交易 + console.log(4); + signAndExecuteTransaction({ transaction: tx }); + + alert("任务完成!"); + } catch (error) { + console.error("交易执行失败:", error); + alert("交易执行失败,请查看控制台日志。"); + } + }; + + return ( +
+ +
+ ); +}; + +export default NaviPage; \ No newline at end of file diff --git a/mover/lizhecome/code/task6/ptb_navi/src/networkConfig.ts b/mover/lizhecome/code/task6/ptb_navi/src/networkConfig.ts new file mode 100644 index 000000000..7b6f8b73d --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/networkConfig.ts @@ -0,0 +1,31 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { + DEVNET_COUNTER_PACKAGE_ID, + TESTNET_COUNTER_PACKAGE_ID, + MAINNET_COUNTER_PACKAGE_ID, +} from "./constants.ts"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + variables: { + counterPackageId: DEVNET_COUNTER_PACKAGE_ID, + }, + }, + testnet: { + url: getFullnodeUrl("testnet"), + variables: { + counterPackageId: TESTNET_COUNTER_PACKAGE_ID, + }, + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + variables: { + counterPackageId: MAINNET_COUNTER_PACKAGE_ID, + }, + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/mover/lizhecome/code/task6/ptb_navi/src/vite-env.d.ts b/mover/lizhecome/code/task6/ptb_navi/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mover/lizhecome/code/task6/ptb_navi/tsconfig.json b/mover/lizhecome/code/task6/ptb_navi/tsconfig.json new file mode 100644 index 000000000..a7fc6fbf2 --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/mover/lizhecome/code/task6/ptb_navi/tsconfig.node.json b/mover/lizhecome/code/task6/ptb_navi/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/mover/lizhecome/code/task6/ptb_navi/vite.config.ts b/mover/lizhecome/code/task6/ptb_navi/vite.config.ts new file mode 100644 index 000000000..d366e8c8d --- /dev/null +++ b/mover/lizhecome/code/task6/ptb_navi/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/mover/lizhecome/code/task7/check_in_task/Move.lock b/mover/lizhecome/code/task7/check_in_task/Move.lock new file mode 100644 index 000000000..a092855f0 --- /dev/null +++ b/mover/lizhecome/code/task7/check_in_task/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "38F91517243B65BA1C6310088E81D2A9961A2D05092A4621F67E633D77AE81BF" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x26a47876f0640ad190679ad0307aa60c77b6009b214f867ef7a24be1f084d51d" +latest-published-id = "0x26a47876f0640ad190679ad0307aa60c77b6009b214f867ef7a24be1f084d51d" +published-version = "1" diff --git a/mover/lizhecome/code/task7/check_in_task/Move.toml b/mover/lizhecome/code/task7/check_in_task/Move.toml new file mode 100644 index 000000000..852f66f45 --- /dev/null +++ b/mover/lizhecome/code/task7/check_in_task/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "check_in_task" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +check_in_task = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/lizhecome/code/task7/check_in_task/sources/check_in_task.move b/mover/lizhecome/code/task7/check_in_task/sources/check_in_task.move new file mode 100644 index 000000000..52b57ac79 --- /dev/null +++ b/mover/lizhecome/code/task7/check_in_task/sources/check_in_task.move @@ -0,0 +1,37 @@ +/// Module: check_in_task +module check_in_task::check_in_task; +use std::ascii::{String,string}; +use sui::transfer::share_object; +use std::bcs; +use sui::event; +use std::hash::sha3_256; + +public struct CheckinString has key { + id: UID, + key: vector +} + +public struct GetCheckinString has drop,copy{ + sender:address, + checkin_string:vector, + github_id:String +} + +fun init(ctx:& mut TxContext){ + let checkin_string = CheckinString { + id: object::new(ctx), + key: vector::empty(), + }; + share_object(checkin_string); +} + +entry fun getCheckinString(github_id:String, check_string:&mut CheckinString, flagString:String, ctx:&TxContext){ + let mut bcs_flag = bcs::to_bytes(&flagString); + vector::append(&mut bcs_flag, *github_id.as_bytes()); + check_string.key =sha3_256(bcs_flag); + event::emit(GetCheckinString { + sender: ctx.sender(), + checkin_string: check_string.key, + github_id + }); +} \ No newline at end of file diff --git a/mover/lizhecome/code/task7/check_in_task/tests/check_in_task_tests.move b/mover/lizhecome/code/task7/check_in_task/tests/check_in_task_tests.move new file mode 100644 index 000000000..6c0013f55 --- /dev/null +++ b/mover/lizhecome/code/task7/check_in_task/tests/check_in_task_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module check_in_task::check_in_task_tests; +// uncomment this line to import the module +// use check_in_task::check_in_task; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_check_in_task() { + // pass +} + +#[test, expected_failure(abort_code = ::check_in_task::check_in_task_tests::ENotImplemented)] +fun test_check_in_task_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/lizhecome/code/task8/gen_proof/Move.lock b/mover/lizhecome/code/task8/gen_proof/Move.lock new file mode 100644 index 000000000..faa02479d --- /dev/null +++ b/mover/lizhecome/code/task8/gen_proof/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "FD7281619B1D5F46D8575E8C43537192F9D6B8E63A32E0E4989C0014A7678C17" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "lets_move", name = "lets_move" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "lets_move" +source = { local = "../lets_move" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x1df6e78eb65ec032e83bf7a7070cd5f41f1d72e9c52fbdad3cddc18590fc3325" +latest-published-id = "0x1df6e78eb65ec032e83bf7a7070cd5f41f1d72e9c52fbdad3cddc18590fc3325" +published-version = "1" diff --git a/mover/lizhecome/code/task8/gen_proof/Move.toml b/mover/lizhecome/code/task8/gen_proof/Move.toml new file mode 100644 index 000000000..3407415b4 --- /dev/null +++ b/mover/lizhecome/code/task8/gen_proof/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "gen_proof" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +lets_move = { local = "../lets_move" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +gen_proof = "0x0" +random = "0x8" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/lizhecome/code/task8/gen_proof/sources/gen_proof.move b/mover/lizhecome/code/task8/gen_proof/sources/gen_proof.move new file mode 100644 index 000000000..97f54a231 --- /dev/null +++ b/mover/lizhecome/code/task8/gen_proof/sources/gen_proof.move @@ -0,0 +1,34 @@ +/* +/// Module: gen_proof +module gen_proof::gen_proof; +*/ +module gen_proof::gen_proof { + use std::ascii::{String, string}; + use std::hash; + use sui::event; + use sui::bcs; + use sui::random; + use sui::transfer::share_object; + use sui::tx_context::{TxContext, sender}; + use sui::random::Random; + use lets_move::lets_move::Challenge; + + + + public struct ChallengeBytes has copy, drop { + object_bytes :vector + } + + + /// 初始化 Challenge 对象 + public fun init_challenge(ctx: &mut TxContext) { + + } + + + public entry fun get_challenge_bytes(challenge: &Challenge,ctx:&TxContext){ + event::emit(ChallengeBytes { + object_bytes:bcs::to_bytes(challenge) + }); + } +} \ No newline at end of file diff --git a/mover/lizhecome/code/task8/gen_proof/tests/gen_proof_tests.move b/mover/lizhecome/code/task8/gen_proof/tests/gen_proof_tests.move new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/lizhecome/code/task8/gen_proof/tests/gen_proof_tests.move @@ -0,0 +1 @@ + diff --git a/mover/lizhecome/code/task8/get_proof.py b/mover/lizhecome/code/task8/get_proof.py new file mode 100644 index 000000000..57a6f6a98 --- /dev/null +++ b/mover/lizhecome/code/task8/get_proof.py @@ -0,0 +1,42 @@ +import hashlib +import random + +def sha3_256(data: bytes) -> bytes: + """计算 sha3_256 哈希""" + return hashlib.sha3_256(data).digest() + +def find_proof(sender_bytes: bytes, challenge_bytes: bytes, difficulity: int = 3) -> list: + """寻找满足条件的 proof 并返回字节数组""" + while True: + # 随机生成 8 字节的 proof + proof = random.randbytes(8) + + # 构建 full_proof = proof + sender_bytes + challenge_bytes + full_proof = proof + sender_bytes + bytes(challenge_bytes) + + # 计算 sha3_256 哈希 + hash_result = sha3_256(full_proof) + + # 计算前 difficulity 个字节的前缀和 + prefix_sum = sum(hash_result[i] for i in range(difficulity)) + + # 满足 prefix_sum == 0 的条件 + if prefix_sum == 0: + print(f"Proof found (byte array): {[b for b in proof]}") + return [b for b in proof] + +# 将 sender 转换为字节数组(16 进制字符串转为 bytes) +sender_hex = "43d945f82670c017d1989a6613612092e07560dcf88580f6649c4c0b7aa54e44" +sender_bytes = bytes.fromhex(sender_hex) + +# 使用提供的 challenge_bytes +challenge_bytes = [ + 25, 231, 108, 165, 4, 197, 165, 250, 94, 33, 74, 69, 252, 166, 192, 88, + 23, 27, 163, 51, 246, 218, 137, 123, 130, 115, 16, 148, 80, 77, 90, 185, + 24, 53, 123, 75, 62, 115, 100, 82, 75, 76, 48, 74, 44, 60, 65, 40, 94, 45, + 126, 115, 77, 126, 95, 121, 51, 3, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0 +] + +# 计算 proof 并输出为字节数组 +proof = find_proof(sender_bytes, challenge_bytes) +print(f"Calculated proof as byte array: {proof}") \ No newline at end of file diff --git a/mover/lizhecome/code/task8/lets_move/Move.lock b/mover/lizhecome/code/task8/lets_move/Move.lock new file mode 100644 index 000000000..200f3a7d9 --- /dev/null +++ b/mover/lizhecome/code/task8/lets_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "786B91A5B97E30CFE4109DB806C7FDAA208AD34906C77AB899770D4D0AEB5DB1" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x097a3833b6b5c62ca6ad10f0509dffdadff7ce31e1d86e63e884a14860cedc0f" +latest-published-id = "0x097a3833b6b5c62ca6ad10f0509dffdadff7ce31e1d86e63e884a14860cedc0f" +published-version = "1" diff --git a/mover/lizhecome/code/task8/lets_move/Move.toml b/mover/lizhecome/code/task8/lets_move/Move.toml new file mode 100644 index 000000000..2c2ad6ae1 --- /dev/null +++ b/mover/lizhecome/code/task8/lets_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "lets_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +lets_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/lizhecome/code/task8/lets_move/sources/lets_move.move b/mover/lizhecome/code/task8/lets_move/sources/lets_move.move new file mode 100644 index 000000000..7fd6fd550 --- /dev/null +++ b/mover/lizhecome/code/task8/lets_move/sources/lets_move.move @@ -0,0 +1,87 @@ +module lets_move::lets_move { + use std::ascii::{String, string}; + use std::hash; + use sui::event; + use sui::bcs; + use sui::random; + use sui::random::Random; + use sui::transfer::share_object; + + const EPROOF: u64 = 0; + + public struct Flag has copy, drop { + sender: address, + flag: bool, + ture_num: u64, + github_id: String + } + + public struct Challenge has key { + id: UID, + str: String, + difficulity: u64, + ture_num: u64 + } + + fun init(ctx: &mut TxContext) { + let flag_str = Challenge { + id: object::new(ctx), + str: string(b"LetsMoveCTF"), + difficulity: 3, + ture_num: 0, + }; + share_object(flag_str); + } + + + entry fun get_flag( + proof: vector, + github_id: String, + challenge: &mut Challenge, + rand: &Random, + ctx: &mut TxContext + ) { + let mut full_proof: vector = vector::empty(); + vector::append(&mut full_proof, proof); + vector::append(&mut full_proof, tx_context::sender(ctx).to_bytes()); + vector::append(&mut full_proof, bcs::to_bytes(challenge)); + + let hash: vector = hash::sha3_256(full_proof); + + let mut prefix_sum: u32 = 0; + let mut i: u64 = 0; + while (i < challenge.difficulity) { + prefix_sum = prefix_sum + (*vector::borrow(&hash, i) as u32); + i = i + 1; + }; + + assert!(prefix_sum == 0, EPROOF); + + challenge.str = getRandomString(rand, ctx); + challenge.ture_num = challenge.ture_num + 1; + + event::emit(Flag { + sender: tx_context::sender(ctx), + flag: true, + ture_num: challenge.ture_num, + github_id + }); + } + + + fun getRandomString(rand: &Random, ctx: &mut TxContext): String { + let mut gen = random::new_generator(rand, ctx); + + let mut str_len = random::generate_u8_in_range(&mut gen, 4, 30); + + let mut rand: vector = b""; + while (str_len != 0) { + let rand_num = random::generate_u8_in_range(&mut gen, 34, 126); + vector::push_back(&mut rand, rand_num); + str_len = str_len - 1; + }; + + string(rand) + } +} + diff --git a/mover/lizhecome/code/task8/lets_move/tests/lets_move_tests.move b/mover/lizhecome/code/task8/lets_move/tests/lets_move_tests.move new file mode 100644 index 000000000..4febaae1a --- /dev/null +++ b/mover/lizhecome/code/task8/lets_move/tests/lets_move_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module lets_move::lets_move_tests { + // uncomment this line to import the module + // use lets_move::lets_move; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_lets_move() { + // pass + } + + #[test, expected_failure(abort_code = ::lets_move::lets_move_tests::ENotImplemented)] + fun test_lets_move_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/lizhecome/images/HOH_QR.jpg b/mover/lizhecome/images/HOH_QR.jpg new file mode 100644 index 000000000..4ff7a9d7f Binary files /dev/null and b/mover/lizhecome/images/HOH_QR.jpg differ diff --git a/mover/lizhecome/images/task7.png b/mover/lizhecome/images/task7.png new file mode 100644 index 000000000..717687799 Binary files /dev/null and b/mover/lizhecome/images/task7.png differ diff --git a/mover/lizhecome/images/task8.png b/mover/lizhecome/images/task8.png new file mode 100644 index 000000000..77e27ee46 Binary files /dev/null and b/mover/lizhecome/images/task8.png differ diff --git a/mover/lizhecome/notes/00_01_windows_dos_commands.md b/mover/lizhecome/notes/00_01_windows_dos_commands.md new file mode 100644 index 000000000..82fbdb4a4 --- /dev/null +++ b/mover/lizhecome/notes/00_01_windows_dos_commands.md @@ -0,0 +1,923 @@ +# Windows DOS 命令 - 学习笔记 + +## 1 批处理编程初体验 + +### 1-1 什么是批处理程序? + +批处理编程(Batch programming)是微软操作系统自带的脚本语言,可以直接运行,无需配置额外环境。批处理文件通常以 `.bat` 后缀结尾,通过 `cmd.exe` 执行。 + +打开命令提示符的方法: +- 按 `Windows + R` 键,打开“运行”对话框。 +- 输入 `cmd` 并按回车键。 + +### 1-2 如何编辑批处理文件 + +批处理文件可以使用任何文本编辑器来编辑,例如系统自带的 Notepad,并保存为 `.bat` 后缀的文件。 + +### 1-3 批处理程序可以做什么? + +通过批处理文件,你可以使用一系列内置命令实现自动化操作,例如: +- 根据指定规则删除文件。 +- 创建新文件、日志等。 +- 甚至可以批量创建计算机病毒(请谨慎操作)。 + +### 1-4 一个简单的批处理程序 + +以下是一个输出“Hello World”的简单示例: + +```batch +@echo off +echo "Hello World" +pause +``` + +注:pause 命令用于等待用户输入,防止命令窗口立即关闭。 + +### 1-5 命令分类 + +内部命令 + +直接内置于 `cmd.exe` 中的命令: + +- `ipconfig` - 查看网络配置。 +- `cls` - 清屏。 + +外部命令 + +需要依赖外部程序的命令: + +- `java`、`python` 等。 + +## 2 批处理运算操作 + +### 2-1 算术运算 +在批处理中,`set /a` 命令可以进行加、减、乘、除等基本算术运算,便于实现简单的计算需求。 + +**示例**:计算两个数字的和 +```batch +@echo off +set /a result=5+3 +echo 结果为:%result% +pause +``` + +### 2-2 重定向操作 +重定向符号 `>` 和 `>>` 可以将命令输出写入文件中,`>` 会覆盖文件内容,而 `>>` 则将新内容追加至文件末尾。 + +**示例**:将 `dir` 命令的结果保存到文件 +```batch +@echo off +dir > 文件列表.txt +echo 文件列表已保存至 文件列表.txt +pause +``` +说明:执行上述命令后,当前目录下会生成一个名为 文件列表.txt 的文件,文件中包含了 dir 命令的输出内容。 + +### 2-3 多命令运算 +通过 `&` 符号可以在一行中连续执行多个命令,这在需要多步操作时非常方便。 + +**示例**:显示文件夹内容并清屏 +```batch +@echo off +dir & cls +pause +``` +说明:执行上述命令后,首先会显示当前目录的文件和文件夹列表,然后清除屏幕,返回一个空白的命令提示符窗口。 + +### 2-4 管道操作 +管道符 `|` 将前一命令的输出作为后一命令的输入,便于对命令结果进行进一步筛选和处理。 + +**示例**:显示 `dir` 命令输出中的包含 "txt" 的文件 +```batch +@echo off +dir | find "txt" +pause +``` +说明:执行上述命令后,将显示当前目录下所有文件和文件夹的列表,但只会输出名称中包含 “txt” 的项目。这种方法非常适合快速查找特定类型的文件。 + +## 3 基本命令 + +### 3-1 基本命令格式介绍 +DOS 命令的基本格式为 `命令 参数`。大多数命令支持通过 `/` 或 `-` 来提供参数,以调整执行效果。例如,`dir /p` 将列出当前目录中的文件并按页显示,非常适合浏览较长的目录列表。 + +**示例**:按页显示当前目录的内容 +```batch +@echo off +dir /p +pause +``` +说明:执行上述命令后,将逐页显示当前目录中的文件和文件夹列表,每页内容显示完后等待用户按键继续。这对于查看文件较多的目录特别有用。 + +### 3-2 批处理文件接受参数 +批处理文件可以通过 `%1`、`%2` 等变量接收外部传入的参数,方便实现更灵活的操作。 + +**示例**:输出传入的第一个参数 +```batch +@echo off +echo 第一个参数是:%1 +pause +``` + +说明:执行此批处理文件时,可以在文件名后面输入一个参数值,批处理会将其显示。例如运行 test.bat Hello,将输出 第一个参数是:Hello。 + +### 3-3 注释符介绍 +在批处理中,可以使用 `REM` 或 `::` 来添加注释,帮助提高脚本的可读性和维护性。`REM` 和 `::` 后的内容不会被执行。 + +**示例**:添加注释 +```batch +@echo off +REM 这是一行注释 +:: 这也是一行注释 +echo 批处理文件示例 +pause +``` +说明:REM 和 :: 均可用于编写注释,REM 是传统注释符,而 :: 仅在批处理中有效,两者功能相似。注释帮助理解批处理文件的功能和逻辑。 + +### 3-4 炫酷命令提示符窗口 +通过 `color` 命令可以更改命令提示符窗口的颜色,例如 `color 0a` 将背景变为黑色、文本变为绿色。 + +**示例**:更改命令提示符颜色 +```batch +@echo off +color 0a +echo 命令提示符颜色已更改 +pause +``` +说明:执行该命令后,命令窗口的背景将变为黑色,文字为绿色。这种效果可以让批处理文件的输出更加醒目,适合在演示或测试时使用。 + +### 3-5 时间相关命令 +`date` 和 `time` 命令可以获取或设置系统的日期和时间,方便记录操作时间。 + +**示例**:显示当前日期和时间 +```batch +@echo off +echo 当前日期:%date% +echo 当前时间:%time% +pause +``` +说明:%date% 和 %time% 是系统内置变量,用于显示当前系统的日期和时间,适合在批处理文件中进行时间戳记录。 + +### 3-6 启动命令 +`start` 命令可以用来启动外部程序或打开文件,适合在批处理中调用其他应用程序。 + +**示例**:启动计算器 +```batch +@echo off +start calc +pause +``` +说明:执行该命令后将启动 Windows 计算器。这在批处理文件中用于启动其他应用程序或打开文件时非常方便。 + +### 3-7 调用其他 bat 文件 +在一个批处理文件中可以使用 `call` 命令来调用另一个批处理文件,并在执行完成后返回到主批处理文件继续运行。 + +**示例**:调用另一个批处理文件 +```batch +@echo off +call another_script.bat +pause +``` +说明:call 命令用于调用其他批处理文件并在完成后返回执行。这样可以将多个批处理文件组合在一起,适合需要分步骤执行的复杂任务。 + +### 3-8 任务列表查看命令 +`tasklist` 命令用于查看当前系统的任务列表,包括运行的应用程序和后台进程。 + +**示例**:查看任务列表 +```batch +@echo off +tasklist +pause +``` +说明:执行该命令后将列出当前系统中的所有进程,包括进程名称、PID(进程 ID)和内存使用情况。这在系统资源管理和故障排查时非常有用。 + +### 3-9 任务终止命令 +使用 `taskkill` 命令可以终止指定的任务,适合管理系统资源或关闭无响应的程序。 + +**示例**:关闭记事本程序 +```batch +@echo off +taskkill /im notepad.exe /f +pause +``` +说明:/im 指定要关闭的进程名称,/f 强制终止任务。此命令会关闭所有正在运行的记事本程序,适用于需要手动关闭特定进程的情况。 + +### 3-10 文件夹结构命令 tree +`tree` 命令用于显示当前目录的目录结构树,直观地展示文件夹的层级关系。 + +**示例**:查看目录结构 +```batch +@echo off +tree +pause +``` +说明:执行此命令后,将以树状图的形式显示当前目录及其所有子目录和文件的结构,适合快速了解文件夹的嵌套情况和内容布局。 + +### 3-11 关机命令 +使用 `shutdown` 命令可以实现系统的关机、重启或注销操作,适合用于批处理文件中进行计划任务或远程控制。 + +**示例**:系统一分钟后关机 +```batch +@echo off +shutdown /s /t 60 +pause +``` +说明:/s 表示关机,/t 指定延迟时间(以秒为单位)。执行该命令后,系统将在 60 秒后自动关机,适合用于需要定时关机的情况。 + +### 3-12 计划任务命令 at +`at` 命令用于设置计划任务,使得指定的任务在特定时间自动运行。注意:此命令需要在管理员权限下运行。 + +**示例**:在晚上8点打开记事本 +```batch +@echo off +at 20:00 notepad.exe +pause +``` +说明:该命令会在指定的时间(20:00)启动记事本程序。在使用此命令前,需要确保系统已启用任务调度功能。适用于需要定期执行的任务。 +### 3-13 环境变量 +通过 `set` 命令可以查看或设置系统的环境变量,如 `PATH`、`TEMP` 等,这对程序的运行和系统配置非常重要。 + +**示例**:查看 `PATH` 环境变量 +```batch +@echo off +set PATH +pause +``` +说明:执行此命令后,将输出当前系统的 PATH 环境变量内容,显示包含的所有路径。环境变量对程序的查找和执行至关重要,可以通过 set VARIABLE_NAME=value 的方式设置新变量或修改现有变量。 + +## 4 目录和文件操作 + +### 4-1 目录浏览命令 dir +`dir` 命令用于列出当前目录中的所有文件和文件夹,可以使用多种参数进行筛选。 + +**示例**:列出当前目录中的所有文件和文件夹 +```batch +@echo off +dir +pause +``` +说明:执行此命令后,将显示当前目录下的所有文件和文件夹的列表,可以方便地查看文件的基本信息。 + +### 4-2 目录新建与删除命令 +使用 `mkdir` 命令可以创建新目录,而 `rmdir` 命令则用于删除目录。 + +**示例**:创建新目录和删除目录 +```batch +@echo off +mkdir NewFolder +rmdir NewFolder +pause +``` +说明:mkdir NewFolder 将在当前目录下创建一个名为 NewFolder 的新文件夹,rmdir NewFolder 将删除该文件夹。注意,删除的目录必须为空。 + +### 4-3 目录切换命令 cd +`cd` 命令用于切换当前工作目录,可以通过路径参数访问不同的目录。 + +**示例**:切换到上级目录 +```batch +@echo off +cd .. +pause +``` +说明:执行此命令后,将返回到当前目录的上一级目录。可以通过 cd 路径 切换到指定目录,例如 cd C:\Users\YourName\Documents。 + +### 4-4 目录重命名命令 ren +`ren` 命令用于重命名文件或目录。 + +**示例**:重命名目录 +```batch +@echo off +mkdir OldFolder +ren OldFolder NewFolder +pause +``` +说明:执行上述命令后,将首先创建一个名为 OldFolder 的目录,然后将其重命名为 NewFolder。请注意,重命名时,目标名称不能与当前目录中的其他文件或文件夹重复。 + +### 4-5 目录拷贝命令 copy +`copy` 命令用于复制文件,可以将文件复制到同一目录或其他目录,支持多种参数以实现不同的功能。 + +**基本示例**:复制文件 +```batch +@echo off +copy example.txt example_copy.txt +pause +``` +说明:执行该命令后,将复制 example.txt 文件并创建一个名为 example_copy.txt 的副本。 + +**示例**:复制所有文本文件到指定目录 +```batch +@echo off +copy *.txt D:\Backup\ +pause +``` +说明:该命令将当前目录下所有以 .txt 结尾的文件复制到 D:\Backup\ 目录。 + +**示例**:在复制时覆盖已存在的文件 +```batch +@echo off +copy /y example.txt example_copy.txt +pause +``` +说明:/y 参数用于强制覆盖目标文件,而无需提示用户确认。 + +**示例**:显示复制过程中详细信息 +```batch +@echo off +copy /v example.txt example_copy.txt +pause +``` +说明:/v 参数用于验证新文件的内容与原文件是否一致,确保复制的准确性。 + +**示例**:将多个文件复制到目标目录 +```batch +@echo off +copy file1.txt + file2.txt D:\Backup\merged.txt +pause +``` +说明:该命令将 file1.txt 和 file2.txt 合并为一个文件 merged.txt,并将其复制到 D:\Backup\ 目录。 + +### 4-6 文件删除命令 del +`del` 命令用于删除指定的文件,可以通过多种参数进行灵活操作。 + +**基本示例**:删除单个文件 +```batch +@echo off +del example_copy.txt +pause +``` +说明:执行该命令后,将删除名为 example_copy.txt 的文件。请谨慎使用此命令,因为删除的文件无法恢复。 + +**示例**:删除多个文件 +```batch +@echo off +del *.txt +pause +``` +说明:该命令将删除当前目录下所有以 .txt 结尾的文件。 + +**示例**:强制删除文件而不提示确认 +```batch +@echo off +del /f example_copy.txt +pause +``` +说明:/f 参数用于强制删除只读文件,无论文件的属性如何。 + +**示例**:删除所有文件并不显示确认提示 +```batch +@echo off +del /q *.log +pause +``` +说明:/q 参数用于安静模式,删除文件时不显示确认提示。该命令将删除当前目录下所有 .log 文件。 + +**示例**:使用通配符删除特定类型文件 +```batch +@echo off +del C:\Users\YourName\Documents\*.tmp +pause +``` +说明:该命令将删除 C:\Users\YourName\Documents\ 目录下所有以 .tmp 结尾的临时文件。 + +### 4-7 文件剪切命令 move +`move` 命令用于剪切并移动文件或目录,可以将文件从一个位置移动到另一个位置。 + +**基本示例**:移动单个文件 +```batch +@echo off +move example.txt D:\Documents\ +pause +``` +说明:执行该命令后,将 example.txt 文件从当前目录移动到 D:\Documents\ 目录。 + +**示例**:移动并重命名文件 +```batch +@echo off +move example.txt example_new.txt +pause +``` +说明:该命令将 example.txt 移动到同一目录并重命名为 example_new.txt。 + +**示例**:移动目录 +```batch +@echo off +move OldFolder D:\NewFolder\ +pause +``` +说明:执行此命令将 OldFolder 目录及其内容移动到 D:\NewFolder\ 目录。 + +**示例**:强制移动文件并覆盖目标文件 +```batch +@echo off +move /y example.txt D:\Documents\ +pause +``` +说明:/y 参数用于在目标文件已存在时不提示用户,而是直接覆盖它。该命令将 example.txt 移动到 D:\Documents\ 目录,若目标文件存在,则会被覆盖。 + +## 5 用户和网络操作 + +### 5-1 用户操作命令 +使用 `net user` 命令可以管理本地用户账户,如创建、删除用户等。 + +**示例**:查看当前用户列表 +```batch +@echo off +net user +pause +``` +说明:执行此命令后,将显示计算机上所有用户账户的列表。 + +### 5-2 用户组操作命令 +使用 net localgroup 命令可以管理本地用户组。 + +**示例**:查看用户组列表 +```batch +@echo off +net localgroup +pause +``` +说明:该命令将列出计算机上的所有本地用户组。 + +### 5-3 主机联通性检测命令 ping +ping 命令用于检测网络连接,检查主机是否可以到达。 +**示例**:检测与百度的连接 +```batch +@echo off +ping www.baidu.com +pause +``` +说明:执行此命令后,将向 www.baidu.com 发送数据包,并显示响应时间及数据包丢失率。 + +### 5-4 网络连接命令 telnet +telnet 命令用于连接到远程主机,可以测试特定端口的连接。 + +**示例**:连接到指定主机的 80 端口 +```batch +@echo off +telnet www.example.com 80 +pause +``` +说明:执行此命令后,将尝试连接到 www.example.com 的 80 端口,适合测试 HTTP 连接。 + +### 5-5 网络路由信息命令 +使用 `tracert` 命令可以跟踪数据包到达目标主机的路径,并显示经过的路由器。 + +**基本示例**:跟踪到指定网站的路径 +```batch +@echo off +tracert www.baidu.com +pause +``` +说明:执行此命令后,将显示从本地计算机到 www.baidu.com 的数据包经过的每一个路由器的 IP 地址和响应时间。这有助于网络故障排除,了解数据包的传输路径。 + +**示例**:跟踪到特定 IP 地址的路径 +```batch +@echo off +tracert 192.168.1.1 +pause +``` +说明:该命令将跟踪数据包到达 192.168.1.1 的路径,通常用于检测局域网中的设备。 + +**示例**:限制最大跳数 +```batch +@echo off +tracert -h 5 www.baidu.com +pause +``` +说明:-h 参数用于设置最大跳数,此命令将跟踪到 www.baidu.com 的路径,最多只经过 5 个路由器。 + +**示例**:输出到文件 +```batch +@echo off +tracert www.baidu.com > tracert_result.txt +pause +``` +说明:该命令将跟踪的结果输出到 tracert_result.txt 文件中,便于后续查看和分析。 + +### 5-6 网络适配器命令 ipconfig +`ipconfig` 命令用于显示和管理计算机的网络适配器配置信息,常用于获取本地 IP 地址、子网掩码和默认网关等信息。 + +**基本示例**:查看网络配置信息 +```batch +@echo off +ipconfig +pause +``` +说明:执行此命令后,将显示当前计算机所有网络适配器的配置信息,包括 IPv4 和 IPv6 地址、子网掩码以及默认网关等。 + +**示例**:查看详细的配置信息 +```batch +@echo off +ipconfig /all +pause +``` +说明:/all 参数将显示所有网络适配器的详细配置信息,包括物理地址(MAC 地址)、DHCP 状态、DNS 服务器等。 + +**示例**:释放 DHCP 地址 +```batch +@echo off +ipconfig /release +pause +``` +说明:该命令将释放当前网络适配器的 DHCP 地址,通常在网络故障排除时使用。 + + +**示例**:更新 DHCP 地址 +```batch +@echo off +ipconfig /renew +pause +``` +说明:/renew 参数用于请求新的 DHCP 地址,适用于当计算机无法连接到网络时。 + +**示例**:显示特定适配器的 IP 配置 +```batch +@echo off +ipconfig | find "IPv4" +pause +``` +说明:该命令将通过管道操作符 | 和 find 命令筛选出包含 IPv4 的行,仅显示 IP 地址的信息。 + +### 5-7 ARP信息命令 +`arp` 命令用于查看和管理 ARP(地址解析协议)缓存,ARP 缓存存储了 IP 地址与其对应的物理地址(MAC 地址)的映射信息。这对于网络故障排除和网络配置非常有用。 + +**基本示例**:查看 ARP 缓存 +```batch +@echo off +arp -a +pause +``` +说明:执行该命令后,将列出本地计算机的 ARP 缓存,包括 IP 地址、物理地址(MAC 地址)和类型(动态或静态)。 + +**示例**:清空 ARP 缓存 +```batch +@echo off +arp -d * +pause +``` +说明:-d 参数用于删除 ARP 缓存中的条目,* 表示删除所有条目。清空缓存后,系统在下次访问时将重新构建 ARP 缓存。 + +**示例**:添加静态 ARP 条目 +```batch +@echo off +arp -s 192.168.1.10 00-1A-2B-3C-4D-5E +pause +``` +说明:-s 参数用于手动添加静态 ARP 条目,将 IP 地址 192.168.1.10 与物理地址 00-1A-2B-3C-4D-5E 关联。此项配置将一直保持,直到计算机重启。 + +**示例**:删除特定的 ARP 条目 +```batch +@echo off +arp -d 192.168.1.10 +pause +``` +说明:该命令将删除与 192.168.1.10 相关的 ARP 条目。这在更新网络设备或故障排除时非常有用。 + +## 6 条件判断与控制结构 + +### 6-1 if-else 结构 +在批处理脚本中,`if` 语句用于执行条件判断,允许根据条件执行不同的命令。 + +**示例**:检查文件是否存在 +```batch +@echo off +set "fileName=test.txt" + +if exist "%fileName%" ( + echo File "%fileName%" exists. +) else ( + echo File "%fileName%" does not exist. +) +pause +``` +说明:使用 if exist 判断指定文件是否存在,根据结果执行不同的输出。 + +### 6-2 判断文件是否存在 exists + +if exist 语句用于检查指定文件或目录是否存在。 + +**示例**:检查目录是否存在 +```batch +@echo off +set "dirName=MyFolder" + +if exist "%dirName%" ( + echo Directory "%dirName%" exists. +) else ( + echo Directory "%dirName%" does not exist. +) +pause +``` + +说明:该命令检查名为 MyFolder 的目录是否存在,并输出相应信息。 + +### 6-3 文件判断删除 + +可以通过 if exist 语句判断文件是否存在并进行删除。 + +**示例**:删除指定文件 +```batch +@echo off +set "fileName=delete_me.txt" + +if exist "%fileName%" ( + del "%fileName%" + echo File "%fileName%" has been deleted. +) else ( + echo File "%fileName%" does not exist, cannot delete. +) +pause +``` +说明:在判断文件是否存在的基础上,如果存在则使用 del 命令删除文件,并输出相应信息。 + +## 7 循环与遍历操作 + +### 7-1 循环遍历文件夹名称 +使用 `for` 命令可以遍历指定目录中的所有子文件夹。这在需要批量处理多个文件夹时非常有用。 + +**基本示例**:遍历当前目录下的所有文件夹 +```batch +@echo off +for /d %%F in (*) do ( + echo Folder: %%F +) +pause +``` +说明:执行此命令后,将列出当前目录下的所有文件夹名称。%%F 是循环变量,表示每个找到的文件夹的名称。 + +**示例**:遍历指定目录下的文件夹 +```batch +@echo off +for /d %%F in (D:\MyFolders\*) do ( + echo Folder: %%F +) +pause +``` +说明:该命令将遍历 D:\MyFolders\ 目录下的所有文件夹,并输出其名称。 + +**示例**:处理文件夹时执行其他操作 +```batch +@echo off +for /d %%F in (*) do ( + echo Processing folder: %%F + cd %%F + rem 在此处添加其他操作 + cd .. +) +pause +``` +说明:该命令将在遍历每个文件夹时切换到该文件夹,并可以在其中执行其他命令(如处理文件)。cd .. 用于返回到上层目录。 + +注意:在批处理文件中使用 %% 符号来表示循环变量,而在命令行直接输入时,应使用 % 符号。 + +### 7-2 遍历文件夹下的文件 +使用 `for` 命令可以遍历指定文件夹中的所有文件,非常适合批量文件操作。 + +**基本示例**:遍历当前目录下的所有文件 +```batch +@echo off +for %%F in (*) do ( + echo File: %%F +) +pause +``` +说明:该命令将列出当前目录下的所有文件名称,%%F 是循环变量,代表每个文件的名称。 + +**示例**:遍历指定目录下的所有文件 +```batch +@echo off +for %%F in (D:\MyFiles\*) do ( + echo File: %%F +) +pause +``` +说明:此命令将遍历 D:\MyFiles\ 目录中的所有文件,并输出每个文件的名称。 + +**示例**:筛选特定类型的文件(如 .txt 文件) +```batch +@echo off +for %%F in (*.txt) do ( + echo Text File: %%F +) +pause +``` +说明:此命令将仅遍历当前目录中的 .txt 文件,并输出其文件名。 + +**示例**:对每个文件执行操作 +```batch +@echo off +for %%F in (*.txt) do ( + echo Processing file: %%F + type %%F + rem 在此处添加其他操作 +) +pause +``` +说明:该命令将在遍历到的每个 .txt 文件上执行 type 命令(显示文件内容)。可以在其中添加其他命令,以批量处理文件。 + +注意:在批处理文件中使用 %% 符号表示循环变量,而在命令行直接输入时,应使用 % 符号。 + +### 7-3 遍历数字操作 +使用 `for /l` 命令可以遍历一系列数字,非常适合需要循环固定次数的情况。 + +**基本示例**:输出从 1 到 5 的数字 +```batch +@echo off +for /l %%N in (1,1,5) do ( + echo Number: %%N +) +pause +``` +说明:for /l %%N in (start, step, end) 用于定义一个数值序列,其中 start 是起始值,step 是步长,end 是结束值。此示例输出从 1 到 5 的数字,每次增加 1。 + +**示例**:输出从 10 到 50,每次增加 10 +```batch +@echo off +for /l %%N in (10,10,50) do ( + echo Number: %%N +) +pause +``` + +说明:此命令将从 10 开始,每次增加 10,输出结果为 10、20、30、40 和 50。 + +示例:输出从 5 到 1 的倒序数字 +```batch +@echo off +for /l %%N in (5,-1,1) do ( + echo Number: %%N +) +pause +``` +说明:此命令将从 5 开始,每次减 1,输出结果为 5、4、3、2 和 1。 + +注意:在批处理文件中使用 %% 符号表示循环变量,而在命令行直接输入时,应使用 % 符号。 + +### 7-4 遍历文件内容操作 +使用 `for /f` 命令可以逐行遍历文件内容,适用于读取和处理文本文件中的每一行数据。 + +**基本示例**:读取 `example.txt` 文件中的每一行 +```batch +@echo off +for /f "delims=" %%L in (example.txt) do ( + echo Line: %%L +) +pause +``` +说明:for /f "delims=" %%L in (filename) 用于逐行读取文件中的内容。delims= 参数表示不使用分隔符,以便读取整行内容。 + +**示例**:读取文件并按空格分隔每个单词 +```batch +@echo off +for /f "tokens=1,2 delims= " %%A in (example.txt) do ( + echo First Word: %%A, Second Word: %%B +) +pause +``` +说明:tokens=1,2 用于将每行按空格分隔成多个部分,%%A 表示第一部分,%%B 表示第二部分。 + +**示例**:读取文件并忽略空行与注释行 +```batch +@echo off +for /f "usebackq tokens=* eol=#" %%L in ("example.txt") do ( + echo Line: %%L +) +pause +``` +说明:usebackq 允许文件名使用引号,eol=# 设置注释行起始符号为 #。此命令将忽略以 # 开头的行和空行。 + +注意:在批处理文件中使用 %% 符号表示循环变量,而在命令行直接输入时,应使用 % 符号。 + +## 8 目录重复新建操作 + +### 8-1 目录重复新建代码分析 +在批处理脚本中,可能需要确保某个目录不存在后再新建,避免重复创建。 + +**示例**:检查并创建目录 +```batch +@echo off +set "dirName=NewFolder" + +if not exist "%dirName%" ( + mkdir "%dirName%" + echo Folder "%dirName%" has been created. +) else ( + echo Folder "%dirName%" already exists. +) +pause +``` +说明:if not exist 用于判断目录是否存在。如果 dirName 指定的文件夹不存在,则使用 mkdir 创建该文件夹;否则,输出该文件夹已存在的信息。 + +**示例**:批量创建多个文件夹,避免重复 +```batch +@echo off +for %%D in (Folder1 Folder2 Folder3) do ( + if not exist "%%D" ( + mkdir "%%D" + echo Folder "%%D" has been created. + ) else ( + echo Folder "%%D" already exists. + ) +) +pause +``` +说明:此命令将依次检查 Folder1、Folder2 和 Folder3 是否存在,如果不存在则创建,已存在则输出信息。for 循环用于批量处理多个文件夹。 + +**示例**:基于日期创建文件夹 +```batch +@echo off +set "dateFolder=%date:/=-%" + +if not exist "%dateFolder%" ( + mkdir "%dateFolder%" + echo Folder "%dateFolder%" has been created. +) else ( + echo Folder "%dateFolder%" already exists. +) +pause +``` + +说明:此命令将以当前日期命名创建文件夹,例如 2023-12-31,避免重复创建每日文件夹。 + +## 9 计算机信息展示与交互操作 + +### 9-1 计算机信息展示 +使用批处理命令可以显示计算机的基本信息,包括系统信息、IP 配置等内容。 + +**示例**:显示系统信息 +```batch +@echo off +systeminfo +pause +``` +说明:systeminfo 命令可以显示详细的系统信息,包括操作系统版本、内存、网络配置、安装日期等。 + +**示例**:显示 IP 配置信息 +```batch +@echo off +ipconfig +pause +``` +说明:ipconfig 命令显示网络适配器的 IP 地址、子网掩码、默认网关等网络配置信息,便于快速查看计算机的网络配置。 +### 9-2 交互操作介绍 +批处理脚本可以与用户进行简单的交互,例如提示用户输入信息并根据输入执行相应操作。 + +**示例**:让用户输入名称并输出欢迎信息 +```batch +@echo off +set /p name=Please enter your name: +echo Welcome, %name%! +pause +``` +说明:set /p 命令用于从用户输入获取数据,并将输入内容存储在变量 name 中,随后输出欢迎信息。 + +**示例**:让用户选择继续或退出 + +```batch +@echo off +choice /m "Do you want to continue?" +if %errorlevel%==1 ( + echo You chose to continue. +) else ( + echo You chose to exit. +) +pause +``` +说明:choice /m 命令创建一个选择提示,%errorlevel% 用于判断用户的选择(1 表示继续,2 表示退出)。该示例根据用户的选择执行不同的操作。 + +### 9-3 计划执行操作 +使用 `timeout` 命令可以设置批处理脚本的延迟执行,从而模拟简单的定时任务。 + +**示例**:延迟 10 秒后执行命令 +```batch +@echo off +echo Waiting for 10 seconds... +timeout /t 10 +echo 10 seconds have passed. +pause +``` +说明:timeout /t 10 命令将脚本暂停 10 秒后继续执行,适合设置短暂的时间延迟。可以使用 /nobreak 参数防止用户按键打断延迟过程。 + +**示例**:设置特定时间执行命令 +```batch +@echo off +echo The command will run at a specific time... +at 12:00 echo This is a scheduled task. +pause +``` +说明:at 命令用于设置在特定时间执行某一任务(此命令在部分 Windows 版本可能不再支持,建议使用 schtasks 替代)。 + +### 9-4 Bat 批处理脚本转 Exe 程序介绍 +可以通过第三方工具将 `.bat` 文件转换为 `.exe` 可执行程序,使其便于分发和运行,并保护脚本内容。 + +**常见工具**: +1. **Bat to Exe Converter**:简单易用的图形界面工具,适合快速将 `.bat` 文件转换为 `.exe` 文件。 +2. **Advanced BAT to EXE Converter**:提供丰富的选项,包括设置图标、加密脚本内容、隐藏运行窗口等。 + +**使用优势**: +- 将 `.bat` 文件转换为 `.exe` 可执行文件后,脚本的源代码将不再直接暴露,适合需要保护内容的场合。 +- 转换后的文件便于在用户计算机上直接运行,无需依赖批处理环境。 + +**注意**:转换为 `.exe` 后的文件可能会丧失部分批处理的灵活性,适用于分发和执行频率较高的脚本。 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/00_02_150_linux_commands.md b/mover/lizhecome/notes/00_02_150_linux_commands.md new file mode 100644 index 000000000..8ff87f8eb --- /dev/null +++ b/mover/lizhecome/notes/00_02_150_linux_commands.md @@ -0,0 +1,316 @@ +# 速学150个Linux常用命令 - 学习笔记 + +## 基础知识介绍 + +### 获取Linux环境的几种常见方式 +- **VMware虚拟机安装Linux操作系统**:适合本地测试和开发,提供模拟的Linux环境。 +- **终端工具MobaXterm的使用**:一体化的终端工具,支持多种协议(SSH、SFTP等),便于远程连接Linux系统。 +- **文件传输工具WinSCP的使用**:图形化的文件传输工具,适用于Windows和Linux系统之间的文件传输。 + +### Linux目录结构介绍 +- 根目录 `/`:系统根目录,所有文件和目录的起始点。 +- `/bin`:基本二进制可执行文件,如常用命令`ls`、`cat`等。 +- `/etc`:系统配置文件目录。 +- `/home`:普通用户的主目录。 +- `/var`:日志文件和动态数据文件存放的目录。 +- `/tmp`:临时文件目录。 +- `/usr`:包含用户应用程序和文件。 + +### Linux系统文件或目录颜色的含义 +- **蓝色**:目录 +- **绿色**:可执行文件 +- **红色**:压缩文件 +- **浅蓝色**:链接文件 +- **黄色**:设备文件 + +### Linux系统常用终端快捷键 +- **Ctrl + C**:终止当前命令执行。 +- **Ctrl + Z**:将当前命令放入后台并暂停(使用`fg`恢复)。 +- **Ctrl + D**:退出终端或结束输入。 +- **Ctrl + L**:清屏,相当于`clear`命令。 +- **Ctrl + A**:将光标移动到行首。 +- **Ctrl + E**:将光标移动到行尾。 +- **Ctrl + U**:删除光标前的所有内容。 +- **Ctrl + K**:删除光标后的所有内容。 +- **Ctrl + W**:删除光标前的一个单词。 +- **Ctrl + Y**:粘贴(恢复最后一次被删除的文本)。 +- **Ctrl + R**:反向搜索历史命令。 +- **Ctrl + P**:显示上一条历史命令。 +- **Ctrl + N**:显示下一条历史命令。 +- **Alt + .**:粘贴上一个命令的最后一个参数。 +- **Tab**:自动补全命令、文件或目录名。 + +- **Shift + PgUp**:向上滚动终端内容。 +- **Shift + PgDn**:向下滚动终端内容。 +- **!!**:执行上一条命令。 +- **!n**:执行历史记录中第`n`条命令(使用`history`查看编号)。 + +### Tab键的妙用 +在 Linux 终端中,**Tab 键**有以下几个常用的用途: + +1. **命令或文件名自动补全**: +- 输入命令或文件名的开头部分后,按 `Tab` 键,系统会自动补全(如果该部分是唯一的)。 +- 如果有多个可能的补全项,按两次 `Tab`,系统会列出所有匹配项供选择。 + +示例: +```bash +# 输入 "cd Do" 后按 Tab,系统会自动补全目录名 "Documents"(如果唯一) +cd Do # 自动补全为 "cd Documents" +``` +2. 路径补全: +- 在输入文件或目录路径时,Tab 键会尝试自动补全路径。 +- 若路径中有多层嵌套目录,Tab 可以逐层补全。 +```bash +# 输入 "cd /ho" 后按 Tab,系统会补全为 "/home"。 +cd /ho # 自动补全为 "cd /home" +``` +3. 查看命令选项(部分命令支持): +- 输入部分命令名后按 Tab,可能会显示该命令的所有选项。 +示例: +```bash +# 输入 "git " 后按两次 Tab,系统会列出所有 Git 命令。 +git +``` +这些快捷功能可以大大提高命令行操作的效率,减少输入错误。 + +### 文件权限介绍 + +在 Linux 系统中,文件权限用于控制谁可以访问或操作文件。权限分为 **读取 (r)**、**写入 (w)** 和 **执行 (x)** 三种,每一种权限适用于不同的用户角色。掌握文件权限的管理方式是确保系统安全性和资源合理访问的重要组成部分。 + +#### 文件权限类型 +- **读取 (r)**:允许查看文件内容或列出目录内容。 +- **写入 (w)**:允许修改文件内容、创建或删除文件、修改目录内容等。 +- **执行 (x)**:允许运行文件(对于可执行文件)或进入目录。 + +#### 用户分类 +权限可以为不同类别的用户设置: +- **所有者 (u)**:通常是文件的创建者,可以对其设置完全的读、写、执行权限。 +- **同组用户 (g)**:与所有者同属一个用户组的用户,可以根据权限设定对文件进行访问和操作。 +- **其他用户 (o)**:系统中其他非该文件所有者及其组的用户,权限一般更为严格,通常只允许最低限度的访问权限。 + +#### 权限表示方式 +文件权限可以通过字符或数字形式表示。 + +1. **字符形式**: +- 文件权限通常用 10 个字符表示,第一个字符表示文件类型,`-` 表示普通文件,`d` 表示目录,`l` 表示链接文件。 +- 后续 9 个字符分成三组,每组 3 个字符,依次表示所有者、同组用户、其他用户的权限。每组中 `r` 表示读取,`w` 表示写入,`x` 表示执行。 + +示例: +```bash +drwxr-xr-x +``` +- `d` 表示目录。 +- `rwx` 表示所有者拥有读、写、执行权限。 +- `r-x` 表示同组用户拥有读、执行权限。 +- `r-x` 表示其他用户拥有读、执行权限。 + +2. **数字形式**: +- 权限也可以通过八进制数字表示,其中 `r=4`、`w=2`、`x=1`。将数字相加得到相应的权限组合。 +- 每个用户角色拥有一个三位数字,表示所有者、同组用户和其他用户的权限。 + +示例: +- `755`:所有者拥有读、写、执行权限 (`rwx = 4+2+1 = 7`),同组用户和其他用户拥有读、执行权限 (`r-x = 4+0+1 = 5`)。 +- `644`:所有者拥有读、写权限 (`rw- = 4+2+0 = 6`),同组用户和其他用户拥有读取权限 (`r-- = 4+0+0 = 4`)。 + +#### 修改权限的命令 +在 Linux 中,使用 `chmod` 命令可以修改文件或目录的权限。 + +- **数字形式设置权限**: +```bash +chmod 755 filename # 设置文件为所有者 rwx,同组和其他用户 r-x +chmod 644 filename # 设置文件为所有者 rw,同组和其他用户 r +``` +- **字符形式设置权限**: + - u 表示所有者,g 表示同组用户,o 表示其他用户,a 表示全部用户。 + - +添加权限,- 移除权限,= 指定权限。 + ```bash + chmod u+x filename # 给所有者添加执行权限 + chmod g-w filename # 移除同组用户的写权限 + chmod o=r filename # 将其他用户权限设置为只读 + ``` +### 通配符介绍 +- `*`:匹配任意字符。 +- `?`:匹配单个字符。 +- `[abc]`:匹配其中一个字符。 +- `[a-z]`:匹配字符范围。 + +--- + +## 常用命令用法及说明 + +### 帮助命令 +- **man**:显示命令的手册页,如`man ls`。 +- **info**:显示命令的GNU info文档,如`info ls`。 +- **whatis**:显示命令的简短描述,如`whatis ls`。 + +### 文件和目录操作 +- **touch**:创建空文件或修改文件的时间戳,如`touch newfile.txt`。 +- **mkdir**:创建目录,如`mkdir newdir`。 +- **rm**:删除文件或目录,如`rm file.txt`,`rm -r dir`。 +- **rmdir**:删除空目录,如`rmdir emptydir`。 +- **mv**:移动或重命名文件或目录,如`mv oldname newname`,`mv file.txt /newdir/`。 +- **cp**:复制文件或目录,如`cp file.txt /newdir/`,`cp -r dir /newdir/`。 +- **cd**:切换目录,如`cd /newdir`。 +- **pwd**:显示当前工作目录。 +- **ls**:列出目录内容,如`ls -l`显示详细信息。 +- **tree**:以树状结构显示目录内容,如`tree`。 +- **stat**:显示文件或文件系统的状态信息,如`stat file.txt`。 +- **rename**:批量重命名文件,如`rename 's/old/new/' *.txt`。 +- **basename**:从完整路径中提取文件名,如`basename /path/to/file.txt`。 +- **dirname**:从完整路径中提取目录部分,如`dirname /path/to/file.txt`。 +- **chattr/lsattr**:修改/查看文件属性,如`chattr +i file.txt`,`lsattr file.txt`。 +- **file**:识别文件类型,如`file file.txt`。 +- **md5sum**:生成和校验文件的md5值,如`md5sum file.txt`。 + +### 查找命令 +- **find**:查找目录或文件,如`find / -name file.txt`。 +- **which**:查找命令的位置,如`which ls`。 +- **whereis**:查找命令、源代码和手册页的位置,如`whereis ls`。 +- **locate**:查找符合条件的文档,如`locate file.txt`(需先运行`updatedb`更新数据库)。 + +### 文件权限和用户管理 +- **chown**:改变文件所属用户或组,如`chown user:group file.txt`。 +- **chgrp**:改变文件或目录所属组,如`chgrp group file.txt`。 +- **chmod**:改变用户对文件或目录的权限,如`chmod u+x file.txt`,`chmod 755 file.txt`。 + +### 文本处理 +- **grep**:文本搜索工具,如`grep 'pattern' file.txt`。 +- **egrep**:文件内查找指定字符串命令(同`grep -E`),如`egrep 'pattern' file.txt`。 +- **cat**:查看文本内容,如`cat file.txt`。 +- **more**:逐页阅读文本,如`more file.txt`。 +- **less**:分页查看文本内容,如`less file.txt`。 +- **head**:查看文件开头内容,如`head -n 10 file.txt`。 +- **tail**:查看文本尾部内容,如`tail -n 10 file.txt`。 +- **tac**:反向显示文本内容,如`tac file.txt`。 +- **nl**:统计文件行号,如`nl file.txt`。 +- **wc**:统计文本字数信息,如`wc -l file.txt`。 +- **split**:文件切割,如`split -l 100 file.txt part_`。 +- **cut**:文本截取,如`cut -d: -f1 /etc/passwd`。 +- **paste**:文件合并,如`paste file1.txt file2.txt`。 +- **sort**:文本内容排序,如`sort file.txt`。 +- **uniq**:去除重复行,如`uniq file.txt`。 +- **diff/patch**:比较差异/打补丁,如`diff file1.txt file2.txt`,`patch file1.txt < patchfile`。 +- **join**:连接两个文件,如`join file1.txt file2.txt`。 +- **tr**:字符转换,如`tr 'a-z' 'A-Z' < file.txt`。 +- **sed**:流编辑器,如`sed 's/old/new/' file.txt`。 +- **awk**:编程语言,用于文本处理,如`awk '{print $1}' file.txt`。 + +### 系统监控和管理 +- **du**:显示目录或文件大小,如`du -sh /dir`。 +- **df**:磁盘使用情况,如`df -h`。 +- **sync**:数据同步,如`sync`。 +- **mount/umount**:挂载/卸载文件系统,如`mount /dev/sda1 /mnt`,`umount /mnt`。 +- **dd**:拷备及转换文件,如`dd if=/dev/zero of=file.txt bs=1M count=1`。 +- **tar**:打包解压文件,如`tar -czvf archive.tar.gz /dir`,`tar -xzvf archive.tar.gz`。 +- **zip/unzip**:压缩/解压文件,如`zip archive.zip file.txt`,`unzip archive.zip`。 +- **gzip/gunzip**:压缩/解压文件,如`gzip file.txt`,`gunzip file.txt.gz`。 +- **uname**:显示系统信息,如`uname -a`。 +- **hostname**:显示或设置主机名,如`hostname`,`hostname newhostname`。 +- **dmesg**:显示开机信息,如`dmesg | less`。 +- **uptime**:查看系统负载,如`uptime`。 +- **free**:显示内存使用情况,如`free -h`。 +- **ulimit**:限制系统资源,如`ulimit -n 2048`。 +- **init**:切换系统运行级别,如`init 3`。 +- **service**:控制系统服务,如`service httpd start`。 +- **vmstat**:显示虚拟内存状态,如`vmstat 1`(每秒更新一次)。 +- **iostat**:监视系统输入输出设备和CPU的使用情况,如`iostat -x 1`(详细模式,每秒更新一次)。 +- **ipcs**:显示进程间通信设备状态,如`ipcs -a`(显示所有IPC信息)。 +- **ipcrm**:删除指定ipc资源,如`ipcrm -m shm_id`(删除消息队列)。 +- **route**:显示并设置IP路由表,如`route -n`(以数字形式显示路由表)。 + +### 网络工具 + +- **ping**:网络连通测试命令,如`ping www.example.com`。 +- **traceroute**:追踪数据包传输路径命令,如`traceroute www.example.com`。 +- **ifconfig**:显示或设置网络设备参数命令,如`ifconfig eth0 192.168.1.10`(设置IP地址)。 +- **ifup_ifdown**:激活或禁用网络接口命令,如`ifup eth0`,`ifdown eth0`。 +- **netstat**:查看网络相关信息命令,如`netstat -tuln`(显示监听中的TCP和UDP端口)。 +- **ss**:显示活动套接字信息命令,如`ss -tuln`(与netstat类似,但更快)。 +- **telnet**:远程登陆服务器命令,如`telnet host port`。 +- **ssh**:安全连接服务器命令,如`ssh user@host`。 +- **ftp**:文件传输命令,如`ftp ftp.example.com`。 +- **sftp**:交互式文件传输程序,如`sftp user@host`。 +- **lftp**:下载工具,支持多种协议,如`lftp ftp://ftp.example.com`。 +- **wget**:网络下载工具,如`wget http://example.com/file.zip`。 +- **scp**:远程文件拷贝命令,如`scp user@remote:/path/to/file /local/path`。 +- **curl**:远程数据传输工具,支持多种协议,如`curl -O http://example.com/file.zip`。 +- **host**:分析域名查询工具,如`host www.example.com`。 +- **tcpdump**:数据抓包工具,如`tcpdump -i eth0 port 80`(抓取80端口的数据包)。 +- **nc**:网络检测工具,如`nc -zv host port`(扫描端口)。 + +### 用户和组管理 + +- **useradd**:创建用户命令,如`useradd username`。 +- **adduser**:用户相关命令(某些Linux发行版中useradd的别名)。 +- **passwd**:修改用户密码命令,如`passwd username`。 +- **userdel**:删除用户命令,如`userdel username`。 +- **su**:切换用户命令,如`su - username`。 +- **sudo**:以其他身份来执行命令,如`sudo command`。 +- **id**:显示用户id信息命令,如`id username`。 +- **usermod**:修改用户信息命令,如`usermod -aG groupname username`(添加用户到组)。 +- **groups**:显示用户所属的组。 +- **groupadd**:用户组相关命令,用于创建新组,如`groupadd groupname`。 +- **groupdel**:用户组相关命令,用于删除组,如`groupdel groupname`。 + +### 用户信息 + +- **whoami**:显示当前用户名。 +- **who**:显示当前登录的用户信息。 +- **w**:显示当前登录用户及其活动。 +- **last**:显示最近登录的用户信息。 +- **users**:显示当前登录的用户列表。 + +### 进程管理 + +- **top**:实时显示系统进程信息。 +- **ps**:进程管理命令,如`ps aux`(显示所有进程)。 +- **pstree**:以树状图显示进程信息。 +- **pgrep**:查找与指定条件匹配的进程ID。 +- **lsof**:列出打开的文件(包括网络套接字),如`lsof -i :80`(列出使用80端口的进程)。 +- **jobs_bg_fg**:管理后台作业(bg将作业放入后台,fg将作业调回前台)。 +- **kill**:终止进程,如`kill pid`。 +- **killall**:根据进程名终止所有匹配的进程。 +- **nice_renice**:调整进程的优先级,如`nice -n 10 command`(以低优先级运行命令),`renice 5 -p pid`(调整已运行进程的优先级)。 +- **nohup**:使进程在用户注销后继续运行,如`nohup command &`。 + +### 包管理 + +- **apt**:Debian及其衍生版(如Ubuntu)的包管理器,如`apt update`,`apt install package`。 +- **apt-get**:apt的旧版本命令,功能类似。 + +### 环境变量和终端操作 + +- **export**:设置或显示环境变量,如`export VAR_NAME=value`。 +- **source**:读取并执行指定文件中的命令,如`source ~/.bashrc`。 +- **set_unset**:设置或取消环境变量(set用于显示和设置环境变量,unset用于取消环境变量)。 +- **echo**:输出字符串或变量的值到终端。 +- **printf**:格式化输出字符串到终端。 +- **clear**:清除终端屏幕。 +- **history**:显示命令历史记录。 +- **login_logout**:登录和注销命令(login用于登录,logout用于注销)。 +- **exit**:退出当前shell或终端会话。 + +### 命令相关 + +- **xargs**:构建并执行命令行,如`echo "file1 file2" | xargs cat`。 +- **exec**:用指定命令替换当前shell进程,如`exec ls`。 +- **alias_unalias**:设置或取消命令别名,如`alias ll='ls -l'`,`unalias ll`。 +- **type**:显示命令的类型(如内置命令、外部命令等)。 + +### 时间相关 + +- **date**:显示或设置系统日期和时间,如`date`,`date -s "2023-04-01 12:00:00"`。 +- **cal**:显示日历,如`cal 2023`。 +- **crontab**:编辑用户的cron作业表,用于定时执行任务。 +- **at_atq_atrm**:at命令用于在指定时间执行一次性任务,atq显示待执行的任务,atrm删除已安排的任务。 +- **time**:测量命令的执行时间,如`time ls`。 +- **watch**:周期性地执行命令并全屏显示结果,如`watch -n 2 ls`(每2秒执行一次ls)。 + +### 小工具 + +- **bc**:任意精度计算器语言,如`echo "scale=2; 3/1" | bc`(计算3除以1并保留两位小数)。 +- **ln**:创建硬链接或符号链接,如`ln file link`(创建硬链接),`ln -s file symlink`(创建符号链接)。 +- **shutdown_halt_poweroff_reboot**:系统关机、停机、断电或重启命令,如`shutdown -h now`(立即关机),`halt`(停机,某些系统中已弃用),`poweroff`(断电),`reboot`(重启)。 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/00_03_vscode_learning.md b/mover/lizhecome/notes/00_03_vscode_learning.md new file mode 100644 index 000000000..a517e1dbd --- /dev/null +++ b/mover/lizhecome/notes/00_03_vscode_learning.md @@ -0,0 +1,100 @@ +# VS Code 零基础学习笔记 + +## 1. 安装和认识界面 + +- **下载 VS Code**: [VS Code 官网](https://code.visualstudio.com/) +- **安装过程**:选择系统对应的安装包并完成安装。 +- **界面介绍**: + - **侧边栏**:包含资源管理器、搜索、源代码管理、调试、扩展等工具。 + - **编辑区**:用于代码编写,支持多文件多标签打开。 + - **状态栏**:显示文件编码、语言模式、行列号、Git 分支等状态信息。 + - **终端窗口**:内嵌终端,便于直接运行代码和管理项目。 + +## 2. 更改语言 & 了解菜单内容 + +- **语言切换**: + - 进入设置(`File > Preferences > Settings`),选择语言选项。 + - 也可通过安装语言包进行界面语言切换,如中文扩展包。 +- **菜单内容**: + - **文件 (File)**:创建新文件、打开文件夹、保存项目。 + - **编辑 (Edit)**:查找、替换、格式化代码。 + - **视图 (View)**:控制界面显示内容(例如侧边栏、调试窗口)。 + - **终端 (Terminal)**:打开/关闭集成终端,支持多终端管理。 + +## 3. 交互式演练场 + +- 使用 `Help > Interactive Playground` 进入 VS Code 的交互式学习场景。 +- 该模块提供基础功能演练,如代码片段、快速修复、多光标等操作。 + +## 4. 我所倾向的 VS Code 基础配置 + +- **主题**:选择护眼的主题(如“Solarized Dark”或“Monokai”)。 +- **字体**:推荐字体设置 `Fira Code` 或 `Cascadia Code`,并启用连字功能。 +- **自动保存**:进入 `File > Preferences > Settings` 中开启“Auto Save”选项,减少忘记保存的风险。 +- **代码格式化**:设置默认格式化工具(如 Prettier),保持代码整洁。 +- **快捷键**:熟悉常用快捷键,如 `Ctrl + P` (快速打开文件)、`Ctrl + Shift + P` (命令面板)。 + +## 5. 前端开发效率利器 Emmet 的使用和配置 + +- **Emmet** 是内置在 VS Code 中的快速 HTML/CSS 编写工具。 +- **配置**: + - 进入设置 (Settings),搜索“Emmet”,进行偏好配置。 + - 如想为 JSX 启用 Emmet,需在 `settings.json` 中添加: + ```json + "emmet.includeLanguages": { + "javascript": "javascriptreact" + } + ``` +- **常用 Emmet 缩写**: + - `div.container>ul>li.item*5` → 自动生成包含 5 个 `li` 的 `div` 和 `ul` 结构。 + +## 6. 插件 - Live Server + +- **安装方法**:打开扩展 (Extensions) 面板,搜索 `Live Server` 并安装。 +- **功能**:实时预览 HTML 页面,更改代码后会自动刷新浏览器。 +- **使用**:右键 HTML 文件并选择“Open with Live Server”。 + +## 7. 从源代码编译属于自己的 VS Code + +- 从 GitHub 官方仓库克隆 VS Code 源代码。 +- 使用 Node.js 和 Yarn 进行项目依赖安装与打包。 +- **步骤简述**: + 1. 克隆仓库 `git clone https://github.com/microsoft/vscode.git` + 2. 进入目录并运行 `yarn` 安装依赖。 + 3. 使用 `yarn watch` 进行构建,完成后运行 `yarn run electron` 启动。 + +## 8. Emmet 缩写的展开上限 + +- Emmet 默认展开上限为 100 个元素,可在设置中调整 `emmet.variables.max_repeat` 值。 + +## 9. 灵活运用代码片段,代码输入效率翻倍 + +- **使用代码片段**:VS Code 提供多种预设代码片段。 +- **自定义代码片段**: + - 进入 `File > Preferences > User Snippets` 创建自定义代码片段。 + - 定义格式如下: + ```json + "Print to console": { + "prefix": "log", + "body": ["console.log('$1');"], + "description": "Log output to console" + } + ``` + +## 10. 必须掌握的多光标功能 + +- **多光标添加**: + - `Alt + Click` (Windows) 或 `Option + Click` (Mac) 可添加多光标。 + - 使用 `Ctrl + D` 快速选中多个相同单词。 +- **多行编辑**:按住 `Shift + Alt + Down/Up` 创建多行光标,实现多行同步编辑。 + +## 11. 鼠标操作的技巧 + +- **快速选择相同词**:双击单词,并按 `Ctrl + D` (Win) 或 `Cmd + D` (Mac) 继续选择相同单词。 +- **代码折叠**:点击代码行号左侧的小箭头可折叠/展开代码块。 +- **快速关闭标签**:在标签上点击鼠标中键,快速关闭该标签。 + +通过以上内容的学习和设置,相信大家可以更高效地使用 VS Code! + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/00_04_git_github_learning.md b/mover/lizhecome/notes/00_04_git_github_learning.md new file mode 100644 index 000000000..e1c144a07 --- /dev/null +++ b/mover/lizhecome/notes/00_04_git_github_learning.md @@ -0,0 +1,264 @@ +# Git 入门到精通全套教程 - 学习笔记 + +## 目录 + +1. [Git 官网介绍](#git-官网介绍) +2. [概述](#概述) + - [版本控制介绍](#版本控制介绍) + - [分布式版本控制 VS 集中式版本控制](#分布式版本控制-vs-集中式版本控制) + - [发展历史](#发展历史) + - [Git 工作机制与代码托管平台](#git-工作机制与代码托管平台) +3. [Git 安装](#git-安装) +4. [Git 基本命令](#git-基本命令) + - [配置用户信息](#配置用户信息) + - [初始化仓库](#初始化仓库) + - [查看仓库状态](#查看仓库状态) + - [暂存、提交与版本管理](#暂存-提交与版本管理) +5. [分支管理](#分支管理) + - [分支的创建与切换](#分支的创建与切换) + - [合并分支与解决冲突](#合并分支与解决冲突) +6. [团队协作](#团队协作) +7. [GitHub 集成](#github-集成) +8. [IDEA 集成](#idea-集成) +9. [码云与 GitLab](#码云与-gitlab) +10. [总结](#总结) + +--- + +## Git 官网介绍 + +Git 是一款免费的分布式版本控制系统,支持在本地和远程同步版本变更。它最初由 Linus Torvalds 创建,适合各类协作项目的管理。Git 的官方网站为 [https://git-scm.com](https://git-scm.com)。 + +--- + +## 概述 + +### 版本控制介绍 + +版本控制系统(VCS)可以记录文件随时间的变化历史,使团队成员能够回溯项目任意版本,特别是在多人协作时有助于管理代码变化。 + +### 分布式版本控制 VS 集中式版本控制 + +- **集中式版本控制**:依赖中央服务器存储所有代码版本,用户必须连入服务器才能协作。 +- **分布式版本控制**:每个开发者拥有完整的仓库副本,可以在本地管理、更新和回退版本。 + +### 发展历史 + +Git 由 Linus Torvalds 于 2005 年发布,随着开源软件的发展,Git 逐渐成为开源社区的标准。 + +### Git 工作机制与代码托管平台 + +Git 使用快照记录文件,支持快速创建和管理分支。代码托管平台(如 GitHub、Gitee、GitLab)提供便捷的仓库托管、协作功能。 + +--- + +## Git 安装 + +1. 在官网下载安装:[https://git-scm.com/downloads](https://git-scm.com/downloads) +2. 使用命令行验证安装: + + ```bash + git --version + ``` + +3. 配置用户信息: + + ```bash + git config --global user.name "Your Name" + git config --global user.email "your.email@example.com" + ``` + +--- + +## Git 基本命令 + +### 配置用户信息 + +```bash +git config --global user.name "Your Name" +git config --global user.email "your.email@example.com" +``` + +可通过 `--global` 参数设置全局用户名和邮箱。 + +### 初始化仓库 + +在项目根目录下初始化 Git 仓库: + +```bash +git init +``` + +初始化后,Git 会创建一个 `.git` 文件夹,用于存储本地库的所有信息。 + +### 查看仓库状态 + +查看当前工作区与暂存区状态,包括文件的改动、添加、删除等: + +```bash +git status +``` + +### 暂存、提交与版本管理 + +1. 添加文件到暂存区: + + ```bash + git add + git add . # 添加所有改动 + ``` + +2. 提交到本地库: + + ```bash + git commit -m "提交描述信息" + ``` + +3. 查看提交日志: + + ```bash + git log # 显示详细的提交日志 + git log --oneline # 简略显示 + ``` + +4. 查看提交的差异: + + ```bash + git diff # 显示工作区与暂存区的差异 + git diff --staged # 显示暂存区与本地库的差异 + ``` + +--- + +## 分支管理 + +### 分支的创建与切换 + +分支使得开发多个功能独立进行,避免主分支的代码冲突和不稳定。 + +1. 查看当前分支: + + ```bash + git branch + ``` + +2. 创建分支: + + ```bash + git branch + ``` + +3. 切换分支: + + ```bash + git checkout + ``` + +4. 创建并切换新分支: + + ```bash + git checkout -b + ``` + +### 合并分支与解决冲突 + +1. 合并分支: + + 切换到主分支并合并: + + ```bash + git checkout main + git merge + ``` + +2. 解决冲突: + + Git 会标记冲突位置,手动编辑并解决冲突后: + + ```bash + git add + git commit -m "解决冲突描述" + ``` + +--- + +## 团队协作 + +Git 提供分布式版本控制,适用于不同场景的协作。 + +### 团队内协作 + +1. 创建远程仓库并推送: + + ```bash + git remote add origin + git push -u origin main + ``` + +2. 拉取远程仓库更新: + + ```bash + git pull origin main + ``` + +### 跨团队协作 + +1. Fork 项目:在 GitHub 上 fork 他人的项目,建立自己版本的副本。 +2. 提交 Pull Request:在自己的项目仓库修改后,发起 Pull Request 请求,将代码合并回原始项目。 + +--- + +## GitHub 集成 + +1. 创建远程仓库并设置别名: + + ```bash + git remote add origin + ``` + +2. 推送代码: + + ```bash + git push -u origin main + ``` + +3. 克隆远程仓库: + + ```bash + git clone + ``` + +4. SSH 免密登录: + + ```bash + ssh-keygen -t rsa -C "your.email@example.com" + ``` + + 将生成的公钥添加到 GitHub 账户中。 + +--- + +## IDEA 集成 + +1. 设置 Git:在 IDEA 设置中指定 Git 安装路径。 +2. 创建本地仓库:在 IDEA 中点击 `Git > Enable Version Control Integration` 以初始化本地仓库。 +3. 添加和提交:右键文件或项目,选择 `Git > Commit` 提交变更。 +4. 分支管理:在 IDEA 的 Git 工具窗口中可以创建、切换、合并分支。 +5. 推送与拉取:在 IDEA 中可以方便地将项目推送到远程仓库或拉取更新。 + +--- + +## 码云与 GitLab + +### 码云 + +1. 注册并创建远程仓库:Gitee 是国内常用的代码托管平台。 +2. IDEA 集成 Gitee:在 IDEA 中通过 `VCS > Gitee` 集成管理。 + +### GitLab + +1. 安装 GitLab:GitLab 支持自建服务器,适合企业内部使用。 +2. 创建仓库并设置访问权限:管理员可以为用户和团队分配仓库权限,满足内网环境下的协作需求。 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/06_move_swap.md b/mover/lizhecome/notes/06_move_swap.md new file mode 100644 index 000000000..31665b6bf --- /dev/null +++ b/mover/lizhecome/notes/06_move_swap.md @@ -0,0 +1,175 @@ +# (六)Move实现简单的代币swap功能 +## 在开始之前 +本系列文章将深入浅出的全面讲解Move语言。 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH.png) +### 新的任务 + +大家好,又来做HOH水分子社区的学习任务啦,今天我们来聊聊用 Move 语言实现一个非常简单的 swap 功能,也就是两种代币之间的兑换。这个功能类似于我们在生活中把美元换成人民币,只不过在这里,我们要在两种虚拟代币——LIZHECOME_COIN 和 LIZHECOME_FAUCET_COIN 之间进行转换。 + +这篇笔记会带你逐步了解代码是怎么实现的,并帮助大家理解背后的逻辑。 + +### 模块总览 + +#### 1. 模块介绍 + +首先,我们要创建一个模块,名字叫 swap_lizhecome,就像是我们在编写一个简单的“代币兑换所”。 + +```move +module swap_lizhecome::swap_lizhecome; +``` + +#### 2. 引入需要的工具 + +接下来,我们需要引入一些功能模块,就像是搭积木前先找好需要的零件。 + +```move +use faucetcoin::lizhecome_faucet_coin::LIZHECOME_FAUCET_COIN; +use mycoin::lizhecome_coin::LIZHECOME_COIN; +use sui::balance::{Self, Balance}; +use sui::transfer::{transfer, share_object, public_transfer}; +use sui::coin::{Self, Coin}; +``` + +- faucetcoin 和 mycoin:这是我们要操作的两种代币。 +- sui::balance 和 sui::coin:这些模块帮我们处理代币的余额和具体操作。 +- sui::transfer:用于代币的转移,确保代币可以安全地从一个账户转到另一个账户。 + +#### 3. 定义银行和管理员 + +我们需要两个结构体,一个是 AdminCap,用来表示管理员的权限;另一个是 Bank,它就像我们的银行,用来存储代币。 + +**管理员权限 AdminCap** + +```move +public struct AdminCap has key { + id: UID +} +``` + +- AdminCap:这个结构体只有一个 id,用于标识管理员身份。管理员可以做一些普通用户不能做的事情,比如存取款操作。 + +**银行结构体 Bank** + +```move +public struct Bank has key { + id: UID, + lizhecome: Balance, + lizhecome_faucet: Balance +} +``` + +- Bank:这个结构体就是银行啦,包含两个余额: + - lizhecome: 存储 LIZHECOME_COIN。 + - lizhecome_faucet: 存储 LIZHECOME_FAUCET_COIN。 + +#### 初始化银行 + +接下来,我们来写一个初始化银行的函数,让银行正式“开门营业”。 + +```move +fun init(ctx: &mut TxContext) { + let bank = Bank { + id: object::new(ctx), + lizhecome: balance::zero(), + lizhecome_faucet: balance::zero() + }; + share_object(bank); + + let admin_cap = AdminCap { id: object::new(ctx) }; + transfer(admin_cap, ctx.sender()); +} +``` + +- 这里我们创建了一个 Bank 对象,初始化时两种代币的余额都是 0。 +- 接着我们分享这个银行(share_object),意思是让用户都能看到并使用这个银行。 +- 然后我们创建了一个管理员权限(AdminCap)并把它交给调用这个函数的人,也就是“开店老板”拿到钥匙了。 + +#### 存款和取款 + +##### 1. 存款功能 + +我们先来看看如何往银行里存钱(代币)。这部分由两个函数组成,分别是存入 LIZHECOME_COIN 和 LIZHECOME_FAUCET_COIN。 + +```move +public entry fun deposit_lizhecome(_: &AdminCap, bank: &mut Bank, lizhecome: Coin, _: &mut TxContext) { + let lizhecome_balance = coin::into_balance(lizhecome); + balance::join(&mut bank.lizhecome, lizhecome_balance); +} + +public entry fun deposit_lizhecome_faucet(_: &AdminCap, bank: &mut Bank, lizhecome_faucet: Coin, _: &mut TxContext) { + let lizhecome_faucet_balance = coin::into_balance(lizhecome_faucet); + balance::join(&mut bank.lizhecome_faucet, lizhecome_faucet_balance); +} +``` + +- 这两个函数接收用户存入的代币,然后把这些代币加到银行的余额中。 +- 简单理解就是:用户拿代币给银行,银行把这些代币加到自己的库存里。 + +##### 2. 取款功能 + +如果用户想要从银行里取代币,也有两个对应的函数: + +```move +public entry fun withdraw_lizhecome(_: &AdminCap, bank: &mut Bank, amount: u64, ctx: &mut TxContext) { + let lizhecome_balance = balance::split(&mut bank.lizhecome, amount); + let lizhecome = coin::from_balance(lizhecome_balance, ctx); + public_transfer(lizhecome, ctx.sender()); +} + +public entry fun withdraw_lizhecome_faucet(_: &AdminCap, bank: &mut Bank, amount: u64, ctx: &mut TxContext) { + let lizhecome_faucet_balance = balance::split(&mut bank.lizhecome_faucet, amount); + let lizhecome_faucet = coin::from_balance(lizhecome_faucet_balance, ctx); + public_transfer(lizhecome_faucet, ctx.sender()); +} +``` + +- 用户告诉银行要取多少代币,银行从余额中取出相应数量的代币,并转移到用户账户。 +- 这个过程就像从 ATM 取钱,用户输入金额,银行吐出对应的代币。 + +#### 核心功能:代币兑换(swap) + +终于到了重点,代币兑换功能!在这里,用户可以用 LIZHECOME_COIN 换 LIZHECOME_FAUCET_COIN,反之亦然。我们设定的兑换比例是 1:2,也就是 1 LIZHECOME_COIN 能换 2 LIZHECOME_FAUCET_COIN。 + +##### 1. 用 LIZHECOME 换 FAUCET + +```move +public entry fun swap_lizhecome_to_faucet(bank: &mut Bank, lizhecome: Coin, ctx: &mut TxContext) { + let amount = coin::value(&lizhecome); + balance::join(&mut bank.lizhecome, coin::into_balance(lizhecome)); + + let amount_end = amount * 2; + let faucet = balance::split(&mut bank.lizhecome_faucet, amount_end); + public_transfer(coin::from_balance(faucet, ctx), ctx.sender()); +} +``` + +- 用户输入一定数量的 LIZHECOME_COIN,系统计算它的价值,并存入银行。 +- 然后计算用户可以获得的 LIZHECOME_FAUCET_COIN 数量(数量翻倍)。 +- 银行把换算好的 LIZHECOME_FAUCET_COIN 转给用户。 + +##### 2. 用 FAUCET 换 LIZHECOME + +```move +public entry fun swap_faucet_to_lizhecome(bank: &mut Bank, lizhecome_faucet: Coin, ctx: &mut TxContext) { + let amount = coin::value(&lizhecome_faucet); + balance::join(&mut bank.lizhecome_faucet, coin::into_balance(lizhecome_faucet)); + + let amount_end = amount / 2; + let lizhecome = balance::split(&mut bank.lizhecome, amount_end); + public_transfer(coin::from_balance(lizhecome, ctx), ctx.sender()); +} +``` + +- 用户输入一定数量的 LIZHECOME_FAUCET_COIN,系统计算其价值并存入银行。 +- 计算用户可以获得的 LIZHECOME_COIN 数量(数量减半)。 +- 银行把换算好的 LIZHECOME_COIN 转给用户。 + +### 总结 + +通过这个模块,我们轻松实现了: +1. 代币的存款与取款功能。 +2. 两种代币的兑换(swap)功能。 + +这个模块为我们打造了一个简易的“代币兑换所”,让用户可以在两种代币之间自由转换。这样的小功能,在日常的 DeFi 应用中非常实用。学会了这些,你就可以开始构建自己的智能合约,实现更多有趣的金融功能啦! \ No newline at end of file diff --git a/mover/lizhecome/notes/07_move_base_types.md b/mover/lizhecome/notes/07_move_base_types.md new file mode 100644 index 000000000..6a7b09422 --- /dev/null +++ b/mover/lizhecome/notes/07_move_base_types.md @@ -0,0 +1,197 @@ +# (七)Move语言基础数据类型 + +继续学习HOH水分子社区的Move语言开发课程,本次视频讲解的是Move的基础类型。 +在Move语言中,数据类型设计强调安全性和一致性,是开发智能合约时必须掌握的基础。本篇笔记总结了视频中的相关内容,包括变量的定义、数字类型及其表示、浮点数和负数的处理、类型转换、布尔类型、以及地址类型等内容。 + +## 1. 变量的定义与可变性 + +### 1.1 不可变变量 + +在Move中,默认情况下定义的变量是不可变的。这意味着一旦你给变量赋值,之后就不能再修改它的值。 + +```move +public fun example() { + let x: u8 = 10; + // x = 20; // 错误:不可变变量无法修改 +} +``` + +### 1.2 可变变量 + +如果需要创建可变变量,可以使用`mut`关键字。这时变量的值就可以被修改了。 + +```move +public fun example_mutable() { + let mut x: u8 = 10; + x = 20; // 合法:可变变量可以修改 +} +``` + +## 2. 数字类型 + +Move中的数字类型全部为无符号整数,这里列出了所有的数字类型及其取值范围: + +- `u8`:8位无符号整数,范围:0-255。 +- `u16`:16位无符号整数,范围:0-65535。 +- `u32`:32位无符号整数,范围:0-2^32-1。 +- `u64`:64位无符号整数,范围:0-2^64-1。 +- `u128`:128位无符号整数,范围:0-2^128-1。 +- `u256`:256位无符号整数,范围:0-2^256-1。 + +### 2.1 字面量表示 + +Move支持灵活的字面量表示形式,使代码更具可读性: + +- 标准表示:`123`表示十进制整数。 +- 下划线分割:`1_000_000`,用于提高可读性,相当于`1000000`。 +- 十六进制:`0x1A`表示十进制的26。 +- 类型后缀:如`8u8`表示`u8`类型,`1000u64`表示`u64`类型。 + +```move +public fun literals_example() { + let decimal = 123; + let readable = 1_000_000; + let hex = 0x1A; + let small_num: u8 = 8u8; + let large_num: u256 = 1_000_000u256; +} +``` + +### 2.2 类型转换 + +Move支持类型之间的转换,例如将`u8`转换为`u64`: + +```move +public fun conversion_example(x: u8): u64 { + let y: u46 = x as u64; + y +} +``` + +## 3. 浮点数的处理 + +在Move中,没有浮点数(如`f32`、`f64`),主要是为了确保区块链计算的精度和一致性。我们通常使用分数或定点数来替代浮点数。 + +### 3.1 使用定点数替代浮点数 + +以下是用分子和分母实现定点数的示例: + +```move +public fun create_from_rational(numerator: u64, denominator: u64): u64 { + let scaled_numerator = (numerator as u128) << 64; + let scaled_denominator = (denominator as u128) << 32; + assert!(scaled_denominator != 0, 1); // 确保分母不为0 + let quotient = scaled_numerator / scaled_denominator; + quotient as u64 +} +``` + +解释: +- 使用分子和分母来计算定点数,扩大倍数来模拟浮点数精度。 +- `u128`扩展避免计算溢出,位移操作模拟小数点。 + +## 4. 负数的处理 + +Move中没有有符号整数类型(如`i8`、`i64`),所有整数类型都是无符号整数。因此,如果需要处理负数,可以通过位操作来模拟。 + +### 4.1 使用位操作模拟有符号整数 + +对于`u8`(0到255),可以模拟如下: +- `0-127`:视为正数(即0到127)。 +- `128-255`:视为负数(即-128到-1)。 + +```move +module SignHandling { + /// 模拟将`u8`解释为有符号整数 + public fun to_signed_u8(value: u8): u8 { + if (value < 128u8) { + return value; + } else { + return 256u8 - value; + } + } +} +``` + +示例: +- 输入`value = 200u8`时,`to_signed_u8`函数会返回`56`,代表`-56`。 + +## 5. 布尔类型 + +Move中的布尔类型是`bool`,它包含`true`和`false`两个值,常见的逻辑操作有: +- 与:`&&` +- 或:`||` +- 非:`!` + +```move +public fun boolean_example(x: u8, y: u8): bool { + let result = (x > y) && (x < 100); + !result +} +``` + +## 6. 地址类型 + +在Move中,`address`类型用于表示账户地址,通常用于访问区块链上的账户和模块。 + +### 6.1 定义与使用 + +地址类型用16字节的值表示,使用`0x`前缀。例如,`0x1`表示标准库地址。 + +```move +module AddressExample { + public fun print_address(addr: address) { + // 假设存在一个打印函数 + // print!("Address: ", addr); + } + + public fun check_address(addr: address): bool { + addr == @0x1 + } +} +``` + +### 6.2 配置文件中定义地址 + +Move开发环境允许你在`Move.toml`文件中配置常用地址,例如: + +```toml +[addresses] +Std = "0x1" +MyModule = "0x2" +``` + +在代码中可以直接引用这些配置的地址: + +```move +module MyModule::Example { + use Std::Vector; + + public fun example() { + let address = @Std; + // 使用配置文件中的地址 + } +} +``` + +### 6.3 动态传递地址 + +函数可以接收`address`类型作为参数,从而支持更灵活的调用: + +```move +module Transfer { + public fun transfer_funds(sender: address, receiver: address, amount: u64) { + // 实现转账逻辑 + // Balance::withdraw(sender, amount); + // Balance::deposit(receiver, amount); + } +} +``` + +## 总结 + +本文介绍了Move中的基础数据类型和处理方式,从无符号整数到布尔类型,再到地址类型,涵盖了Move的基本编程构建块。Move语言设计上注重安全性和一致性,通过掌握这些基础类型的使用,能够帮助你编写更高效和安全的智能合约。希望这篇笔记对你理解和使用Move语言有所帮助! + + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/08_move_function.md b/mover/lizhecome/notes/08_move_function.md new file mode 100644 index 000000000..7a87d2f95 --- /dev/null +++ b/mover/lizhecome/notes/08_move_function.md @@ -0,0 +1,265 @@ +# (八)Move语言的函数 + +今天继续学习 HOH 水分子社区的视频课程,深入探索了 Move 语言中的函数设计、表达式、控制流和结构方法。函数在 Move 中是实现逻辑的核心,就像一台机器,灵活地加工输入并产出结果。在这篇笔记中,我们将全面学习这些概念,并结合高级用法及实际场景,为智能合约开发奠定坚实的基础。 + +## 1. 函数(Function) + +### 1.1 基础语法与结构 + +函数是 Move 的基本操作单元,完成输入到输出的映射。其基本结构如下: + +```move +public fun function_name(param1: Type1, param2: Type2): ReturnType { + // 函数体 +} +``` + +- `public`:访问修饰符,决定函数是否可被外部调用。 +- 参数:每个参数都需要显式声明类型,Move 不支持隐式类型推导。 +- 返回值类型:可以是基本类型、结构体、甚至是一个元组。 + +示例: + +```move +module ExampleModule { + public fun multiply(x: u64, y: u64): u64 { + x * y + } +} +``` + +此函数接收两个 `u64` 类型参数,返回它们的乘积。这个简单的乘法函数可以用在支付计算或奖励分发中。 + +### 1.2 高级用法 + +#### 1.2.1 泛型函数 + +Move 支持泛型函数,允许函数处理多种数据类型。通过使用类型参数,可以让函数更具灵活性。 + +```move +public fun swap(a: &mut T, b: &mut T) { + let temp = *a; + *a = *b; + *b = temp; +} +``` + +- 类型参数 `T` 允许此函数交换任意类型的值,而不仅限于特定类型。 + +#### 1.2.2 默认参数 + +Move 不直接支持默认参数,但可以通过函数重载实现类似效果: + +```move +public fun greet_with_name(name: vector): vector { + b"Hello, ".concat(&name) +} + +public fun greet(): vector { + greet_with_name(b"Guest") +} +``` + +`greet` 方法是简化版本,默认参数为 “Guest”。 + + +## 2. 表达式(Expression) + +表达式是代码逻辑的核心,Move 支持多种表达式形式,结合优雅的设计规则,既简洁又安全。 + +### 2.1 常见表达式类型 + +1. 常量表达式:直接值,例如 `true, 100, b"abc"`。 +2. 变量引用:如 `x`。 +3. 函数调用:如 `add(1, 2)`。 +4. 算术运算:如 `a + b, x / y`。 + +### 2.2 示例:条件运算嵌套表达式 + +```move +public fun calculate_tax(income: u64): u64 { + if (income > 50_000) { + income * 20 / 100 + } else { + income * 10 / 100 + } +} +``` + +### 2.3 高级用法:模式匹配与元组 + +```move +public fun divide_and_remainder(a: u64, b: u64): (u64, u64) { + (a / b, a % b) +} + +public fun example_usage() { + let (quotient, remainder) = divide_and_remainder(10, 3); +} +``` + +## 3. 控制流(Control Flow) + +控制流是程序逻辑的核心。Move 支持条件分支和循环,以实现复杂流程。 + +### 3.1 条件分支 + +```move +public fun classify(x: u64): vector { + if (x > 100) { + b"High" + } else if (x > 50) { + b"Medium" + } else { + b"Low" + } +} +``` + +### 3.2 使用 match + +`match` 是 Move 中类似模式匹配的高级控制流工具,比 `if-else` 更优雅且扩展性更强,尤其适合处理枚举类型。 + +#### 3.2.1 基本用法 + +```move +match expression { + pattern1 => action1, + pattern2 => action2, + _ => default_action, +} +``` + +- `expression`:匹配的值,可以是变量或表达式。 +- `pattern`:匹配条件。 +- `action`:匹配成功后执行的代码块。 +- `_`:通配符,匹配所有未覆盖的情况。 + +#### 3.2.2 示例:枚举匹配 + +```move +module OrderModule { + enum OrderStatus { + Pending, + Processing, + Shipped, + Completed, + } + + public fun get_order_status_message(status: OrderStatus): vector { + match status { + OrderStatus::Pending => b"Your order is pending.", + OrderStatus::Processing => b"Your order is being processed.", + OrderStatus::Shipped => b"Your order has been shipped.", + OrderStatus::Completed => b"Your order is completed.", + _ => b"Unknown status.", + } + } +} +``` + +#### 3.2.3 高级用法:多层次模式匹配 + +```move +module NestedMatchExample { + struct Result { + value: u64, + error: bool, + } + + public fun handle_result(result: Result): vector { + match result { + Result { value, error: false } if value > 100 => b"Large value and no error.", + Result { value, error: false } => b"Value is okay and no error.", + Result { value: _, error: true } => b"An error occurred.", + _ => b"Unexpected state.", + } + } +} +``` + +### 3.3 循环 + +#### 3.3.1 loop 示例 + +```move +public fun fibonacci(n: u64): u64 { + let mut a = 0; + let mut b = 1; + let mut i = 0; + loop { + if (i >= n) { + break; + } + let temp = a + b; + a = b; + b = temp; + i = i + 1; + } + a +} +``` + +#### 3.3.2 递归模拟循环 + +```move +public fun sum_recursive(n: u64): u64 { + if (n == 0) { + 0 + } else { + n + sum_recursive(n - 1) + } +} +``` + +## 4. 结构方法(Struct Methods) + +### 4.1 方法链式调用 + +通过在方法中返回 `&mut Self` 或新的实例,支持链式调用。 + +```move +module BankModule { + struct Account has key { + balance: u64, + } + + public fun new_account(initial_balance: u64): Account { + Account { balance: initial_balance } + } + + public fun deposit(&mut self, amount: u64): &mut Self { + self.balance = self.balance + amount; + self + } + + public fun withdraw(&mut self, amount: u64): &mut Self { + if (self.balance >= amount) { + self.balance = self.balance - amount; + } + self + } + + public fun reset(&mut self): &mut Self { + self.balance = 0; + self + } +} +``` + +### 4.2 链式调用示例 + +```move +public fun example_usage() { + let mut account = BankModule::new_account(1000); + account.deposit(500).withdraw(300).reset(); + assert!(account.balance == 0, b"Balance should be zero after reset."); +} +``` + +## 总结 + +通过本次学习,我们系统地掌握了 Move 函数、表达式、控制流、`match` 的使用以及结构方法链式调用的高级技巧。Move 强调安全性与高效性,是区块链智能合约开发的强大工具。 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/09_move_ability.md b/mover/lizhecome/notes/09_move_ability.md new file mode 100644 index 000000000..e20bfb3dc --- /dev/null +++ b/mover/lizhecome/notes/09_move_ability.md @@ -0,0 +1,142 @@ +# (九)Move语言中的能力(Ability) + +本周在直播课和视频课上学习了Move语言中对象的四种能力,在答疑过程中也向U具体请教了key和store的区别,下面是记录的一些理解。 +## 能力 (Ability) 是什么? + +在 Move 语言中,**能力(Abilities)** 是一种非常独特的概念。简单来说,它决定了一个类型的实例可以做哪些事情,比如是否能被复制、删除、存储到区块链上,或者在全局中找到它。能力的存在,就像是给类型戴上了一个“行为标签”,让我们能够更安全、更高效地开发智能合约。 + +有趣的是,能力不是后天赋予的,而是在**定义结构体时就声明好**了。这些能力会一直跟随着这个结构体的实例,甚至某些非结构体的类型(比如元组、枚举)也可以拥有能力,只要它们被指定了支持这些能力。 + +比如,我们可以用 `has` 关键字给类型添加能力,代码看起来像这样: + +```move +struct MyStruct has copy, drop { + field1: u64, + field2: bool, +} +``` + +⚠️ 注意: +- Move 中的内置类型(比如 u8、bool)默认拥有 copy、drop 和 store 三种能力。 +- 引用类型(比如 &T 和 &mut T)只有 copy 和 drop,没有 store。 + +### Move 的四种能力 + +Move 语言为我们提供了四种能力,每一种都赋予类型不同的权限和功能。 + +1. **copy** + - 作用:允许复制类型的实例。 + - 应用场景:需要明确哪些类型可以被复制(比如普通数据类型),哪些类型不能被复制(比如代币或资源)。 + - 限制:为了避免滥用,比如“复印”代币,像 Coin 这样的资源默认不能有 copy 能力。 + - 示例: + + ```move + struct CopyableStruct has copy { + value: u64, + } + + fun main() { + let s1 = CopyableStruct { value: 42 }; + let s2 = s1; // 允许复制 + } + ``` + +2. **drop** + - 作用:允许删除类型的实例。 + - 应用场景:当类型的实例不再需要时,系统会自动“销毁”它,而不需要我们手动清理。 + - 示例: + + ```move + struct DroppableStruct has drop { + value: u64, + } + + fun main() { + let s = DroppableStruct { value: 42 }; + // 离开作用域后,`s` 会被自动销毁 + } + ``` + +3. **store** + - 作用:允许将类型的实例存储在全局存储中。 + - 应用场景:共享数据或需要在链上持久化的信息,比如某个配置项、链上状态等。 + - 特点: + - store 能力允许类型实例作为全局存储中的对象,或者嵌套在其他结构体中。 + - 但没有唯一标识,无法通过全局 ID 查找。 + - 示例: + + ```move + struct MyStoreStruct has store { + value: u64, + } + + module Example { + fun store_example() { + let obj = MyStoreStruct { value: 42 }; + // 允许作为另一个对象的字段嵌套存储 + let container = Container { field: obj }; + } + } + + struct Container has store { + field: MyStoreStruct, + } + ``` + +4. **key** + - 作用:允许类型的实例拥有全局唯一标识,并能通过这个 ID 存储或查询。 + - 应用场景:适合需要跨交易标识的资源(比如 NFT、账户等)。 + - 特点: + - 具有唯一性,允许从全局存储中直接查找实例。 + - 依赖 store,因为只有能存储的东西,才能有唯一标识。 + - 示例: + + ```move + struct KeyStruct has key { + id: u64, + } + + module Example { + fun use_key() { + let k = KeyStruct { id: 1 }; + // 利用全局唯一 ID 存储和查找 + } + } + ``` + +### key 和 store 的区别 + +key 和 store 都与全局存储有关,但它们的侧重点不同,可以简单理解为: +- store 是一个基础能力,表示“能存储”。 +- key 是一个更高级的能力,表示“能存储并且能查找”。 + +#### 区别对比 + +| 特性 | key | store | +|------------|-------|-------| +| 全局唯一性 | 是,实例需要有全局唯一 ID | 否,不要求全局唯一 | +| 主要功能 | 用于全局存储和查找实例 | 用于允许实例在全局存储中持久化 | +| 模块交互 | 必须与资源模块(如 move_to)配合使用 | 仅需 store 能力即可持久化实例 | +| 嵌套字段存储 | 无法作为其他结构体的嵌套字段 | 可以作为其他结构体的嵌套字段 | +| 典型场景 | 跨交易可标识的资源(如 NFT、账户等) | 持久化的辅助信息、嵌套的复杂数据结构 | + +#### 关系 + +- key 必须依赖 store,没有 store 的类型不能拥有 key。 +- 如果一个结构体即要存储,又需要全局唯一标识,就需要同时拥有 key 和 store。 + +例如: + +```move +struct MyStruct has key, store { + id: u64, +} +``` + +### 总结 + +Move 中的能力 (Abilities) 是类型操作权限的核心机制。通过 copy、drop、store 和 key,我们可以明确类型实例在内存管理、全局存储等方面的行为。这不仅让代码更安全,也让我们更容易避免错误,比如“复制代币”或“资源泄漏”。 + +合理使用这些能力,可以让智能合约的开发更加清晰高效! +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/10_move_unit_test.md b/mover/lizhecome/notes/10_move_unit_test.md new file mode 100644 index 000000000..86f2195fa --- /dev/null +++ b/mover/lizhecome/notes/10_move_unit_test.md @@ -0,0 +1,163 @@ +# (十)让Move语言的单元测试跑起来! + +今天我们来讲一下单元测试,如果大家做到了**水分子社区**Move语言学习的task8,千万不要像我一样,把验证方法写到了合约上,那测试gas消耗的真叫一个快,而且还不出结果,使用test方式进行本地验证,不但免费,效率还高。当然,单元测试的用处不单单于此。。。什么?你要知道task8怎么做的?先卖个关子,请看后续的笔记。下面我们来看看单元测试应该怎么写。 + +如果代码是一本书,那么单元测试就是给每个章节加的注释和注解,帮助我们验证故事情节是否合乎逻辑。Move语言在这方面做得很细致,为测试带来了新工具和新玩法,让我们在调试中多了一丝乐趣,少了一份痛苦。以下内容将带你领略Move单元测试的奥秘,让你在开发的战场上如虎添翼。 + +## 1. 测试注解 (Testing Annotations) + +Move单元测试有三个神奇的标记工具,它们就像开发者的超能力手环,让你精准控制测试行为: + +- `#[test]`:标记测试函数 + + - 无参数用法 + 如果你想简单粗暴地标记一个函数是测试函数,那就直接扔上`#[test]`。但别忘了,这个函数必须 “孤单一人”,不能带任何参数。 + + ```move + #[test] // 正确:测试函数独善其身 + fun this_is_a_test() { ... } + + #[test] // 错误:测试函数带了小伙伴,编译器可不乐意 + fun this_is_not_correct(arg: signer) { ... } + ``` + + - 带参数用法 + 如果非要带参数,也不是不行,但有两个硬性条件: + 1. 参数必须是signer类型。 + 2. 注解里参数名要对得上号,编译器的记忆力可是杠杠的。 + + ```move + #[test(arg = @0xC0FFEE)] // 正确:参数对号入座 + fun this_is_correct_now(arg: signer) { ... } + + #[test(wrong_arg_name = @0xC0FFEE)] // 错误:名字对不上,编译器要吐槽了 + fun this_is_incorrect(arg: signer) { ... } + ``` + +- `#[expected_failure]`:预期失败的艺术 + + 这是给那些你 “故意放倒的测试” 的专属标签,告诉大家“这不是BUG,这是艺术!”当然,如果测试结果没按预期失败,编译器会冷冷地说:“艺术失败了。” + + - 基本用法 + 只需要加一个`#[expected_failure]`,它会检查测试是否失败。如果你想更精确一点,可以指定失败的错误码。 + + ```move + #[test] + #[expected_failure(abort_code = 0)] // 测试预期失败且错误码为0 + fun this_test_should_abort_and_pass_too() { abort 0 } + ``` + +- `#[test_only]`:只在测试模式下现身 + + - 这是开发者的秘密武器,专为测试环境准备。标记了`#[test_only]`的模块、函数、或者变量,在测试模式外绝对隐身。 + + ```move + #[test_only] + module test_helpers { ... } + + #[test_only] + fun test_only_function(...) { ... } + ``` + +## 2. 如何运行测试? + +运行测试,就像按下游戏机的开关,看角色逐一通关。Move的测试用`move test`命令搞定,测试结果会告诉你每一个关卡是 PASS(通关)、FAIL(挂掉)、还是 TIMEOUT(卡关)。 + +- 运行测试 + + ```sh + $ move test + ``` + + 例子输出: + + ``` + [ PASS ] 0x1::my_module::make_sure_non_zero_coin_passes + [ FAIL ] 0x1::my_module::make_sure_zero_coin_fails + ``` + +- 调试妙招:让失败变得清晰 + + 开发者的世界里,失败不可怕,可怕的是不知道为啥失败。Move给你一堆调试选项,让失败像谜底一样清晰: + + - 筛选测试:`-f` 或 `--filter` + 如果只想看特定名字的测试结果: + + ```sh + $ move test -f zero_coin + ``` + + - 限制Gas消耗:`-i` 或 `--gas_used` + 设置测试的Gas上限,看谁跑得最节能: + + ```sh + $ move test -i 500 + ``` + + - 获取测试统计:`-s` 或 `--statistics` + 给测试做性能分析,看谁跑得最快、谁最费Gas: + + ```sh + $ move test -s + ``` + + - 打印全局状态:`-g` 或 `--state-on-error` + 测试失败时,看看全局变量的状态,找到真正的幕后黑手: + + ```sh + $ move test -g + ``` + +## 3. 测试案例:万物皆可测试 + +下面是一个全副武装的测试模块,展示了如何用`#[test]`、`#[expected_failure]`和`#[test_only]`搭建坚固的测试体系: + +```move +module 0x1::my_module { + struct MyCoin has key { value: u64 } + + public fun make_sure_non_zero_coin(coin: MyCoin): MyCoin { + assert!(coin.value > 0, 0); + coin + } + + #[test] + fun make_sure_non_zero_coin_passes() { + let coin = MyCoin { value: 1 }; + make_sure_non_zero_coin(coin); + } + + #[test] + #[expected_failure(abort_code = 0)] + fun make_sure_zero_coin_fails() { + let coin = MyCoin { value: 0 }; + make_sure_non_zero_coin(coin); + } + + #[test(a = @0x1, b = @0x2)] + fun test_has_coin(a: signer, b: signer) { + assert!(true, 0); + } +} +``` + +运行命令: + +```sh +$ move test +``` + +结果示例: + +``` +[ PASS ] 0x1::my_module::make_sure_non_zero_coin_passes +[ PASS ] 0x1::my_module::make_sure_zero_coin_fails +[ PASS ] 0x1::my_module::test_has_coin +``` + +Move的单元测试让你的开发变成一场策略游戏,每一行代码都是小心翼翼的布局,每一个测试都是信心满满的检验。失败不可怕,Move帮你找到失败背后的原因;调试不枯燥,工具的丰富让问题解决变成乐趣! + +所以,快开始测试吧,代码的未来就掌握在你手中! 🚀 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/notes/11_move_generics.md b/mover/lizhecome/notes/11_move_generics.md new file mode 100644 index 000000000..9c0e2f033 --- /dev/null +++ b/mover/lizhecome/notes/11_move_generics.md @@ -0,0 +1,323 @@ +# (十一)Move泛型:从入门到“我真的会了” + +在完成HOH水分子社区Task的过程中,经常会用到泛型,学习Move语言的泛型功能,就像在编程的魔法学校里解锁了一个强大的咒语系统。这不仅可以帮助你轻松应对各种数据类型,还能让你的代码写得既简洁又灵活。但如果没有深刻理解,可能就会不小心变成“危险施法”,引发意想不到的类型错误。那么,今天我们就来深入探讨Move泛型的各种“招式”,从入门到“我真的会了”。 + +## 什么是泛型? + +泛型(Generics)是一种可以为函数和结构体定义通用类型的特性,这也被称为“参数化多态”。在Move中,我们通常用“类型参数”(Type Parameters)和“类型实参”(Type Arguments)来描述它。 + +简单来说,泛型是为了写出“一劳永逸”的代码。比如,当你需要一个可以处理任意数据类型的向量(vector)或一个可以适配各种货币类型的数字货币结构时,泛型就是你的首选工具。 + +## 泛型基础招式:声明与使用 + +### 1. 声明类型参数 + +- **函数中的泛型** + + 函数的类型参数写在函数名之后、参数列表之前,格式是 ``。 + + ```move + fun id(x: T): T { + (x: T) // 返回原值,类型保持不变 + } + ``` + + 在这个例子中,`id`函数无论你传入什么类型,它都会原封不动地返回给你。这就是“类型不设限”的神奇之处。 + +- **结构体中的泛型** + + 结构体的类型参数写在结构体名之后。可以声明单个或多个类型参数: + + ```move + struct Foo has copy, drop { x: T } + struct Bar has copy, drop { x: T1, y: vector } + ``` + + 注意,泛型参数可以不一定要用在字段上(稍后讲到)。 + +### 2. 调用泛型 + +泛型的用法灵活,Move的类型推导(Type Inference)常常能替你完成大部分工作: + +- **显式指定类型实参** + + ```move + let x = id(true); + ``` + +- **省略类型实参** + + ```move + let x = id(true); // Move会推导出 T 是 bool + ``` + + 对结构体也是类似: + + ```move + let foo = Foo { x: true }; // 显式类型 + let foo = Foo { x: true }; // 类型推导 + ``` + + 不过,当类型推导“犹豫不决”时,你就得“手动指点迷津”。比如: + + ```move + let v = vector::new(); // 明确向量元素是 u64 + ``` + +## 泛型“注意事项”:不小心就是一个大坑 + +1. **类型实参不匹配** + + 如果你传入的值和指定的类型不匹配,Move会立刻告诉你哪里出了问题: + + ```move + let x = id(true); // 错误!true 不是 u64 + ``` + +2. **类型推导失败** + + 有时类型推导“超出了能力范围”,需要你帮它一把。例如: + + ```move + let v = vector::new(); // 错误!无法推导向量元素的类型 + let v = vector::new(); // 手动标注解决问题 + ``` + +## 高级用法:Phantom类型参数 + +Move为了解决“未使用类型参数”的问题,引入了Phantom类型参数。这些类型参数虽然存在,但不会影响结构体的能力派生。可以通过关键字 `phantom` 来声明: + +```move +struct Coin has store { + value: u64 +} +``` + +这样一来,即使 `Currency` 没有 `store` 能力,`Coin` 依然可以放入全局存储。此外,Phantom类型参数还可以加上能力约束,进一步增强其灵活性: + +```move +struct S {} +``` + +## 泛型与能力:约束是关键 + +泛型的默认状态是“无所不能”,但这可能导致“乱用魔法”的情况。为了更安全,可以通过能力约束(Constraints)限制泛型类型参数的使用: + +```move +T: copy // 只能用具有 copy 能力的类型 +T: copy + drop // 同时需要 copy 和 drop 能力 +``` + +约束会在调用点进行验证。例如: + +```move +struct Foo { x: T } +let foo = Foo { x: 42 }; // 错误!u8 没有 key 能力 +``` + +## 不要试图挑战Move的底线:递归限制 + +Move对泛型递归进行了严格的限制,避免“无穷类型”导致编译器卡死。例如: + +```move +struct A {} + +fun foo() { + foo>(); // 错误!会生成无限多的类型 +} +``` + +但有限递归是允许的: + +```move +fun foo() { + foo>(); // 合法!只有有限多的类型 +} +``` + +## 进阶应用:使用泛型构建“支持多种资产”的DeFi协议 + +构建一个支持多种资产的去中心化金融 (DeFi) 协议,需要让资产类型在智能合约中通用并安全地管理。Move的泛型特性非常适合这一场景,通过类型参数和能力约束,可以确保灵活性与安全性的统一。以下是一个设计和实现方案: + +### 1. 设计思路:多资产管理的关键需求 + +- **灵活性**:支持任意符合条件的资产(如不同的代币类型)。 +- **安全性**:资产操作必须遵循能力约束(如只能操作具有 store 或 key 能力的资产)。 +- **可扩展性**:协议支持添加新资产类型,而无需修改已有代码。 + +Move中的泛型使我们能够设计一套通用的接口来满足这些需求,同时通过能力约束保证安全性。 + +### 2. 构建核心模块:多资产存款与取款 + +**定义多资产通用结构** + +通过泛型参数 `Asset` 表示不同资产类型,使用能力约束确保资产的安全存储。 + +```move +module DeFi { + struct Vault has key, store { + balance: u64, + } + + // 初始化一个资产金库 + public fun initialize_vault(account: &signer): Vault { + Vault { balance: 0 } + } + + // 存款功能 + public fun deposit( + vault: &mut Vault, + amount: u64 + ) { + vault.balance = vault.balance + amount; + } + + // 取款功能 + public fun withdraw( + vault: &mut Vault, + amount: u64 + ) acquires Vault { + assert!(vault.balance >= amount, 1); + vault.balance = vault.balance - amount; + } + + // 查询余额 + public fun get_balance(vault: &Vault): u64 { + vault.balance + } +} +``` + +### 3. 支持多种资产操作 + +**为了让协议支持多种资产类型,我们可以使用 Move 的泛型实现“单金库多资产”的设计。以下是示例扩展**: + +**扩展支持资产类型** + +使用幻影类型参数 (Phantom Type Parameters) 区分不同资产。 + +```move +module MultiAssetDeFi { + use DeFi; + + struct Token has key, store { + total_supply: u64, + } + + public fun initialize_token(supply: u64): Token { + Token { total_supply: supply } + } + + public fun transfer( + token: &mut Token, + amount: u64 + ) { + assert!(token.total_supply >= amount, 2); + token.total_supply = token.total_supply - amount; + } +} +``` + +**示例:支持多个货币** + +比如,定义 ETH 和 BTC 两种资产,分别创建相应的 Vault: + +```move +module Example { + use DeFi; + use MultiAssetDeFi; + + // 定义 ETH 和 BTC 两种资产类型 + struct ETH has key, store {} + struct BTC has key, store {} + + public fun main() { + // 初始化两个金库 + let eth_vault = DeFi::initialize_vault(); + let btc_vault = DeFi::initialize_vault(); + + // 对金库进行操作 + DeFi::deposit(&mut eth_vault, 100); + DeFi::deposit(&mut btc_vault, 200); + + let eth_balance = DeFi::get_balance(ð_vault); + let btc_balance = DeFi::get_balance(&btc_vault); + + assert!(eth_balance == 100, 3); + assert!(btc_balance == 200, 4); + } +} +``` + +### 4. 提升灵活性:支持更多功能 + +**跨资产交易** + +通过泛型和能力约束实现跨资产的安全兑换逻辑: + +```move +module Swap { + use DeFi; + + public fun swap( + vault1: &mut DeFi::Vault, + vault2: &mut DeFi::Vault, + amount1: u64, + amount2: u64 + ) { + assert!(vault1.balance >= amount1, 5); + assert!(vault2.balance >= amount2, 6); + + // 执行资产交换 + vault1.balance = vault1.balance - amount1; + vault2.balance = vault2.balance - amount2; + + vault1.balance = vault1.balance + amount2; + vault2.balance = vault2.balance + amount1; + } +} +``` + +**事件记录** + +通过事件机制记录资产存取与交易行为,方便用户审计和调试: + +```move +module EventLogger { + struct DepositEvent has store { asset: vector, amount: u64 } + struct WithdrawEvent has store { asset: vector, amount: u64 } + + public fun log_deposit( + asset_name: vector, + amount: u64 + ) { + emit DepositEvent { asset: asset_name, amount }; + } + + public fun log_withdraw( + asset_name: vector, + amount: u64 + ) { + emit WithdrawEvent { asset: asset_name, amount }; + } +} +``` + +### 5. 安全性与扩展性注意事项 + +1. **能力约束**: + - 确保只有具有 store 或 key 能力的类型可以用于资产管理,避免不可序列化类型被误用。 + - 在操作中通过能力约束避免资源丢失或泄露。 +2. **代码复用**: + 使用泛型提高复用性,但注意避免过度复杂化(如不必要的递归或嵌套泛型)。 +3. **拓展机制**: + 可通过额外模块添加新资产类型或功能,如支持 ERC-20、NFT 等不同的代币标准。 + +通过上述设计,协议可以灵活支持多种资产,同时保持高度安全性和扩展性,满足多资产DeFi系统的需求。 + +## 结语:玩转泛型,化繁为简 + +学习Move的泛型就像在掌握一门艺术:它能让你的代码更加优雅、通用,但也需要谨慎使用,避免掉入“类型地狱”。无论是通过Phantom参数增强灵活性,还是用能力约束提升安全性,泛型都为开发者提供了强大的工具。 + +> **请用微信关注《HOH水分子》公众号,我们将持续分享和制作变成语言教程,让大家对编程产生化学反应。** +![水分子社区](../images/HOH_QR.jpg) \ No newline at end of file diff --git a/mover/lizhecome/readme.md b/mover/lizhecome/readme.md index 8365f6ba3..0fa86c84b 100644 --- a/mover/lizhecome/readme.md +++ b/mover/lizhecome/readme.md @@ -41,17 +41,19 @@ - [x] play game hash:3dkDKXBvRZ9pgyAMRvAL5vSm2uXe8sLbSrz2PgBsyiwe ## 05 Move Swap -- [] swap package id : 0x220e1fb6821f2851bf8557104251b47036527f1ac35ad757db1d9a503388cf14 -- [] call swap CoinA-> CoinB hash : ED2zkQed7ZChNWtVq2CYMb3GNBaTKWfMTEA4ZjE4KPRc -- [] call swap CoinB-> CoinA hash : HujYQgQuHp81bJ5FfHhG1KnDMVq9x6VcZay9Pa7MvDsp +- [x] swap package id : 0x220e1fb6821f2851bf8557104251b47036527f1ac35ad757db1d9a503388cf14 +- [x] call swap CoinA-> CoinB hash : ED2zkQed7ZChNWtVq2CYMb3GNBaTKWfMTEA4ZjE4KPRc +- [x] call swap CoinB-> CoinA hash : HujYQgQuHp81bJ5FfHhG1KnDMVq9x6VcZay9Pa7MvDsp ## 06 Dapp-kit SDK PTB -- [] save hash : +- [x] save hash : 3BUnnzzjgi7nzZ1q53nLgAhWYWzdYb7Ststp6GciPtE5 ## 07 Move CTF Check In -- [] CLI call 截图 : ![截图](./images/你的图片地址) -- [] flag hash : +- [x] CLI call 截图 : ![截图](./images/task7.png) +- [x] flag hash :En5nJpBQ1QUNtux8cF25WbZDRsfubqfyBfuDhpAew8Rp ## 08 Move CTF Lets Move -- [] proof : -- [] flag hash : +- [x] proof :[156, 102, 222, 97, 186, 162, 178, 36] +证明方法见mover/lizhecome/code/task8/get_proof.py,以及move项目gen_proof + CLI call 截图 : ![截图](./images/task8.png) +- [x] flag hash : DfyvNhuyZk6wk17B2Hwz3NUWLQ6Abndp2Xou2uaNxb7X diff --git a/mover/looikaizhi/code/task2/generate_coin/Move.lock b/mover/looikaizhi/code/task2/generate_coin/Move.lock new file mode 100644 index 000000000..c20320c80 --- /dev/null +++ b/mover/looikaizhi/code/task2/generate_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "A236805D79A413A3B07C3DCC6F251FE22E504BD8453FE8F1D79388B523090A81" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x798d058dd7a4ad2668f579bae7ae99729cf8c800c3de8a29d446fc683197f500" +latest-published-id = "0x798d058dd7a4ad2668f579bae7ae99729cf8c800c3de8a29d446fc683197f500" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x8865d5e7cedd69aa766fb758b2436b54439546e6e6956050e2c146dc228738ff" +latest-published-id = "0x8865d5e7cedd69aa766fb758b2436b54439546e6e6956050e2c146dc228738ff" +published-version = "1" diff --git a/mover/looikaizhi/code/task2/generate_coin/Move.toml b/mover/looikaizhi/code/task2/generate_coin/Move.toml new file mode 100644 index 000000000..dad2de049 --- /dev/null +++ b/mover/looikaizhi/code/task2/generate_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "generate_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +generate_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/looikaizhi/code/task2/generate_coin/sources/faucet_coin.move b/mover/looikaizhi/code/task2/generate_coin/sources/faucet_coin.move new file mode 100644 index 000000000..6405343d3 --- /dev/null +++ b/mover/looikaizhi/code/task2/generate_coin/sources/faucet_coin.move @@ -0,0 +1,39 @@ +module generate_coin::faucet_coin{ + use sui::coin::{Self, TreasuryCap}; + use sui::tx_context::TxContext; + + public struct FAUCET_COIN has drop{} + + public struct TreasuryCaoHolder has key, store{ + id: UID, + treasury_cap: TreasuryCap, + } + + // otw = One-time witness,确保只能在init初始化调用一次,同时1结构体只有drop能力 + fun init(otw:FAUCET_COIN, ctx: &mut TxContext){ + let (treasury_cap, metadata) = coin::create_currency( + otw, + 6, + b"looikaizhi_Faucet", + b"LKZF", + b"Who can let me become a memecoin!!(This is faucet)", + option::none(), + ctx + ); + transfer::public_freeze_object(metadata); + + let treasury_cap_holder = TreasuryCaoHolder{ + id: object::new(ctx), + treasury_cap, + }; + transfer::share_object(treasury_cap_holder); + + } + + public entry fun mint(treasury: &mut TreasuryCaoHolder, ctx: &mut TxContext){ + let sender = tx_context::sender(ctx); + let treasury_cap = &mut treasury.treasury_cap; + let coin = coin::mint(treasury_cap, 10, ctx); // mint代币 + transfer::public_transfer(coin, sender); // 转移至指定地址 + } +} \ No newline at end of file diff --git a/mover/looikaizhi/code/task2/generate_coin/sources/my_coin.move b/mover/looikaizhi/code/task2/generate_coin/sources/my_coin.move new file mode 100644 index 000000000..8aba56081 --- /dev/null +++ b/mover/looikaizhi/code/task2/generate_coin/sources/my_coin.move @@ -0,0 +1,49 @@ +module generate_coin::my_coin { + use sui::coin::{Self, TreasuryCap}; + use sui::tx_context::TxContext; + + public struct MY_COIN has drop{} + + public struct TreasuryCaoHolder has key, store{ + id: UID, + treasury_cap: TreasuryCap, + } + + const Minter:address = @0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2; + const MAX_SUPPLY: u64 = 1_000_000_000; + + + fun init(otw: MY_COIN, ctx: &mut TxContext){ + let (treasury_cap, metadata) = coin::create_currency( + otw, + 6, + b"looikaizhi", + b"LKZ", + b"Who can let me become a memecoin!!", + option::none(), + ctx + ); + + transfer::public_freeze_object(metadata); // 冻结 metadata,以确保其内容不可更改 + + let treasury_cap_holder = TreasuryCaoHolder{ + id: object::new(ctx), + treasury_cap, + }; + transfer::public_transfer(treasury_cap_holder, tx_context::sender(ctx)); //将 TreasuryCap 赋予Minter地址 + + } + + public entry fun mint(treasury: &mut TreasuryCaoHolder, minter: address, amount: u64, ctx: &mut TxContext){ + assert!(minter == Minter, 0); // 确保是指定地址 + + let treasury_cap = &mut treasury.treasury_cap; + let current_supply:u64 = coin::total_supply(treasury_cap); // 当前代币的总量 + assert!((current_supply + amount) <= MAX_SUPPLY, 0); // 确保不会超出最大供应量 + + let coin = coin::mint(treasury_cap, amount, ctx); // mint代币 + transfer::public_transfer(coin, minter); // 转移至指定地址 + } + +} + diff --git a/mover/looikaizhi/code/task2/generate_coin/tests/generate_coin_tests.move b/mover/looikaizhi/code/task2/generate_coin/tests/generate_coin_tests.move new file mode 100644 index 000000000..d6782dda0 --- /dev/null +++ b/mover/looikaizhi/code/task2/generate_coin/tests/generate_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module generate_coin::generate_coin_tests; +// uncomment this line to import the module +// use generate_coin::generate_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_generate_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::generate_coin::generate_coin_tests::ENotImplemented)] +fun test_generate_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/looikaizhi/code/task3/generate_NFT/Move.lock b/mover/looikaizhi/code/task3/generate_NFT/Move.lock new file mode 100644 index 000000000..3ac68a227 --- /dev/null +++ b/mover/looikaizhi/code/task3/generate_NFT/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "DC3595091D0FF8B4EA079E2AC5459C03D25A297D44F2480119C7700E4FB53CA0" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x8cdbb3bd9c005ed5d59eb1cbc1da523d30aea54a214658dd3785d83e5bcc86a2" +latest-published-id = "0x8cdbb3bd9c005ed5d59eb1cbc1da523d30aea54a214658dd3785d83e5bcc86a2" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xd1f718046bdc4071742938fb13b2976eec402bd793db9aaf0ea6c0e2221637fe" +latest-published-id = "0xd1f718046bdc4071742938fb13b2976eec402bd793db9aaf0ea6c0e2221637fe" +published-version = "1" diff --git a/mover/looikaizhi/code/task3/generate_NFT/Move.toml b/mover/looikaizhi/code/task3/generate_NFT/Move.toml new file mode 100644 index 000000000..4eb235412 --- /dev/null +++ b/mover/looikaizhi/code/task3/generate_NFT/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "generate_NFT" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +generate_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/looikaizhi/code/task3/generate_NFT/sources/nft.move b/mover/looikaizhi/code/task3/generate_NFT/sources/nft.move new file mode 100644 index 000000000..1be1cfb8e --- /dev/null +++ b/mover/looikaizhi/code/task3/generate_NFT/sources/nft.move @@ -0,0 +1,55 @@ +module generate_nft::nft{ + use std::string::{utf8, String}; + use sui::package; + use sui::display; + use sui::transfer; + + public struct MyNFT has key, store{ + id: UID, + name: String + } + + public struct NFT has drop{} + + fun init(otw: NFT, ctx: &mut TxContext){ + let keys = vector[ + utf8(b"name"), + utf8(b"link"), + utf8(b"image_url"), + utf8(b"description"), + utf8(b"project_url"), + utf8(b"creator"), + ]; + + let values = vector[ + utf8(b"{name}"), + utf8(b"https://sui-heroes.io/hero/{id}"), + utf8(b"https://pbs.twimg.com/profile_images/1809913909513699328/6IF8so7d_400x400.jpg"), + utf8(b"A Meme NFT of the Sui ecosystem!"), + utf8(b"https://docs.sui.io/standards/display"), + utf8(b"looikaizhi"), + ]; + + let publisher = package::claim(otw, ctx); + + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + } + + public entry fun mint(name: String, minter:address, ctx: &mut TxContext){ + let nft = MyNFT{ + id: object::new(ctx), + name + }; + + transfer::public_transfer(nft, minter); + } + +} + diff --git a/mover/looikaizhi/code/task3/generate_NFT/tests/generate_nft_tests.move b/mover/looikaizhi/code/task3/generate_NFT/tests/generate_nft_tests.move new file mode 100644 index 000000000..7719217fd --- /dev/null +++ b/mover/looikaizhi/code/task3/generate_NFT/tests/generate_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module generate_nft::generate_nft_tests; +// uncomment this line to import the module +// use generate_nft::generate_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_generate_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::generate_nft::generate_nft_tests::ENotImplemented)] +fun test_generate_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/looikaizhi/images/NFTScreeenshot.png b/mover/looikaizhi/images/NFTScreeenshot.png new file mode 100644 index 000000000..297213e28 Binary files /dev/null and b/mover/looikaizhi/images/NFTScreeenshot.png differ diff --git a/mover/looikaizhi/readme.md b/mover/looikaizhi/readme.md index e94d10578..df6829158 100644 --- a/mover/looikaizhi/readme.md +++ b/mover/looikaizhi/readme.md @@ -20,17 +20,17 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/SuiScanScreenshot.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id :`0x8865d5e7cedd69aa766fb758b2436b54439546e6e6956050e2c146dc228738ff` +- [x] Faucet package id : `0x8865d5e7cedd69aa766fb758b2436b54439546e6e6956050e2c146dc228738ff` +- [x] 转账 `My Coin` hash: `D5ZUpJuwDsqfHTLvobQGk7fXkn5EpK1FRTZVAZsNrb7K` +- [x] `Faucet Coin` address1 mint hash: `CDDRtDmFi7VCBdAm8zratdqtyMEVanDkBkuFefjPxKss` +- [x] `Faucet Coin` address2 mint hash: `DC2LTw5eyyFDL6LABuoSYBnJTgKRgiJbY2Udw3YMvnLk` ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id : `0xd1f718046bdc4071742938fb13b2976eec402bd793db9aaf0ea6c0e2221637fe` +- [x] nft object id : `0x9cc8f7c63407ae66b63b7c0cdfa3ce35dfd785030a5d9208bf8b601032125cf0` +- [x] 转账 nft hash: `9wYjDBRCofpAsgmsqp9Uc8AWM8wsRGeWHUJEJ3eshYX5` +- [x] scan上的NFT截图:![Scan截图](./images/NFTScreeenshot.png) ## 04 Move Game - [] game package id : diff --git a/mover/mmaa666/code/readme.md b/mover/mmaa666/code/readme.md index 8b1378917..e69de29bb 100644 --- a/mover/mmaa666/code/readme.md +++ b/mover/mmaa666/code/readme.md @@ -1 +0,0 @@ - diff --git a/mover/mmaa666/code/task2/mmaa666_coin/Move.lock b/mover/mmaa666/code/task2/mmaa666_coin/Move.lock new file mode 100644 index 000000000..ee4c51c88 --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "E7A65BF39B740E195045E87B46B06936199C063AFE29D8948B9C6B9B853033A8" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xb8f93dea4dd56863241b7198d55ad1eb1058913ac1809d61256d2105a36cfde2" +latest-published-id = "0xb8f93dea4dd56863241b7198d55ad1eb1058913ac1809d61256d2105a36cfde2" +published-version = "1" diff --git a/mover/mmaa666/code/task2/mmaa666_coin/Move.toml b/mover/mmaa666/code/task2/mmaa666_coin/Move.toml new file mode 100644 index 000000000..6a6098d99 --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task2" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task2 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/mmaa666/code/task2/mmaa666_coin/sources/task2.move b/mover/mmaa666/code/task2/mmaa666_coin/sources/task2.move new file mode 100644 index 000000000..97f6bf11b --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_coin/sources/task2.move @@ -0,0 +1,51 @@ +/* +/// Module: task2 +module task2::task2; +*/ +module task2::mmaa666_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct MMAA666_COIN has drop {} + + fun init( + witness: MMAA666_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"MMAA666", + b"MMAA666_COIN", + b"mmaa666 Coin", + option::some( + url::new_unsafe_from_bytes( + b"wu" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_transfer( + treasury_cap, + tx_context::sender(ctx) + ) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} \ No newline at end of file diff --git a/mover/mmaa666/code/task2/mmaa666_coin/tests/task2_tests.move b/mover/mmaa666/code/task2/mmaa666_coin/tests/task2_tests.move new file mode 100644 index 000000000..8a0300a94 --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_coin/tests/task2_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task2::task2_tests; +// uncomment this line to import the module +// use task2::task2; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task2() { + // pass +} + +#[test, expected_failure(abort_code = ::task2::task2_tests::ENotImplemented)] +fun test_task2_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/mmaa666/code/task2/mmaa666_faucet_coin/Move.lock b/mover/mmaa666/code/task2/mmaa666_faucet_coin/Move.lock new file mode 100644 index 000000000..1158eefca --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "401E2831D93BD2F0A84435F5CB9F34A459452FC8E907C8927156759F751DA6F8" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x948aa00b27fbce58b5a7288acff28b845f8b5bbb214152832e3ba3267dcca2bc" +latest-published-id = "0x948aa00b27fbce58b5a7288acff28b845f8b5bbb214152832e3ba3267dcca2bc" +published-version = "1" diff --git a/mover/mmaa666/code/task2/mmaa666_faucet_coin/Move.toml b/mover/mmaa666/code/task2/mmaa666_faucet_coin/Move.toml new file mode 100644 index 000000000..10cfa335b --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "mmaa666_faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +mmaa666_faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/mmaa666/code/task2/mmaa666_faucet_coin/sources/mmaa666_faucet_coin.move b/mover/mmaa666/code/task2/mmaa666_faucet_coin/sources/mmaa666_faucet_coin.move new file mode 100644 index 000000000..3954378b8 --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_faucet_coin/sources/mmaa666_faucet_coin.move @@ -0,0 +1,48 @@ +/* +/// Module: mmaa666_faucet_coin +module mmaa666_faucet_coin::mmaa666_faucet_coin; +*/ +module mmaa666_faucet_coin::mmaa666_faucet_coin { + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::url::{Self, Url}; + + public struct MMAA666_FAUCET_COIN has drop {} + + fun init( + witness: MMAA666_FAUCET_COIN, + ctx: &mut TxContext + ) { + let (treasury_cap, metadata) = coin::create_currency( + witness, + 9, + b"CRF", + b"MMAA666_FAUCET_COIN", + b"mmaa666 faucet coin", + option::some( + url::new_unsafe_from_bytes( + b"wu" + ) + ), + ctx + ); + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury_cap) + } + + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + coin::mint_and_transfer(treasury_cap, amount, recipient, ctx); + } + + public fun burn( + treasury_cap: &mut TreasuryCap, + coin: Coin + ) { + coin::burn(treasury_cap, coin); + + } +} \ No newline at end of file diff --git a/mover/mmaa666/code/task2/mmaa666_faucet_coin/tests/mmaa666_faucet_coin_tests.move b/mover/mmaa666/code/task2/mmaa666_faucet_coin/tests/mmaa666_faucet_coin_tests.move new file mode 100644 index 000000000..827be9774 --- /dev/null +++ b/mover/mmaa666/code/task2/mmaa666_faucet_coin/tests/mmaa666_faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module mmaa666_faucet_coin::mmaa666_faucet_coin_tests; +// uncomment this line to import the module +// use mmaa666_faucet_coin::mmaa666_faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_mmaa666_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::mmaa666_faucet_coin::mmaa666_faucet_coin_tests::ENotImplemented)] +fun test_mmaa666_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/mmaa666/code/task3/mmaa666_nft/Move.lock b/mover/mmaa666/code/task3/mmaa666_nft/Move.lock new file mode 100644 index 000000000..46b1d6750 --- /dev/null +++ b/mover/mmaa666/code/task3/mmaa666_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "F29B7CCECB3E6D1FEE41409EB7C426F2AAC9F91CD7441D3A72878B79341C69AB" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xe2ef49267647fa49d006634df5d3821b62ade08a66a30b34f9fc54aaf78286a0" +latest-published-id = "0xe2ef49267647fa49d006634df5d3821b62ade08a66a30b34f9fc54aaf78286a0" +published-version = "1" diff --git a/mover/mmaa666/code/task3/mmaa666_nft/Move.toml b/mover/mmaa666/code/task3/mmaa666_nft/Move.toml new file mode 100644 index 000000000..263ce130d --- /dev/null +++ b/mover/mmaa666/code/task3/mmaa666_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "mmaa666_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +mmaa666_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/mmaa666/code/task3/mmaa666_nft/sources/mmaa666_nft.move b/mover/mmaa666/code/task3/mmaa666_nft/sources/mmaa666_nft.move new file mode 100644 index 000000000..b2f07b4ce --- /dev/null +++ b/mover/mmaa666/code/task3/mmaa666_nft/sources/mmaa666_nft.move @@ -0,0 +1,45 @@ +/* +/// Module: mmaa666_nft +module mmaa666_nft::mmaa666_nft; +*/ +module mmaa666_nft::mmaa666_nft; +use std::string::String; +use std::string; +use sui::transfer::transfer; +use sui::tx_context::sender; + +public struct MMAA666NFT has key + { + id:UID, + name: String, + image_url: String, + + } + + +fun init(ctx: &mut TxContext) + { + + let mmaa666_nft = MMAA666NFT + { + id:object::new(ctx), + name:string::utf8(b"MMVV666 NFT"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/183964006?s=400&u=77deb2250e988591d6f9c62bb4d6c2045fa63b8d&v=4"), + }; + transfer(mmaa666_nft,sender(ctx)); + } + +public entry fun mint(url:String,ctx: &mut TxContext,) + { + let mmaa666_nft = MMAA666NFT + { + id:object::new(ctx), + name:string::utf8(b"MMVV666 NFT"), + image_url: url + }; + transfer(mmaa666_nft,sender(ctx)); + } +public entry fun transfer_nft(nft: MMAA666NFT, to: address) + { + transfer(nft, to); + } diff --git a/mover/mmaa666/code/task3/mmaa666_nft/tests/mmaa666_nft_tests.move b/mover/mmaa666/code/task3/mmaa666_nft/tests/mmaa666_nft_tests.move new file mode 100644 index 000000000..31c21e940 --- /dev/null +++ b/mover/mmaa666/code/task3/mmaa666_nft/tests/mmaa666_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module mmaa666_nft::mmaa666_nft_tests; +// uncomment this line to import the module +// use mmaa666_nft::mmaa666_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_mmaa666_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::mmaa666_nft::mmaa666_nft_tests::ENotImplemented)] +fun test_mmaa666_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/mmaa666/image/nft.png b/mover/mmaa666/image/nft.png new file mode 100644 index 000000000..f12e94e10 Binary files /dev/null and b/mover/mmaa666/image/nft.png differ diff --git a/mover/mmaa666/image/touxiang.png b/mover/mmaa666/image/touxiang.png new file mode 100644 index 000000000..79071f95e Binary files /dev/null and b/mover/mmaa666/image/touxiang.png differ diff --git a/mover/mmaa666/readme.md b/mover/mmaa666/readme.md index ca7237a9d..d1290eb2b 100644 --- a/mover/mmaa666/readme.md +++ b/mover/mmaa666/readme.md @@ -4,7 +4,7 @@ - github:mmaa666 ## 个人简介 -- 工作经验: 0年 +- 工作经验: 0.5年 - 技术栈: c++ > 重要提示 请认真写自己的简介 - 对Move特别感兴趣,想通过Move入门区块链 @@ -12,23 +12,23 @@ ## 任务 ## 01 hello move -- [] Sui cli version: -- [] Sui钱包截图: ![Sui钱包截图](mover/mmaa666/image/qianbao.png) -- [] package id: 0x0519e4202dcfac0ee31b334019faf6d5ca3fac6a68153438f636ee89ccec3da2 -- [] package id 在 scan上的查看截图:![Scan截图](mover/mmaa666/image/package.png) +- [x] Sui cli version: sui 1.35.0-homebrew +- [x] Sui钱包截图: ![Sui钱包截图](mover/mmaa666/image/qianbao.png) +- [x] package id: 0x0519e4202dcfac0ee31b334019faf6d5ca3fac6a68153438f636ee89ccec3da2 +- [x] package id 在 scan上的查看截图:![Scan截图](mover/mmaa666/image/package.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0xb8f93dea4dd56863241b7198d55ad1eb1058913ac1809d61256d2105a36cfde2 +- [x] Faucet package id : 0x948aa00b27fbce58b5a7288acff28b845f8b5bbb214152832e3ba3267dcca2bc +- [x] 转账 `My Coin` hash:2EcPR5aAi2uSpniDpdfjiEVp1HnYDu5ucg3ZqQDhJsBei +- [x] `Faucet Coin` address1 mint hash:DFQBSx1an4rQaaAMM71ck8fwikDMASpYJjVy62ZhUy2J +- [x] `Faucet Coin` address2 mint hash:6ZHuAd2wQx9zupz6EvvSPJ5rXN2TNE537m3L1XomG4TR ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :0xe2ef49267647fa49d006634df5d3821b62ade08a66a30b34f9fc54aaf78286a0 +- [x] nft object id : 0xe96a2f2ac5bf0c1c559aa1537978bae7e36122e90a4cc1b80cda4c6fb3c27401 +- [x] 转账 nft hash:H6tgwe6wcFzEcBLCKoJ9XETD8ASFQd7boNMKkbn1W6hf +- [x] scan上的NFT截图:![Scan截图](mover/mmaa666/image/nft.png) ## 04 Move Game - [] game package id : diff --git a/mover/qiaopengjun5162/co-learn-2411/images/bilibili.png b/mover/qiaopengjun5162/co-learn-2411/images/bilibili.png new file mode 100644 index 000000000..e68035655 Binary files /dev/null and b/mover/qiaopengjun5162/co-learn-2411/images/bilibili.png differ diff --git a/mover/qiaopengjun5162/co-learn-2411/images/readme.md b/mover/qiaopengjun5162/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/qiaopengjun5162/co-learn-2411/project/readme.md b/mover/qiaopengjun5162/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/qiaopengjun5162/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/qiaopengjun5162/co-learn-2411/readme.md b/mover/qiaopengjun5162/co-learn-2411/readme.md new file mode 100644 index 000000000..bd9cfb2b2 --- /dev/null +++ b/mover/qiaopengjun5162/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [] b站,推特关注截图: ![关注截图](./images/bilibili.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】https://learnblockchain.cn/article/8650 +- [] 第二篇笔记【学习笔记链接】https://learnblockchain.cn/article/8717 +- [] 第三篇笔记【学习笔记链接】https://learnblockchain.cn/article/8856 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/qiaopengjun5162/code/task2/faucet_coin/Move.toml b/mover/qiaopengjun5162/code/task2/faucet_coin/Move.toml index 1b517a2be..bbd11f6f4 100644 --- a/mover/qiaopengjun5162/code/task2/faucet_coin/Move.toml +++ b/mover/qiaopengjun5162/code/task2/faucet_coin/Move.toml @@ -3,6 +3,7 @@ name = "faucet_coin" edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move # license = "" # e.g., "MIT", "GPL", "Apache 2.0" # authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] +published-at = "0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a" [dependencies] Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } @@ -19,7 +20,8 @@ Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-fram # Override = { local = "../conflicting/version", override = true } [addresses] -faucet_coin = "0x0" +#faucet_coin = "0x0" +faucet_coin = "0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a" # Named addresses will be accessible in Move as `@name`. They're also exported: # for example, `std = "0x1"` is exported by the Standard Library. diff --git a/mover/qiaopengjun5162/code/task2/mycoin/Move.toml b/mover/qiaopengjun5162/code/task2/mycoin/Move.toml index e77f86f6a..8ea292df4 100644 --- a/mover/qiaopengjun5162/code/task2/mycoin/Move.toml +++ b/mover/qiaopengjun5162/code/task2/mycoin/Move.toml @@ -3,6 +3,7 @@ name = "mycoin" edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move # license = "" # e.g., "MIT", "GPL", "Apache 2.0" # authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] +published-at = "0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c" [dependencies] Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } @@ -19,7 +20,8 @@ Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-fram # Override = { local = "../conflicting/version", override = true } [addresses] -mycoin = "0x0" +#mycoin = "0x0" +mycoin = "0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c" # Named addresses will be accessible in Move as `@name`. They're also exported: # for example, `std = "0x1"` is exported by the Standard Library. diff --git a/mover/qiaopengjun5162/code/task4/NFTicketDraw/Move.lock b/mover/qiaopengjun5162/code/task4/NFTicketDraw/Move.lock new file mode 100644 index 000000000..7ed414e67 --- /dev/null +++ b/mover/qiaopengjun5162/code/task4/NFTicketDraw/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 2 +manifest_digest = "F5A4539C9C2E6073DC2B5D8BDEF12177AED4A438A739ABAC0F9672DB02306998" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { name = "Sui" }, + { name = "faucet_coin" }, +] + +[[move.package]] +name = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +name = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { name = "MoveStdlib" }, +] + +[[move.package]] +name = "faucet_coin" +source = { local = "../../task2/faucet_coin" } + +dependencies = [ + { name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.32.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd" +latest-published-id = "0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd" +published-version = "1" diff --git a/mover/qiaopengjun5162/code/task4/NFTicketDraw/Move.toml b/mover/qiaopengjun5162/code/task4/NFTicketDraw/Move.toml new file mode 100644 index 000000000..ba14aa524 --- /dev/null +++ b/mover/qiaopengjun5162/code/task4/NFTicketDraw/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "NFTicketDraw" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +faucet_coin = {local = "../../task2/faucet_coin"} + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +nfticketdraw = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/qiaopengjun5162/code/task4/NFTicketDraw/sources/nfticketdraw.move b/mover/qiaopengjun5162/code/task4/NFTicketDraw/sources/nfticketdraw.move new file mode 100644 index 000000000..e3c21fe40 --- /dev/null +++ b/mover/qiaopengjun5162/code/task4/NFTicketDraw/sources/nfticketdraw.move @@ -0,0 +1,163 @@ +/// Module: nfticketdraw +module nfticketdraw::nfticketdraw { + use sui::balance::{Self, Balance}; + use sui::clock::Clock; + use sui::coin::{Self, Coin}; + use sui::event::emit; + use sui::random::{Random, new_generator}; + use faucet_coin::faucet_coin::FAUCET_COIN; + + const EGameInProgress: u64 = 0; + const EGameAlreadyCompleted: u64 = 1; + const EInvalidAmount: u64 = 2; + const EGameMismatch: u64 = 3; + const ENotWinner: u64 = 4; + const ENoParticipants: u64 = 5; + + public struct Game has key { + id: UID, + cost_in_coin: u64, + participants: u32, + end_time: u64, + winner: Option, + balance: Balance, + } + + public struct Ticket has key { + id: UID, + game_id: ID, + participant_index: u32, + } + + // Events + public struct GameCreated has copy, drop { + game_id: ID, + end_time: u64, + cost_in_coin: u64, + } + + public struct TicketPurchased has copy, drop { + game_id: ID, + participant_index: u32, + ticket_id: ID, + } + + public struct WinnerDetermined has copy, drop { + game_id: ID, + winner_index: u32, + } + + public struct RewardRedeemed has copy, drop { + game_id: ID, + participant_index: u32, + amount: u64, + } + + + public fun create(end_time: u64, cost_in_coin: u64, ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + cost_in_coin, + participants: 0, + end_time, + winner: option::none(), + balance: balance::zero(), + }; + + emit(GameCreated { + game_id: object::id(&game), + end_time, + cost_in_coin, + }); + + transfer::share_object(game); + } + + entry fun determine_winner(game: &mut Game, r: &Random, clock: &Clock, ctx: &mut TxContext) { + assert!(game.end_time <= clock.timestamp_ms(), EGameInProgress); + assert!(game.winner.is_none(), EGameAlreadyCompleted); + assert!(game.participants > 0, ENoParticipants); + let mut generator = r.new_generator(ctx); + let winner = generator.generate_u32_in_range(1, game.participants); + game.winner = option::some(winner); + + emit(WinnerDetermined { + game_id: object::id(game), + winner_index: winner, + }); + } + + public fun buy_ticket(game: &mut Game, coin: Coin, clock: &Clock, ctx: &mut TxContext): Ticket { + assert!(game.end_time > clock.timestamp_ms(), EGameAlreadyCompleted); + assert!(coin.value() == game.cost_in_coin, EInvalidAmount); + + game.participants = game.participants + 1; + coin::put(&mut game.balance, coin); + + let ticket = Ticket { + id: object::new(ctx), + game_id: object::id(game), + participant_index: game.participants, + }; + + emit(TicketPurchased { + game_id: object::id(game), + participant_index: ticket.participant_index, + ticket_id: object::id(&ticket), + }); + ticket + } + + public fun redeem(ticket: Ticket, game: Game, ctx: &mut TxContext): Coin { + assert!(object::id(&game) == ticket.game_id, EGameMismatch); + assert!(game.winner.contains(&ticket.participant_index), ENotWinner); + // 保存信息,以便在事件中使用 + let game_id = object::id(&game); + let participant_index = ticket.participant_index; + let reward_amount = game.balance.value(); + destroy_ticket(ticket); + + let Game { id, cost_in_coin: _, participants: _, end_time: _, winner: _, balance } = game; + object::delete(id); + let reward = balance.into_coin(ctx); + + emit(RewardRedeemed { + game_id, + participant_index, + amount: reward_amount, + }); + + reward + } + + public fun destroy_ticket(ticket: Ticket) { + let Ticket { id, game_id: _, participant_index: _ } = ticket; + object::delete(id); + } + + #[test_only] + public fun cost_in_coin(game: &Game): u64 { + game.cost_in_coin + } + + #[test_only] + public fun end_time(game: &Game): u64 { + game.end_time + } + + #[test_only] + public fun participants(game: &Game): u32 { + game.participants + } + + #[test_only] + public fun winner(game: &Game): Option { + game.winner + } + + #[test_only] + public fun balance(game: &Game): u64 { + game.balance.value() + } +} + diff --git a/mover/qiaopengjun5162/code/task4/NFTicketDraw/tests/nfticketdraw_tests.move b/mover/qiaopengjun5162/code/task4/NFTicketDraw/tests/nfticketdraw_tests.move new file mode 100644 index 000000000..ba027b1d2 --- /dev/null +++ b/mover/qiaopengjun5162/code/task4/NFTicketDraw/tests/nfticketdraw_tests.move @@ -0,0 +1,19 @@ +/* +#[test_only] +module nfticketdraw::nfticketdraw_tests { + // uncomment this line to import the module + // use nfticketdraw::nfticketdraw; + + const ENotImplemented: u64 = 0; + + #[test] + fun test_nfticketdraw() { + // pass + } + + #[test, expected_failure(abort_code = ::nfticketdraw::nfticketdraw_tests::ENotImplemented)] + fun test_nfticketdraw_fail() { + abort ENotImplemented + } +} +*/ diff --git a/mover/qiaopengjun5162/notes/task4.md b/mover/qiaopengjun5162/notes/task4.md new file mode 100644 index 000000000..a492020a8 --- /dev/null +++ b/mover/qiaopengjun5162/notes/task4.md @@ -0,0 +1,609 @@ +# NFT Ticket Draw + • create: 创建游戏。 + • buy_ticket: 用户购买门票。 + • determine_winner: 在游戏结束时确定赢家。 + • redeem: 赢家兑换奖励。 + +这是一个简单的流程,通过创建、购买、确定赢家和奖励兑换完成整个游戏逻辑。 + +## 实操 +### 发布 +```shell +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 5.2s +➜ sui client publish --gas-budget 100000000 --skip-fetch-latest-git-deps --skip-dependency-verification +[warn] Client/Server api version mismatch, client api version : 1.32.0, server api version : 1.36.2 +INCLUDING DEPENDENCY faucet_coin +INCLUDING DEPENDENCY Sui +INCLUDING DEPENDENCY MoveStdlib +BUILDING NFTicketDraw +Skipping dependency verification +Transaction Digest: GorLrz7Kk8JH55ANCxLaUNcWCeimTJm1qpBecuWRf85H +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Owner: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Budget: 100000000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Version: 315156592 │ +│ │ Digest: f7KBAZSKxmYDvmu5uzApmMf4pSawZeeFS16qQjYLWqP │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ │ 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ eH0M8wVgFBpd7bddp0/G2Y7/ea9PZ19d3D2iFeuR6kxVfT2Jl72HqZJK2D9NDOBl6u/p6WCFCGmfFCuVQj0LCw== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: GorLrz7Kk8JH55ANCxLaUNcWCeimTJm1qpBecuWRf85H │ +│ Status: Success │ +│ Executed Epoch: 575 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: FmkXfa3FmDp4GMBZ9m6A3qE2KnwKQWaParSascMAyQqD │ +│ └── │ +│ ┌── │ +│ │ ID: 0xcf45b8cafcc50b47db08e1f1d32604bc0f568d27d1d240f6b7a26357f9a56586 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156593 │ +│ │ Digest: 9KDX5QEkVc3Pno9K1YcupWLnBY5a1RJtJo8Ci76mnqaW │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156593 │ +│ │ Digest: 3zg1TxSMcUg8VJWkZ6CXS9XqJs57fsfh4oyrRpfph6XV │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156593 │ +│ │ Digest: 3zg1TxSMcUg8VJWkZ6CXS9XqJs57fsfh4oyrRpfph6XV │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 20558000 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 49puDQZwHRnu7zYoARCjco1dFKMiK7LVSS8B5Si1yVdh │ +│ 8MkMyu5cseLwqyWDwg947q7U2d7ipSoGu9LZQh744JRJ │ +│ GpZPCRjYwezkdC2PGVFrJDdTzkN6KVJwarqB7roPDWKE │ +│ GvbJ8ia1HfavuccAmi8EJJAaCGShtdv4NWrs1B13vvom │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0xcf45b8cafcc50b47db08e1f1d32604bc0f568d27d1d240f6b7a26357f9a56586 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 315156593 │ +│ │ Digest: 9KDX5QEkVc3Pno9K1YcupWLnBY5a1RJtJo8Ci76mnqaW │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 315156593 │ +│ │ Digest: 3zg1TxSMcUg8VJWkZ6CXS9XqJs57fsfh4oyrRpfph6XV │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd │ +│ │ Version: 1 │ +│ │ Digest: FmkXfa3FmDp4GMBZ9m6A3qE2KnwKQWaParSascMAyQqD │ +│ │ Modules: nfticketdraw │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -20329880 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 10.5s +➜ + +``` + + +调用方法 +````shell +export PACKAGE_ID=0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c +export TREASURYCAP_ID=0x3f2b8b45d2e7c655026dec24c15e220d18a23ed624e9caa0ccac4814aad554f2 +sui client call --function mint --module mycoin --package $PACKAGE_ID --args $TREASURYCAP_ID 100 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 --gas-budget 10000000 + + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 10.5s +➜ export PACKAGE_ID=0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ export MySupply=0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ sui client call --function mint --module faucet_coin --package $PACKAGE_ID --args $MySupply 100 --gas-budget 10000000 +[warn] Client/Server api version mismatch, client api version : 1.32.0, server api version : 1.36.2 +Transaction Digest: F8V1rPcLYR7QijakrbkZkzPEMfJeanUaPAidLnUTj9C7 +╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├─────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Owner: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Budget: 10000000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Version: 315156593 │ +│ │ Digest: 3zg1TxSMcUg8VJWkZ6CXS9XqJs57fsfh4oyrRpfph6XV │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├─────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Imm/Owned Object ID: 0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c │ │ +│ │ 1 Pure Arg: Type: u64, Value: "100" │ │ +│ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: mint │ │ +│ │ │ Module: faucet_coin │ │ +│ │ │ Package: 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ n+6assbsM2KmMWFAgbTPE2xMGvlmXov1EByhHtRx7i3iv2TxHglVCWLkjmIEPZCzYKciq81kzNNBc/5PZP9DBA== │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: F8V1rPcLYR7QijakrbkZkzPEMfJeanUaPAidLnUTj9C7 │ +│ Status: Success │ +│ Executed Epoch: 575 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0xd9823fcb352a8b61ae290f8aba32ca5af406b85f32f01efd620a53596fbb3760 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: 8rhB1mDAUph9JwwLMr8kKsokwmmRXKsJ13ehHFco9igM │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ ┌── │ +│ │ ID: 0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: DWG5H6EtqrCRwrCCn4woVcSuvKTsabzbwQQXV32FjkNe │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 3815200 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 2362536 MIST │ +│ Non-refundable Storage Fee: 23864 MIST │ +│ │ +│ Transaction Dependencies: │ +│ GorLrz7Kk8JH55ANCxLaUNcWCeimTJm1qpBecuWRf85H │ +│ GvbJ8ia1HfavuccAmi8EJJAaCGShtdv4NWrs1B13vvom │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0xd9823fcb352a8b61ae290f8aba32ca5af406b85f32f01efd620a53596fbb3760 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::coin::Coin<0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a::faucet_coin::FAUCET_COIN> │ +│ │ Version: 315156594 │ +│ │ Digest: 8rhB1mDAUph9JwwLMr8kKsokwmmRXKsJ13ehHFco9igM │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a::faucet_coin::MySupply │ +│ │ Version: 315156594 │ +│ │ Digest: DWG5H6EtqrCRwrCCn4woVcSuvKTsabzbwQQXV32FjkNe │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -2202664 │ +│ └── │ +│ ┌── │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ CoinType: 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a::faucet_coin::FAUCET_COIN │ +│ │ Amount: 100 │ +│ └── │ + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 5.3s +➜ + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 10.5s +➜ export PACKAGE_ID=0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ export MySupply=0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ sui client call --function mint --module faucet_coin --package $PACKAGE_ID --args $MySupply 100 --gas-budget 10000000 +[warn] Client/Server api version mismatch, client api version : 1.32.0, server api version : 1.36.2 +Transaction Digest: F8V1rPcLYR7QijakrbkZkzPEMfJeanUaPAidLnUTj9C7 +╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├─────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Owner: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Budget: 10000000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Version: 315156593 │ +│ │ Digest: 3zg1TxSMcUg8VJWkZ6CXS9XqJs57fsfh4oyrRpfph6XV │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├─────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Imm/Owned Object ID: 0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c │ │ +│ │ 1 Pure Arg: Type: u64, Value: "100" │ │ +│ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: mint │ │ +│ │ │ Module: faucet_coin │ │ +│ │ │ Package: 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ n+6assbsM2KmMWFAgbTPE2xMGvlmXov1EByhHtRx7i3iv2TxHglVCWLkjmIEPZCzYKciq81kzNNBc/5PZP9DBA== │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: F8V1rPcLYR7QijakrbkZkzPEMfJeanUaPAidLnUTj9C7 │ +│ Status: Success │ +│ Executed Epoch: 575 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0xd9823fcb352a8b61ae290f8aba32ca5af406b85f32f01efd620a53596fbb3760 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: 8rhB1mDAUph9JwwLMr8kKsokwmmRXKsJ13ehHFco9igM │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ ┌── │ +│ │ ID: 0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: DWG5H6EtqrCRwrCCn4woVcSuvKTsabzbwQQXV32FjkNe │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 3815200 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 2362536 MIST │ +│ Non-refundable Storage Fee: 23864 MIST │ +│ │ +│ Transaction Dependencies: │ +│ GorLrz7Kk8JH55ANCxLaUNcWCeimTJm1qpBecuWRf85H │ +│ GvbJ8ia1HfavuccAmi8EJJAaCGShtdv4NWrs1B13vvom │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0xd9823fcb352a8b61ae290f8aba32ca5af406b85f32f01efd620a53596fbb3760 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::coin::Coin<0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a::faucet_coin::FAUCET_COIN> │ +│ │ Version: 315156594 │ +│ │ Digest: 8rhB1mDAUph9JwwLMr8kKsokwmmRXKsJ13ehHFco9igM │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xbca89418717ee5dd5c1f63c46fd8e0d7ee57e1f1f80de39f5cfd4599b19a838c │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a::faucet_coin::MySupply │ +│ │ Version: 315156594 │ +│ │ Digest: DWG5H6EtqrCRwrCCn4woVcSuvKTsabzbwQQXV32FjkNe │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -2202664 │ +│ └── │ +│ ┌── │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ CoinType: 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a::faucet_coin::FAUCET_COIN │ +│ │ Amount: 100 │ +│ └── │ + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 5.3s +➜ + + +```` + +### 调用 create 方法 +```shell +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ export PACKAGE_ID=0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ echo $PACKAGE_ID +0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base +➜ sui client call --function create --module nfticketdraw --package $PACKAGE_ID --args 1731133219000 10 --gas-budget 10000000 +[warn] Client/Server api version mismatch, client api version : 1.32.0, server api version : 1.36.2 +Transaction Digest: 3ZymeB9CVZdkwQBuaP1NJtPZU5hT2tkmVRqUGJYJbPeG +╭─────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├─────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Owner: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ Gas Budget: 10000000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Version: 315156594 │ +│ │ Digest: GoYBWwEuVTgfcKgkKn5qyXx9KFtUNdYW4CfCDpCsqNMk │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭─────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├─────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: u64, Value: "1731133219000" │ │ +│ │ 1 Pure Arg: Type: u64, Value: "10" │ │ +│ ╰─────────────────────────────────────────────────╯ │ +│ ╭──────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 MoveCall: │ │ +│ │ ┌ │ │ +│ │ │ Function: create │ │ +│ │ │ Module: nfticketdraw │ │ +│ │ │ Package: 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd │ │ +│ │ │ Arguments: │ │ +│ │ │ Input 0 │ │ +│ │ │ Input 1 │ │ +│ │ └ │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ ZVSiXxelLzzMFN04k78EWpFytHO/7xIiux22skcH1+lc+sVSKOK34Mvb2SXhgkpGZai4SV/amek21gKwhg91Ag== │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: 3ZymeB9CVZdkwQBuaP1NJtPZU5hT2tkmVRqUGJYJbPeG │ +│ Status: Success │ +│ Executed Epoch: 576 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x4cb5381be46a8246721a0a7f843b89a617056286d473881cce087e4b706d3ca9 │ +│ │ Owner: Shared( 315156595 ) │ +│ │ Version: 315156595 │ +│ │ Digest: 77KJVZk8kqfdPEshi2RwEKenD3PmpNHHXV9JUJbNwszr │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156595 │ +│ │ Digest: AXJif6s2989Jo6EA2XuS1emhoNLh2cEuHhg5T2BZozAS │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ Version: 315156595 │ +│ │ Digest: AXJif6s2989Jo6EA2XuS1emhoNLh2cEuHhg5T2BZozAS │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 2523200 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ F8V1rPcLYR7QijakrbkZkzPEMfJeanUaPAidLnUTj9C7 │ +│ GorLrz7Kk8JH55ANCxLaUNcWCeimTJm1qpBecuWRf85H │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Block Events │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ EventID: 3ZymeB9CVZdkwQBuaP1NJtPZU5hT2tkmVRqUGJYJbPeG:0 │ +│ │ PackageID: 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd │ +│ │ Transaction Module: nfticketdraw │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ EventType: 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd::nfticketdraw::GameCreated │ +│ │ ParsedJSON: │ +│ │ ┌──────────────┬────────────────────────────────────────────────────────────────────┐ │ +│ │ │ cost_in_coin │ 10 │ │ +│ │ ├──────────────┼────────────────────────────────────────────────────────────────────┤ │ +│ │ │ end_time │ 1731133219000 │ │ +│ │ ├──────────────┼────────────────────────────────────────────────────────────────────┤ │ +│ │ │ game_id │ 0x4cb5381be46a8246721a0a7f843b89a617056286d473881cce087e4b706d3ca9 │ │ +│ │ └──────────────┴────────────────────────────────────────────────────────────────────┘ │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x4cb5381be46a8246721a0a7f843b89a617056286d473881cce087e4b706d3ca9 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Shared( 315156595 ) │ +│ │ ObjectType: 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd::nfticketdraw::Game │ +│ │ Version: 315156595 │ +│ │ Digest: 77KJVZk8kqfdPEshi2RwEKenD3PmpNHHXV9JUJbNwszr │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0xb2a2ed6532874381998c171774c9411200033c3f7c4fa4899c28627ae2857f29 │ +│ │ Sender: 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 315156595 │ +│ │ Digest: AXJif6s2989Jo6EA2XuS1emhoNLh2cEuHhg5T2BZozAS │ +│ └── │ +╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73 ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -2295080 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + +letsmove/mover/qiaopengjun5162/code/task4/NFTicketDraw on  main [⇣!?] via 🅒 base took 5.2s +➜ + +``` + +## 参考 +- 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd +- https://suiscan.xyz/mainnet/object/0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c/contracts +- https://suiscan.xyz/mainnet/object/0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c/txs +- https://suiscan.xyz/mainnet/object/0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a/contracts +- https://suiscan.xyz/mainnet/object/0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd/txs +- https://suiscan.xyz/mainnet/tx/3ZymeB9CVZdkwQBuaP1NJtPZU5hT2tkmVRqUGJYJbPeG \ No newline at end of file diff --git a/mover/qiaopengjun5162/readme.md b/mover/qiaopengjun5162/readme.md index 3dbfa99d6..26698701d 100644 --- a/mover/qiaopengjun5162/readme.md +++ b/mover/qiaopengjun5162/readme.md @@ -11,7 +11,7 @@ - 工作经验: 3年 - 技术栈: `Rust` `Python` `Go` - 多年web2开发经验,对Move特别感兴趣,想通过Move入门区块链 -- 联系方式: tg: `xxx` +- 联系方式: tg: `qiao4812` ## 任务 @@ -21,26 +21,38 @@ ## 02 move coin -- [] My Coin package id : 0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c -- [] Faucet package id : 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a -- [] 转账 `My Coin` hash: Hk2m48YK9VbDL8cdLAMM119ZDHiqGuBJttC1zE2jH6yh +- [x] My Coin package id : 0x0c303dc81a35841a80e40462b6f96d9b1a9e519e1b01ddfc94be00061127fa0c +- [x] Faucet package id : 0x3bd35a5bf5f3649d37a9eff58403950b99b135667be45fd776515b2d2316e63a +- [x] 转账 `My Coin` hash: Hk2m48YK9VbDL8cdLAMM119ZDHiqGuBJttC1zE2jH6yh ## 03 move NFT -- [] nft package id : 0x09e14939fb34df6f3322aee8ccc6b11bf8f5a77b68e82a77b3edcf91515b74c5 -- [] nft object id : 0x6f0da7613e0c334f2f28dabd9e48ed46fd57e5f0e94426dd03feed98ce11ab91 -- [] 转账 nft hash: J265bgtRvkGiP5D7TRH4qrFPQJ1xGPbvgkPAhhHNJAXN +- [x] nft package id : 0x09e14939fb34df6f3322aee8ccc6b11bf8f5a77b68e82a77b3edcf91515b74c5 +- [x] nft object id : 0x6f0da7613e0c334f2f28dabd9e48ed46fd57e5f0e94426dd03feed98ce11ab91 +- [x] 转账 nft hash: J265bgtRvkGiP5D7TRH4qrFPQJ1xGPbvgkPAhhHNJAXN ## 04 Move Game -- [] game package id : -- [] call game hash: +- [x] game package id : 0x496748d4d94c241583d915fb6e81f52601dc2c813af3d5e9584d5643d69f1afd +- [x] deposit Coin hash: F8V1rPcLYR7QijakrbkZkzPEMfJeanUaPAidLnUTj9C7 +- [x] play game hash: 3ZymeB9CVZdkwQBuaP1NJtPZU5hT2tkmVRqUGJYJbPeG ## 05 Move Swap - [] swap package id : -- [] call swap hash: +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : -## 06 SDK PTB +## 06 Dapp-kit SDK PTB - [] save hash : + +## 07 Move CTF Check In + +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move + +- [] proof : +- [] flag hash : diff --git a/mover/qiaopengjun5162/scan/readme.md b/mover/qiaopengjun5162/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/qiaopengjun5162/scan/readme.md @@ -0,0 +1 @@ + diff --git a/mover/qwrdxer/code/task3/source.move b/mover/qwrdxer/code/task3/source.move new file mode 100644 index 000000000..d68dd5f52 --- /dev/null +++ b/mover/qwrdxer/code/task3/source.move @@ -0,0 +1,70 @@ +/* +/// Module: task3_nft +module task3_nft::task3_nft; +*/ +module task3_nft::mynft{ + use std::string; + use std::string::String; + use sui::display::new_with_fields; + use sui::package::claim; + use sui::transfer::transfer; + use sui::tx_context::sender; + + public struct QwrdxerNFT has key, store { + id: UID, + name: String, + image_url: String, + } + + /// One-Time-Witness for the module. + public struct MYNFT has drop {} + fun init(otw:MYNFT,ctx:&mut TxContext){ + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"https://sui-heroes.io/hero/{id}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"A true Hero of the Sui ecosystem!".to_string(), + // Project URL is usually static + b"https://sui-heroes.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = claim(otw, ctx); + // Get a new `Display` object for the `Hero` type. + let mut display = new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + let nft=QwrdxerNFT{ + id:object::new(ctx), + name:string::utf8(b"qwrdxer give you a nft"), + image_url:string::utf8(b"https://avatars.githubusercontent.com/u/46155167?s=400&u=a0f8c62e5478bbf48e50dfeac6dc99240a384f3e&v=4") + }; + transfer::public_transfer(nft,sender(ctx)); + } + public entry fun mint(name:String,image_url:String,target:address,ctx:&mut TxContext){ + let id=object::new(ctx); + let nft=QwrdxerNFT{id,name,image_url}; + + transfer::public_transfer(nft,target); + } +} \ No newline at end of file diff --git a/mover/qwrdxer/code/task4/blog.md b/mover/qwrdxer/code/task4/blog.md new file mode 100644 index 000000000..24a1a99d7 --- /dev/null +++ b/mover/qwrdxer/code/task4/blog.md @@ -0,0 +1,438 @@ +## 一、博客概述 + +### 1 目标 + +Let's Move 一项学Move获得SUI的激励计划,鼓励更多的人学习Move语言,本篇为task4任务的实现与代码分析。 + +任务目标: +1. 完成 链游相关知识的学习 +2. 完成 随机数的学习,游戏必须包含随机数 +3. 完成 存和取游戏资金池 +4. 完成 如何存储Coin在合约的学习,游戏必须能存取[task2] 发行的Faucet Coin,用task2的 Faucet Coin作为游戏输赢的资产 +5. 完成 第一个游戏合约部署主网 + +### 2 游戏设计 +游戏的逻辑比较简单,从玩家的视角来看,每次消耗20 `faucetCoin` 进行NFT抽奖, 消耗的Coin会存入奖池中,玩家可以选择销毁NFT来兑换一定数量的`faucetCoin`。具体概率和兑换率如下: +- 附魔金苹果 获取概率10% ,可以兑换奖池总量的5%的COIN +- 金苹果 ,获取概率20%,可以兑换奖池总量的3.33%的COIN +- 苹果,获取概率30% ,可以兑换奖池总量的1%的COIN +- 面包,获取概率40% ,可以兑换 10个COIN + + +## 二、简单游玩 +这里展示在测试网(Testnet)下游玩,核心步骤为: ** 领水 **,qwrdxerfaucetcoin是参与游戏用到的代币, ** 参与游戏 **,调用函数`raffle_play` 消耗20 代币来抽取NFT, ** 销毁NFT获取代币奖励 ** ,玩家可以选择销毁NFT来获取奖励 +### step 1 领水 +首先是领水 `faucetqwrdxercoin` 这是task2实现的水龙头,领取方法是将{your_address} 替换为自己的钱包地址 +```rust +sui client call --package 0x319ea40d6a669cd26f787fb432d2bd29b0bf71f9354486eae9bbab8517ff6bb0 --module faucetqwrdxercoin --function mint --args 0xdaba562b748d108e6cea27d23a7c8487729a60ff041cbb31d6c7c7bd92d1e8a1 10000000000 {your_address} --gas-budget 10000000 +``` + +我的地址是`0xb46e2163b148387c16d965466b2f850e7ae89dadf00de6a479af4973dc69ccde` ,执行命令如下: +```rust +sui client call --package 0x319ea40d6a669cd26f787fb432d2bd29b0bf71f9354486eae9bbab8517ff6bb0 --module faucetqwrdxercoin --function mint --args 0xdaba562b748d108e6cea27d23a7c8487729a60ff041cbb31d6c7c7bd92d1e8a1 1000000000 0xb46e2163b148387c16d965466b2f850e7ae89dadf00de6a479af4973dc69ccde --gas-budget 10000000 +``` + + +执行命令`sui client balance --with-coins` 查看是否获取成功,顺便记一下coinId,等会要用到。注意`faucetqwrdxercoin`的精度是6,所以balance值除以10^6才是真实coin数量,这里领取了1000个COIN + +![当前balance](./image/accountbalance.png) +### step 2 抽NFT +游戏游玩方式比较简单,每次用户需要支付20个`FAUCETQWRDXERCION` 给合约,合约会生成一个1~1000的随机数,根据值来判断发放什么NFT,最好的NFT需要值大于900。执行如下命令即可,将coinId替换为自己的coinId,注意coin对象的balance要大于20个才能参加游戏。 +```bash + sui client call --package 0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba \ + --module mcraffle --function raffle_play \ + --args 0xeb9f401eae86c5cfb72f097dd507543a05eca0f40a88d0aa98a7d7977ef56b31 0x8 {coinId} --gas-budget 100000000 + +``` + +我的执行命令: +```rust + sui client call --package 0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba \ + --module mcraffle --function raffle_play \ + --args 0xeb9f401eae86c5cfb72f097dd507543a05eca0f40a88d0aa98a7d7977ef56b31 0x8 0x3138d7659abcdd6fb5d627c3dd405e7b509aa3b0a3d727b4b0c88abeba38e96a --gas-budget 100000000 +``` + +翻看一下日志,首先是随机数,我的随机数是546,获得一个苹果NFT +![random](./image/random.png) + +消耗了20 `FAUCETQWRDXERCOIN` +![cost](./image/addbalance.png) + +水领了1000,能玩50次,我运行了整整`21`次才得到最好的NFT:`附魔金苹果`(非酋) , 可以去suiscan的testnet查看一下 +https://suiscan.xyz/testnet/account/0xb46e2163b148387c16d965466b2f850e7ae89dadf00de6a479af4973dc69ccde/portfolio +![suiscan](./image/suiscan.png) + + +抽到的NFT可以兑换奖池中的`FAUCETQWRDXERCOIN` ,为了提高测试体验,我提高了概率和回报(伟大,无需多言)。 +- 附魔金苹果 获取概率10% ,可以兑换奖池总量的5%的COIN +- 金苹果 ,获取概率20%,可以兑换奖池总量的3.33%的COIN +- 苹果,获取概率30% ,可以兑换奖池总量的1%的COIN +- 面包,获取概率40% ,可以兑换 10个COIN + +### step3 销毁NFT获取奖励 +我刚才抽了21次,现在奖池只有20* 21=420 COIN,还好我是管理员,给奖池加一笔巨款,自娱自乐一下! +```rust + sui client call --package 0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba \ + --module mcraffle --function depositeCoin \ + --args 0xa1c0cbf7c63ce1f5c06f5c4dbf42104466f124e8036737affc8ae70d13fb3020 0xeb9f401eae86c5cfb72f097dd507543a05eca0f40a88d0aa98a7d7977ef56b31 0x65c74336c29ca207c2a3ac3505e04033e25b2ee87127bb221a86c62370cbb967 10000000000000--gas-budget 100000000 +``` +![addabalance](./image/poolamount.png) +注意这个`depositeCoin`函数需要有管理员权限,大家是用不了的哦,现在有100万个左右的COIN, 我用金苹果能兑换奖池的3.3333% 也就是三万个左右的COIN + +现在就拿我抽到的NFT来兑换COIN了,主要是需要传入NFT的ID,合约销毁这个NFT后会按照NFT的类型发放COIN奖励,NFT的Id可以在浏览器和日志上找到。执行命令如下: +```rust + sui client call --package 0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba \ + --module mcraffle --function raffle_exchange \ + --args 0xeb9f401eae86c5cfb72f097dd507543a05eca0f40a88d0aa98a7d7977ef56b31 {NFT ID}--gas-budget 100000000 + +``` +我的金苹果ID为 `0x6cbd79fd6a51b7d8837c2a0ae4ab88a25ffe82b3a05340f4f75a7ea1a3f3f938` +```rust + sui client call --package 0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba \ + --module mcraffle --function raffle_exchange \ + --args 0xeb9f401eae86c5cfb72f097dd507543a05eca0f40a88d0aa98a7d7977ef56b31 0xe1fb9d436fffea6e768308c7672bde73c2f0ef5b6a52ec892a23e872815db125 --gas-budget 100000000 + +``` +理所当然的,我会获得三万个coin,赢麻了 +![win](./image/win.png) + +查看钱包,确实到账了 +![acc](./image/acc.png) + + + +## 三、项目分析 + +### 3.1 整体设计 + + 1. 游戏需要一个资金池用于存储和发放代币奖励,这个代币是 `task2`发布的,要导入这个项目包 + 2. 管理员有`权限`可以随时存取资金池的代币 + 3. 游戏基于概率,因此需要用到`随机数` + 4. 用户参与游戏和获得奖励就是`NFT的创建与销毁` + +接下来就是详细的代码分析 + +### 3.0 导包 +在本项目的`Move.toml` 的[dependencies] 下是记录包依赖的位置,在这里指定用到的代币项目位置 +```toml +task2_coin={local="../task2_coin"} +``` +注意这个位置是通过`sui move new projectname`创建项目时, `projectname`所在路径 + +--- +至于为啥不用指定链上代币所在的包id,因为在代币项目发布时,`Move.lock`会记录项目所在的链上包id,sui会自动使用发布的最新报id, 翻看`Move.lock` 最下面就有类似如下的记录: +```rust +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba" +latest-published-id = "0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba" +published-version = "1" +``` +Ok,直接啃代码,代码逻辑还是比较清楚的,但有些冗余代码,还请见谅。 +### 3.1 结构体定义 + +```rust +module task4_game::mcraffle{ + public struct AdminCap has key { //管理员权限对象 + id: UID + } + public struct GamePool has key{ //游戏资金池 + id:UID, + balance:Balance + } + + public struct GameNFT has key, store { //游戏NFT + id: UID, + name: String, + image_url: String, + catalog: u8 //NFT类型 1 2 3 4 + } + //随机数结果日志 + public struct GameResultEmit has drop,copy{ + r1:u16, + user_address:address + } + //奖池当前coin数量日志 + //随机数结果日志 + public struct PoolAmountEmit has drop,copy{ + pool_amount:u64, + } + public struct MCRAFFLE has drop{} +``` +`AdminCap` 为管理员权限对象,在项目初始化时会将其发送给合约部署者,合约部署着有权利对资金池进行随时的存取 + +`GamePool` 为游戏的资金池, 其`balance` 成员变量存储了资金池拥有的代币 + +`GameNFT` 为游戏的NFT, catalog代表类型,一共有四个类型的NFT:附魔金苹果、金苹果、苹果、面包,根据用户抽奖结果创建不同的NFT并发放给玩家 + +`GameResultEmit`和 `PoolAmountEmit` 是日志结构体, 方便查看合约调用结果。 +`MCRAFFLE` 用到了`otw` 这在游戏NFT创建时会用到 + +### 3.2 初始化函数分析 + +虽然代码看着比较多,但很大一部分都是NFT创建的标准流程,个人对这部分还未完全了解,就不详细介绍了,大家也可以直接跳过NFT创建的代码 +```rust + fun init(otw: MCRAFFLE, ctx:&mut TxContext){ + + //------------------------------这是一对NFT标准创建流程代码----------------------------- + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"raffle".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"Raffle".to_string(), + // Project URL is usually static + b"https://sui-raffle.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = claim(otw, ctx); + // Get a new `Display` object for the `Hero` type. + let mut display = new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + //------------------------------这是一堆NFT标准创建流程代码----------------------------- + let mcrafflePool=GamePool{ + id:object::new(ctx), + balance: balance::zero(), + }; + transfer::share_object(mcrafflePool); //大家都能访问这个游戏对象 + transfer::transfer(AdminCap{id:object::new(ctx)},tx_context::sender(ctx))//把权限给部署合约的人 + } +``` +总之,创建GameNFT后,就是游戏的一些对象创建,首先是游戏奖池对象的创建, 将这个对象的balance成员设置为0,随后调用 `share_object`函数将其共享出去,后续的游戏操作其实都是对GameNFT 和 奖池对象的操做。 +然后就是创建管理员权限对象 `AdminCap` 发送给合约部署者。 + + +### 3.3 游戏函数分析 + +先介绍一下大概流程: 用户带着自己的代币对象和共享的资金池对象、随机数种子调用这个函数, +1. 首先判断用户的代币对象的balance是否达到入场费的要求20个Coin +2. 将入场费存储奖池中 +3. 生成一个1~1000范围的随机数 +4. 将随机数的值写入区块链日志中,方便查看结果 +5. 根据随机数的结果创建相应的NFT发送给玩家 +```rust +const ENRTY_COIN:u64=20_000000;//入场费用 20 COIN + public entry fun raffle_play( + mcrafflePool:&mut GamePool, + rdm:&Random, + coin:&mut Coin, + ctx:&mut TxContext + ) { + //用户资金是否大于20 + assert!( + coin.value() >= ENRTY_COIN, + InSufficientBalance + ); + // 存入奖池中 + let split_balance = balance::split(balance_mut(coin), ENRTY_COIN); + balance::join(&mut mcrafflePool.balance, split_balance); + //生成 一个1~1000范围的随机数 + let mut gen = random::new_generator(rdm, ctx); + let r1 = random::generate_u16_in_range(&mut gen, 1, 1000); + emit(GameResultEmit { r1: r1, user_address: tx_context::sender(ctx) });//结果放到日志里面 + + if (r1 >900) { + //如果为111,222,333,444 ... + //发放附魔金苹果NFT + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the Enchanted Golden Apple!"), + image_url: string::utf8(b"https://i.mcmod.cn/item/icon/128x128/11/118550.png"), + catalog: 1 + }; + transfer::public_transfer(nft, sender(ctx)); + }else if (r1 > 700) { + //发放金苹果NFT + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the Golden Apple!"), + image_url: string::utf8(b"https://i.mcmod.cn/editor/upload/20240915/1726376603_899182_aqta.webp"), + catalog: 2 + }; + transfer::public_transfer(nft, sender(ctx)); + }else if(r1 > 400) { + //发放普通 苹果 + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the Apple!"), + image_url: string::utf8(b"https://i.mcmod.cn/editor/upload/20241014/1728881348_899182_HjeV.webp"), + catalog: 3 + }; + transfer::public_transfer(nft, sender(ctx)); + }else if (r1 > 200) { + //发放面包 + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the BREAD!"), + image_url: string::utf8(b"https://i.mcmod.cn/editor/upload/20240915/1726382983_899182_YYyp.webp"), + catalog: 4 + }; + transfer::public_transfer(nft, sender(ctx)); + } + } +``` + +首先分析一下代币是如何存入奖池的 + +```rust +let split_balance = balance::split(balance_mut(coin), ENRTY_COIN); + balance::join(&mut mcrafflePool.balance, split_balance); +``` +1. 函数传入的`coin`是一个可变引用`coin:&mut Coin,` 这表示函数用户知晓函数有权利对代币对象进行修改了, `balance_mut(coin)` 就是获取coin对象的balance,可以对balance进行修改(取出入场费)。 +2. `balance::split`就是扣除指定数量的balance,创建一个新的balance。 +3. `balance::join`将指定数量的balance加入奖池中。 +4. `split_balance`变量没有drop能力,所以存取是守恒的,这是move语言的特性。 + +后续NFT创建和发送就比较简单了,代码还有点冗余, 主要是不同的nft的属性不同,所以需要分别创建。 + +### 3.4 NFT销毁&奖励获取函数 + +还是比较多冗余代码啊,大概流程: 1. 解构NFT对象获取id和catelog,根据catelog进行奖励发放,调用id.delete()销毁NFT + +```rust + //兑换函数 + public entry fun raffle_exchange(gamePool:&mut GamePool,nft:GameNFT,ctx:&mut TxContext){ + let GameNFT{id,name:_,image_url:_,catalog}=nft;// 解构NFT对象获取id和catelog + //根据类别转账 + if(catalog==1){ + let current_pool_balance=gamePool.balance.value();//获取奖池的balance,即存储的代币数量 + let withdrawamount=divide_and_round_up(current_pool_balance,20);//除以20, 为总数量的5% + let cach=take(&mut gamePool.balance,withdrawamount,ctx);//创建一个指定数量的代币对象 + transfer::public_transfer(cach,ctx.sender());//发送代币对象给NFT持有者 + }; + if(catalog==2){ + let current_pool_balance=gamePool.balance.value(); + let withdrawamount=divide_and_round_up(current_pool_balance,33);//除以33 ,为总数量的3% + let cach=take(&mut gamePool.balance,withdrawamount,ctx); + transfer::public_transfer(cach,ctx.sender()); + }; + if(catalog==3){ + let current_pool_balance=gamePool.balance.value(); + let withdrawamount=divide_and_round_up(current_pool_balance,100);//除以100 ,为总数量的1% + let cach=take(&mut gamePool.balance,withdrawamount,ctx); + transfer::public_transfer(cach,ctx.sender()); + }; + if(catalog==4){ + let current_pool_balance=gamePool.balance.value(); + let cach=take(&mut gamePool.balance,10_000000,ctx);//10个COIN + transfer::public_transfer(cach,ctx.sender()); + }; + + id.delete();//调用id.delete()销毁NFT + } +``` +分析一下 +`let cach=take(&mut gamePool.balance,withdrawamount,ctx);` + +take定义如下 +```rust +/// Take a `Coin` worth of `value` from `Balance`. +/// Aborts if `value > balance.value` +public fun take(balance: &mut Balance, value: u64, ctx: &mut TxContext): Coin { + Coin { + id: object::new(ctx), + balance: balance.split(value), + } +} +``` +内部还是调用了`balance.split(value)`来切分指定数量的balance,创建一个新的代币对象 + + +### 3.5 管理员的存取函数 + +大部分代码跟上文相同,但要注意函数参数有`AdminCap` 这代表只有拥有AdminCap的人才能调用这个函数,通过这个方法对权限进行了限制。 +```rust + // 管理员的存取函数 + public entry fun depositeCoin(_:&mut AdminCap,gamePool:&mut GamePool,coin:&mut Coin,amount:u64,_:&mut TxContext){ + assert!( + coin.value() >= amount, + InSufficientBalance + ); + let split_balance = balance::split(balance_mut(coin), amount); + balance::join(&mut gamePool.balance, split_balance); + emit(PoolAmountEmit{pool_amount:gamePool.balance.value()}) + } + public entry fun withdrawCoin(_:&mut AdminCap,gamePool:&mut GamePool,amount:u64,ctx:&mut TxContext){ + let cach=take(&mut gamePool.balance,amount,ctx); + transfer::public_transfer(cach,ctx.sender()); + emit(PoolAmountEmit{pool_amount:gamePool.balance.value()}) + } +``` +最开始我展示了如何存入100万个Coin,这里展示一下取出一些coin +```rust + sui client call --package 0x5ec8df24bb390dd04dbb9de47671dd43217f18f1f8dee0e783384f018efddcba \ + --module mcraffle --function withdrawCoin \ + --args 0xa1c0cbf7c63ce1f5c06f5c4dbf42104466f124e8036737affc8ae70d13fb3020 0xeb9f401eae86c5cfb72f097dd507543a05eca0f40a88d0aa98a7d7977ef56b31 100000000000 --gas-budget 100000000 +``` + +![bbb](image/bbb.png) + + +## 四、部署主网 + +> 切换主网 +```shell + sui client switch --env mainnet +``` +部署合约: 在faucetcoin 和 game项目下分别执行命令来部署代币合约和游戏合约 +```shell +sui client publish +``` + +> 领水 + +先领100wCoin ,放进奖池 +```shell +sui client call --package 0x9969677c39e8e668b0bc21db0ddf0aec6d636ebb71f210b593ff9a3154cafeb5 --module faucetqwrdxercoin --function mint --args 0xc7252962e51a9de3a58f8eaf0e3fd7acaebef1c457934cbb20bbe49e40b3c4cb 1000000000000 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b --gas-budget 10000000 +``` + +再领1000,用于抽奖 +```shell +sui client call --package 0x9969677c39e8e668b0bc21db0ddf0aec6d636ebb71f210b593ff9a3154cafeb5 --module faucetqwrdxercoin --function mint --args 0xc7252962e51a9de3a58f8eaf0e3fd7acaebef1c457934cbb20bbe49e40b3c4cb 1000000000 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b --gas-budget 10000000 +``` +> 管理员存入奖池depositeCoin + +```shell +sui client call --package 0x12aa2008a54b7be74ef8f4ee515498f8972299b22a90840ea14379ebc935f62f --module mcraffle --function depositeCoin --args 0xa250e6edf61f50871c7e632465a7dad236d8913246c2124830a1f8f8b59c022f 0xcf7d9c2e480afa08763f464cc4ae7bffed681d360d09e91fc6fe2a45693559ad 0xf755ff203949a11ccef9ffa461f59b8a4b75f74f9b4fd0fa32ad94da79acaec5 1000000000000 --gas-budget 10000000 +``` +> 管理员取出代币withdrawCoin + +```shell +sui client call --package 0x12aa2008a54b7be74ef8f4ee515498f8972299b22a90840ea14379ebc935f62f --module mcraffle --function withdrawCoin --args 0xa250e6edf61f50871c7e632465a7dad236d8913246c2124830a1f8f8b59c022f 0xcf7d9c2e480afa08763f464cc4ae7bffed681d360d09e91fc6fe2a45693559ad 100000000000 --gas-budget 10000000 +``` + +> 参与抽奖 + +```shell + sui client call --package 0x12aa2008a54b7be74ef8f4ee515498f8972299b22a90840ea14379ebc935f62f \ + --module mcraffle --function raffle_play \ + --args 0xcf7d9c2e480afa08763f464cc4ae7bffed681d360d09e91fc6fe2a45693559ad 0x8 0x5dc5a0252892d1d3dcc76dfff636d5bdf63ae066706981abea3f8f03da9aa98e --gas-budget 100000000 +``` + +>销毁NFT获取奖励 +```shell + sui client call --package 0x12aa2008a54b7be74ef8f4ee515498f8972299b22a90840ea14379ebc935f62f \ + --module mcraffle --function raffle_exchange \ + --args 0xcf7d9c2e480afa08763f464cc4ae7bffed681d360d09e91fc6fe2a45693559ad 0x15ddd8756bb58c976831be038bd6fe52820cfd3761dfa25e7e1b094b1f76b815 --gas-budget 100000000 +``` \ No newline at end of file diff --git a/mover/qwrdxer/code/task4/image/acc.png b/mover/qwrdxer/code/task4/image/acc.png new file mode 100644 index 000000000..eec233fc3 Binary files /dev/null and b/mover/qwrdxer/code/task4/image/acc.png differ diff --git a/mover/qwrdxer/code/task4/image/accountbalance.png b/mover/qwrdxer/code/task4/image/accountbalance.png new file mode 100644 index 000000000..c922cb3a5 Binary files /dev/null and b/mover/qwrdxer/code/task4/image/accountbalance.png differ diff --git a/mover/qwrdxer/code/task4/image/addbalance.png b/mover/qwrdxer/code/task4/image/addbalance.png new file mode 100644 index 000000000..1f2311c1b Binary files /dev/null and b/mover/qwrdxer/code/task4/image/addbalance.png differ diff --git a/mover/qwrdxer/code/task4/image/bbb.png b/mover/qwrdxer/code/task4/image/bbb.png new file mode 100644 index 000000000..48b6b4818 Binary files /dev/null and b/mover/qwrdxer/code/task4/image/bbb.png differ diff --git a/mover/qwrdxer/code/task4/image/poolamount.png b/mover/qwrdxer/code/task4/image/poolamount.png new file mode 100644 index 000000000..83c710044 Binary files /dev/null and b/mover/qwrdxer/code/task4/image/poolamount.png differ diff --git a/mover/qwrdxer/code/task4/image/random.png b/mover/qwrdxer/code/task4/image/random.png new file mode 100644 index 000000000..a0ab52ada Binary files /dev/null and b/mover/qwrdxer/code/task4/image/random.png differ diff --git a/mover/qwrdxer/code/task4/image/suiscan.png b/mover/qwrdxer/code/task4/image/suiscan.png new file mode 100644 index 000000000..b93941c4f Binary files /dev/null and b/mover/qwrdxer/code/task4/image/suiscan.png differ diff --git a/mover/qwrdxer/code/task4/image/win.png b/mover/qwrdxer/code/task4/image/win.png new file mode 100644 index 000000000..b22cc02d4 Binary files /dev/null and b/mover/qwrdxer/code/task4/image/win.png differ diff --git a/mover/qwrdxer/code/task4/readme.md b/mover/qwrdxer/code/task4/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/qwrdxer/code/task4/source/task4_game.move b/mover/qwrdxer/code/task4/source/task4_game.move new file mode 100644 index 000000000..269687fff --- /dev/null +++ b/mover/qwrdxer/code/task4/source/task4_game.move @@ -0,0 +1,227 @@ +/* +/// Module: task4_game +module task4_game::task4_game; +*/ +//ref https://learnblockchain.cn/article/9899 + + +// 完成 链游相关知识的学习 +// 完成 随机数的学习,游戏必须包含随机数 +// 完成 存和取游戏资金池 +// 完成 如何存储Coin在合约的学习,游戏必须能存取[task2] 发行的Faucet Coin,用task2的 Faucet Coin作为游戏输赢的资产 +// 完成 第一个游戏合约部署主网 +// 的game 必须包含自己的 github id的元素 + +// 设计思路: +// 1. 使用发行的 QWRDXER TOKEN 作为奖池,奖池初始有10000 QWRDXERTOKEN +// 2. 设置奖品NFT 附魔金苹果 金苹果 苹果 面包 +// 3. NFT功能: NFT可以百分比抽取奖池中的QWRDXERTOKEN ,附魔金苹果10% 金苹果3% 苹果1% 面包10 QWRDXERTOKEN ,火把 1 QWRDXERCION +// 4. 游戏方式: 每次发送20Token进行抽奖,投掷 3颗 6面骰子, +// 如果 骰子面数相同 如 111 222 333 ,则获取附魔苹果, +// 如果骰子任意两个相同,获取金苹果, +// 如果骰子点数合计大于12,如 633,获取苹果 +// 合计大于6,获得面包 + +module task4_game::mcraffle{ + use std::string; + use std::string::String; + use std::u32; + use sui::balance; + use sui::balance::Balance; + use sui::coin::{Coin, take, balance_mut}; + use sui::display::new_with_fields; + use sui::event::emit; + use sui::math::divide_and_round_up; + use sui::package::claim; + use sui::random; + use sui::random::Random; + use sui::tx_context::sender; + use task2_coin::faucetqwrdxercoin::FAUCETQWRDXERCOIN; + //游戏相关常量 + const ENCHANTED_GOLDEN_APPLE:u8=1; + const GOLDEN_APPLE:u8=2; + const APPLE:u8=3; + const BREAD:u8=4; + const ENRTY_COIN:u64=20_000000;//入场费用 20 COIN + + //错误码 常量 + const InSufficientBalance:u64=50; + public struct AdminCap has key { //管理员权限对象 + id: UID + } + public struct GamePool has key{ //游戏资金池 + id:UID, + balance:Balance + } + + public struct GameNFT has key, store { //游戏NFT + id: UID, + name: String, + image_url: String, + catalog: u8 //NFT类型 1 2 3 4 + } + //随机数结果日志 + public struct GameResultEmit has drop,copy{ + r1:u16, + user_address:address + } + //奖池当前coin数量日志 + //随机数结果日志 + public struct PoolAmountEmit has drop,copy{ + pool_amount:u64, + } + public struct MCRAFFLE has drop{} + fun init(otw: MCRAFFLE, ctx:&mut TxContext){ + + //------------------------------这是一对NFT标准创建流程代码----------------------------- + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"raffle".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"Raffle".to_string(), + // Project URL is usually static + b"https://sui-raffle.io".to_string(), + // Creator field can be any + b"Unknown Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = claim(otw, ctx); + // Get a new `Display` object for the `Hero` type. + let mut display = new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + //------------------------------这是一堆NFT标准创建流程代码----------------------------- + let mcrafflePool=GamePool{ + id:object::new(ctx), + balance: balance::zero(), + }; + transfer::share_object(mcrafflePool); //大家都能访问这个游戏对象 + transfer::transfer(AdminCap{id:object::new(ctx)},tx_context::sender(ctx))//把权限给部署合约的人 + } + + //游戏函数 + public entry fun raffle_play( + mcrafflePool:&mut GamePool, + rdm:&Random, + coin:&mut Coin, + ctx:&mut TxContext + ) { + //用户资金是否大于20 + assert!( + coin.value() >= ENRTY_COIN, + InSufficientBalance + ); + // 存入奖池中 + let split_balance = balance::split(balance_mut(coin), ENRTY_COIN); + balance::join(&mut mcrafflePool.balance, split_balance); + //生成 3 个 1~6的随机数作为骰子结果 + let mut gen = random::new_generator(rdm, ctx); + let r1 = random::generate_u16_in_range(&mut gen, 1, 1000); + emit(GameResultEmit { r1: r1, user_address: tx_context::sender(ctx) });//结果放到日志里面 + + if (r1 >900) { + //如果为111,222,333,444 ... + //发放附魔金苹果NFT + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the Enchanted Golden Apple!"), + image_url: string::utf8(b"https://i.mcmod.cn/item/icon/128x128/11/118550.png"), + catalog: 1 + }; + transfer::public_transfer(nft, sender(ctx)); + }else if (r1 > 700) { + //发放金苹果NFT + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the Golden Apple!"), + image_url: string::utf8(b"https://i.mcmod.cn/editor/upload/20240915/1726376603_899182_aqta.webp"), + catalog: 2 + }; + transfer::public_transfer(nft, sender(ctx)); + }else if(r1 > 400) { + //发放普通 苹果 + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the Apple!"), + image_url: string::utf8(b"https://i.mcmod.cn/editor/upload/20241014/1728881348_899182_HjeV.webp"), + catalog: 3 + }; + transfer::public_transfer(nft, sender(ctx)); + }else if (r1 > 200) { + //发放面包 + let nft = GameNFT { + id: object::new(ctx), + name: string::utf8(b"Congratulations on obtaining the BREAD!"), + image_url: string::utf8(b"https://i.mcmod.cn/editor/upload/20240915/1726382983_899182_YYyp.webp"), + catalog: 4 + }; + transfer::public_transfer(nft, sender(ctx)); + } + } + + //兑换函数 + public entry fun raffle_exchange(gamePool:&mut GamePool,nft:GameNFT,ctx:&mut TxContext){ + let GameNFT{id,name:_,image_url:_,catalog}=nft; + //根据类别转账 + if(catalog==1){ + let current_pool_balance=gamePool.balance.value(); + let withdrawamount=divide_and_round_up(current_pool_balance,20); + let cach=take(&mut gamePool.balance,withdrawamount,ctx); + transfer::public_transfer(cach,ctx.sender()); + }; + if(catalog==2){ + let current_pool_balance=gamePool.balance.value(); + let withdrawamount=divide_and_round_up(current_pool_balance,33); + let cach=take(&mut gamePool.balance,withdrawamount,ctx); + transfer::public_transfer(cach,ctx.sender()); + }; + if(catalog==3){ + let current_pool_balance=gamePool.balance.value(); + let withdrawamount=divide_and_round_up(current_pool_balance,100); + let cach=take(&mut gamePool.balance,withdrawamount,ctx); + transfer::public_transfer(cach,ctx.sender()); + }; + if(catalog==4){ + let current_pool_balance=gamePool.balance.value(); + let cach=take(&mut gamePool.balance,10_000000,ctx); + transfer::public_transfer(cach,ctx.sender()); + }; + + id.delete(); + } + // 管理员的存取函数 + public entry fun depositeCoin(_:&mut AdminCap,gamePool:&mut GamePool,coin:&mut Coin,amount:u64,_:&mut TxContext){ + assert!( + coin.value() >= amount, + InSufficientBalance + ); + let split_balance = balance::split(balance_mut(coin), amount); + balance::join(&mut gamePool.balance, split_balance); + emit(PoolAmountEmit{pool_amount:gamePool.balance.value()}) + } + public entry fun withdrawCoin(_:&mut AdminCap,gamePool:&mut GamePool,amount:u64,ctx:&mut TxContext){ + let cach=take(&mut gamePool.balance,amount,ctx); + transfer::public_transfer(cach,ctx.sender()); + emit(PoolAmountEmit{pool_amount:gamePool.balance.value()}) + } + +} \ No newline at end of file diff --git a/mover/qwrdxer/code/task5/cmd.sh b/mover/qwrdxer/code/task5/cmd.sh new file mode 100644 index 000000000..894ca72df --- /dev/null +++ b/mover/qwrdxer/code/task5/cmd.sh @@ -0,0 +1,398 @@ +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ Gas Owner: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ Gas Budget: 33116000 MIST │ +│ Gas Price: 750 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x66304f3dfd22f5209bff3fef0c4da9df77ff656e07f5f16ee9f6d233c613bf27 │ +│ │ Version: 420167053 │ +│ │ Digest: 9gaVNcbtyjzEjm8rp3mLic6ZKMCyMFem9Ucwdo68LQ9F │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ FGCf2khY84o8xLXXY7gR6Czmv4FbslHIDEujAoYUEd4Tsw63J7QcyKRm8F5D6DNSzrK6ZYBtdcvyoc3FMg04CQ== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: EdyFY8wtPc6pErLYTd55VbPzgU9uYiMU6KvUkRmAYxeB │ +│ Status: Success │ +│ Executed Epoch: 586 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x0f91bfa5e9c0f2d92287771ed68042b564781da9e78855c2d64e9e171cb7436d │ +│ │ Owner: Immutable │ +│ │ Version: 420167054 │ +│ │ Digest: 7xdsNJ4Vw7qcEEA6Heb7FNP7Y55canFp16FMNe7npEm1 │ +│ └── │ +│ ┌── │ +│ │ ID: 0x1db50d717e2ecad7b55d277237db3f7d579357ab79e371c4a3f5dc4d0ba52e59 │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ Version: 420167054 │ +│ │ Digest: H1EdLQBS9sLcxj8VpEcVJX6WRiZ51ZMb9A1SMYrmyvFz │ +│ └── │ +│ ┌── │ +│ │ ID: 0x3e7aa58d91050a37bde593209b2fc46c550001cb13da51dde83be5e33ac6cb57 │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ Version: 420167054 │ +│ │ Digest: 5xF5VXostD5NJCUu5sKieCgosQctorHwDkCPSnemRHy1 │ +│ └── │ +│ ┌── │ +│ │ ID: 0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: 7t88hbho67Yz1cHonf7wrv6VPULi3jmE4MBXXpkDH3q3 │ +│ └── │ +│ ┌── │ +│ │ ID: 0x84bc9bc113ce987eb35ee92f1faf61ddb38ac8c6b9d2f4d15c0479a70b350580 │ +│ │ Owner: Immutable │ +│ │ Version: 420167054 │ +│ │ Digest: 7yrFSj1qzCX8j2TXF9GjUzLYD2fxgkmgSTqgjwAQmdDB │ +│ └── │ +│ ┌── │ +│ │ ID: 0x8b1d00d1dadb2a5c5c9db6cfcba611e5c8be56513f3e62e3ef687def5c27dae2 │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ Version: 420167054 │ +│ │ Digest: 77NNchMxMwRXq4BPe9gYhh3az73ENUeRuiMGbt3JDkPt │ +│ └── │ +│ ┌── │ +│ │ ID: 0xa57ddfa65f3f524e4d057edf4a1a0dec70946083da7190a8e0b4f2b91b815875 │ +│ │ Owner: Immutable │ +│ │ Version: 420167054 │ +│ │ Digest: 7PwjwXsGGSBQ7xuDNAcRRA46NLvZZobGXZcKKuqc37TN │ +│ └── │ +│ ┌── │ +│ │ ID: 0xfc2bd925a6c4d4fa711240d759b9084fb859e9b58ec19799a2ea56d37204a507 │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ Version: 420167054 │ +│ │ Digest: 7t7mXzVkzg27X4NWk6SzVXgvThDgPkkEWdkdMveon83H │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x66304f3dfd22f5209bff3fef0c4da9df77ff656e07f5f16ee9f6d233c613bf27 │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ Version: 420167054 │ +│ │ Digest: 7DbvUzo5fL5xSJJMmTbeyhhzHubDdvaXKpNKoc48Mv8 │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x66304f3dfd22f5209bff3fef0c4da9df77ff656e07f5f16ee9f6d233c613bf27 │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ Version: 420167054 │ +│ │ Digest: 7DbvUzo5fL5xSJJMmTbeyhhzHubDdvaXKpNKoc48Mv8 │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 31616000 MIST │ +│ Computation Cost: 750000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 49puDQZwHRnu7zYoARCjco1dFKMiK7LVSS8B5Si1yVdh │ +│ 4XMTF4L9pjHKtYRoYJnR8rWyBp8Zewvak7PVmSEEuTKR │ +│ 8MkMyu5cseLwqyWDwg947q7U2d7ipSoGu9LZQh744JRJ │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x0f91bfa5e9c0f2d92287771ed68042b564781da9e78855c2d64e9e171cb7436d │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_USDT::QWRDXER_USDT> │ +│ │ Version: 420167054 │ +│ │ Digest: 7xdsNJ4Vw7qcEEA6Heb7FNP7Y55canFp16FMNe7npEm1 │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x1db50d717e2ecad7b55d277237db3f7d579357ab79e371c4a3f5dc4d0ba52e59 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 420167054 │ +│ │ Digest: H1EdLQBS9sLcxj8VpEcVJX6WRiZ51ZMb9A1SMYrmyvFz │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x3e7aa58d91050a37bde593209b2fc46c550001cb13da51dde83be5e33ac6cb57 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_USDT::QWRDXER_USDT> │ +│ │ Version: 420167054 │ +│ │ Digest: 5xF5VXostD5NJCUu5sKieCgosQctorHwDkCPSnemRHy1 │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x84bc9bc113ce987eb35ee92f1faf61ddb38ac8c6b9d2f4d15c0479a70b350580 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_DOGE::QWRDXER_DOGE> │ +│ │ Version: 420167054 │ +│ │ Digest: 7yrFSj1qzCX8j2TXF9GjUzLYD2fxgkmgSTqgjwAQmdDB │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x8b1d00d1dadb2a5c5c9db6cfcba611e5c8be56513f3e62e3ef687def5c27dae2 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_RMB::QWRDXER_RMB> │ +│ │ Version: 420167054 │ +│ │ Digest: 77NNchMxMwRXq4BPe9gYhh3az73ENUeRuiMGbt3JDkPt │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xa57ddfa65f3f524e4d057edf4a1a0dec70946083da7190a8e0b4f2b91b815875 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Immutable │ +│ │ ObjectType: 0x2::coin::CoinMetadata<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_RMB::QWRDXER_RMB> │ +│ │ Version: 420167054 │ +│ │ Digest: 7PwjwXsGGSBQ7xuDNAcRRA46NLvZZobGXZcKKuqc37TN │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0xfc2bd925a6c4d4fa711240d759b9084fb859e9b58ec19799a2ea56d37204a507 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ ObjectType: 0x2::coin::TreasuryCap<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_DOGE::QWRDXER_DOGE> │ +│ │ Version: 420167054 │ +│ │ Digest: 7t7mXzVkzg27X4NWk6SzVXgvThDgPkkEWdkdMveon83H │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x66304f3dfd22f5209bff3fef0c4da9df77ff656e07f5f16ee9f6d233c613bf27 │ +│ │ Sender: 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 420167054 │ +│ │ Digest: 7DbvUzo5fL5xSJJMmTbeyhhzHubDdvaXKpNKoc48Mv8 │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5 │ +│ │ Version: 1 │ +│ │ Digest: 7t88hbho67Yz1cHonf7wrv6VPULi3jmE4MBXXpkDH3q3 │ +│ │ Modules: qwrdxer_DOGE, qwrdxer_RMB, qwrdxer_USDT │ +│ └── │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -31387880 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ + + +│ │ ObjectType: 0x2::coin::TreasuryCap<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_RMB::QWRDXER_RMB> 0x8b1d00d1dadb2a5c5c9db6cfcba611e5c8be56513f3e62e3ef687def5c27dae2 +│ │ ObjectType: 0x2::coin::TreasuryCap<0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5::qwrdxer_USDT::QWRDXER_USDT> │0x3e7aa58d91050a37bde593209b2fc46c550001cb13da51dde83be5e33ac6cb57 +# 领水 +sui client call --package 0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5 --module qwrdxer_RMB --function mint --args 0x8b1d00d1dadb2a5c5c9db6cfcba611e5c8be56513f3e62e3ef687def5c27dae2 1000000000 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b --gas-budget 10000000 + +sui client call --package 0x624279676894ea3ea17937402ec82c0a9681fdf34dd4b5dce75ccde4dd56a8f5 --module qwrdxer_USDT --function mint --args 0x3e7aa58d91050a37bde593209b2fc46c550001cb13da51dde83be5e33ac6cb57 1000000000 0x01bde56f16b7ad996f559ff2d34fa7a11030a8f303ff69bfe1017b321591cc5b --gas-budget 10000000 + +# 存钱 +admin_cap: 0x057bb2450d43c518561ba16d5693bfd3e10c1e5d8e84729035aadb5122106ca7 +swap_bank: 0x4dfdb243dcbc0cc041619e0a48da4ab01e95400062a6ec1c592273396bbdb16c +packageid: 0x48251c536f9c06c5a68d958ce4c1ba6ee1d1bf36698ab42b0c1929d12969a840 + +public entry fun deposit_CoinUSDT(_:&AdminCap,bank:&mut SwapBank,usdtcoin:Coin,_:&mut TxContext){ +sui client call --package 0x48251c536f9c06c5a68d958ce4c1ba6ee1d1bf36698ab42b0c1929d12969a840 --module task5_swap --function deposit_CoinRMB \ +--args 0x057bb2450d43c518561ba16d5693bfd3e10c1e5d8e84729035aadb5122106ca7 0x4dfdb243dcbc0cc041619e0a48da4ab01e95400062a6ec1c592273396bbdb16c 0xa377c0e86efa13a9ff669b0d0cf3be9aff44bc9d2dcdf96ac7653654e69a1ca3 --gas-budget 10000000 + +sui client call --package 0x48251c536f9c06c5a68d958ce4c1ba6ee1d1bf36698ab42b0c1929d12969a840 --module task5_swap --function deposit_CoinUSDT \ +--args 0x057bb2450d43c518561ba16d5693bfd3e10c1e5d8e84729035aadb5122106ca7 0x4dfdb243dcbc0cc041619e0a48da4ab01e95400062a6ec1c592273396bbdb16c 0xa5d7125976b2c3a2c8d3eab6c4954d3153aa683dff7b89f6bd27e5dc0264a0a2 --gas-budget 10000000 + +# swap +sui client call --package 0x48251c536f9c06c5a68d958ce4c1ba6ee1d1bf36698ab42b0c1929d12969a840 --module task5_swap --function swap_USDT_TO_RMB \ +--args 0x4dfdb243dcbc0cc041619e0a48da4ab01e95400062a6ec1c592273396bbdb16c 0xe87cb58658f6078bcb896d90c1fe29853b71f1f3bfca6e6f1dc76fce54c73fd6 --gas-budget 10000000 + +sui client call --package 0x48251c536f9c06c5a68d958ce4c1ba6ee1d1bf36698ab42b0c1929d12969a840 --module task5_swap --function swap_RMB_TO_USDT \ +--args 0x4dfdb243dcbc0cc041619e0a48da4ab01e95400062a6ec1c592273396bbdb16c 0x6c245963e1beb1685d66002894583ac343a39702d52e555ee9d2f9bf58af5e19 --gas-budget 10000000 +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Data │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Sender: 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e │ +│ Gas Owner: 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e │ +│ Gas Budget: 21243200 MIST │ +│ Gas Price: 1000 MIST │ +│ Gas Payment: │ +│ ┌── │ +│ │ ID: 0x137401866fb084a460bb3dddff5ef3e4b9c7f3ae3edf8521c4e25d722f7637e4 │ +│ │ Version: 236168707 │ +│ │ Digest: FDqzJRrUHbm9JP6kcpLKbL3dKAYWpCheYwPs9N9XVCGS │ +│ └── │ +│ │ +│ Transaction Kind: Programmable │ +│ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ +│ │ Input Objects │ │ +│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Pure Arg: Type: address, Value: "0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e" │ │ +│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ +│ ╭─────────────────────────────────────────────────────────────────────────╮ │ +│ │ Commands │ │ +│ ├─────────────────────────────────────────────────────────────────────────┤ │ +│ │ 0 Publish: │ │ +│ │ ┌ │ │ +│ │ │ Dependencies: │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000001 │ │ +│ │ │ 0x0000000000000000000000000000000000000000000000000000000000000002 │ │ +│ │ │ 0x7dccdb3a368c516201c525084920b0d05a6d0aa0582b9ce305407f0fcbe809f8 │ │ +│ │ └ │ │ +│ │ │ │ +│ │ 1 TransferObjects: │ │ +│ │ ┌ │ │ +│ │ │ Arguments: │ │ +│ │ │ Result 0 │ │ +│ │ │ Address: Input 0 │ │ +│ │ └ │ │ +│ ╰─────────────────────────────────────────────────────────────────────────╯ │ +│ │ +│ Signatures: │ +│ qLRqPDgrLo+hTNZu2jG0qOHi8lN9+neWhAVe5dw8pA4bE8IzfS8EyN+IkhGs0JQ7qTCVyXc3kR7l5tNS7RcQCg== │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Transaction Effects │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Digest: FP4zgCsxWSVwWrUP7gwzRyt6H8inXa4xXHEwqzmq4EbY │ +│ Status: Success │ +│ Executed Epoch: 558 │ +│ │ +│ Created Objects: │ +│ ┌── │ +│ │ ID: 0x5d0625806abc8767669088d87be27ae46aebc866f2eb5e043d8030e294bccd65 │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ Version: 236168708 │ +│ │ Digest: 3B8rsp4u4cHhtAsj5SyBGzsqVLKvsbBYQxL2G2CyCmWA │ +│ └── │ +│ ┌── │ +│ │ ID: 0x5e478cf977b27d86cad94507d2cd0cca626b19f3d853d38516ee19e535f28947 │ +│ │ Owner: Shared( 236168708 ) │ +│ │ Version: 236168708 │ +│ │ Digest: JiGSg5h4rDwJTiKWBk3f5h8bBd2XNot22PqcmAPZLrh │ +│ └── │ +│ ┌── │ +│ │ ID: 0x730177df75e2772275582a8d20621a0a957579be314cb197ef9bb1ecd9dae843 │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ Version: 236168708 │ +│ │ Digest: ErehcbmURWsgWDm2SJCGwLNfoUHvYdK2MbEP1GxESzNJ │ +│ └── │ +│ ┌── │ +│ │ ID: 0xaef7604777b24b9348ba605126d3880172744d6887616ca514ce46031c76a737 │ +│ │ Owner: Immutable │ +│ │ Version: 1 │ +│ │ Digest: 8WfnWdmtbTyXoDqZwAhEv2p6nfKkH6jZCPFntNSGvdyH │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ID: 0x137401866fb084a460bb3dddff5ef3e4b9c7f3ae3edf8521c4e25d722f7637e4 │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ Version: 236168708 │ +│ │ Digest: 5FEBam8M65dPe5Cj8nfYtFGZBvnTpuk1YK5nFzEwHesp │ +│ └── │ +│ Gas Object: │ +│ ┌── │ +│ │ ID: 0x137401866fb084a460bb3dddff5ef3e4b9c7f3ae3edf8521c4e25d722f7637e4 │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ Version: 236168708 │ +│ │ Digest: 5FEBam8M65dPe5Cj8nfYtFGZBvnTpuk1YK5nFzEwHesp │ +│ └── │ +│ Gas Cost Summary: │ +│ Storage Cost: 19243200 MIST │ +│ Computation Cost: 1000000 MIST │ +│ Storage Rebate: 978120 MIST │ +│ Non-refundable Storage Fee: 9880 MIST │ +│ │ +│ Transaction Dependencies: │ +│ 7MGpKbf6Pg9LgDWd73Cv1W83SPXHb7fQTm3BLzkFqZL1 │ +│ GMBJA2gEEvtwv1wGGT7ZEDkQdrmUTKaE4TeinNGQ2feC │ +│ HavfYHBdgJysknuk6B4h4JtCRC293HyqywD2ZHRCM4q6 │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────╮ +│ No transaction block events │ +╰─────────────────────────────╯ + +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Object Changes │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ Created Objects: │ +│ ┌── │ +│ │ ObjectID: 0x5d0625806abc8767669088d87be27ae46aebc866f2eb5e043d8030e294bccd65 │ +│ │ Sender: 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ ObjectType: 0x2::package::UpgradeCap │ +│ │ Version: 236168708 │ +│ │ Digest: 3B8rsp4u4cHhtAsj5SyBGzsqVLKvsbBYQxL2G2CyCmWA │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x5e478cf977b27d86cad94507d2cd0cca626b19f3d853d38516ee19e535f28947 │ +│ │ Sender: 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e │ +│ │ Owner: Shared( 236168708 ) │ +│ │ ObjectType: 0xaef7604777b24b9348ba605126d3880172744d6887616ca514ce46031c76a737::task5_swap::SwapBank │ +│ │ Version: 236168708 │ +│ │ Digest: JiGSg5h4rDwJTiKWBk3f5h8bBd2XNot22PqcmAPZLrh │ +│ └── │ +│ ┌── │ +│ │ ObjectID: 0x730177df75e2772275582a8d20621a0a957579be314cb197ef9bb1ecd9dae843 │ +│ │ Sender: 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ ObjectType: 0xaef7604777b24b9348ba605126d3880172744d6887616ca514ce46031c76a737::task5_swap::AdminCap │ +│ │ Version: 236168708 │ +│ │ Digest: ErehcbmURWsgWDm2SJCGwLNfoUHvYdK2MbEP1GxESzNJ │ +│ └── │ +│ Mutated Objects: │ +│ ┌── │ +│ │ ObjectID: 0x137401866fb084a460bb3dddff5ef3e4b9c7f3ae3edf8521c4e25d722f7637e4 │ +│ │ Sender: 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ ObjectType: 0x2::coin::Coin<0x2::sui::SUI> │ +│ │ Version: 236168708 │ +│ │ Digest: 5FEBam8M65dPe5Cj8nfYtFGZBvnTpuk1YK5nFzEwHesp │ +│ └── │ +│ Published Objects: │ +│ ┌── │ +│ │ PackageID: 0xaef7604777b24b9348ba605126d3880172744d6887616ca514ce46031c76a737 │ +│ │ Version: 1 │ +│ │ Digest: 8WfnWdmtbTyXoDqZwAhEv2p6nfKkH6jZCPFntNSGvdyH │ +│ │ Modules: task5_swap │ +│ └── │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ Balance Changes │ +├───────────────────────────────────────────────────────────────────────────────────────────────────┤ +│ ┌── │ +│ │ Owner: Account Address ( 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e ) │ +│ │ CoinType: 0x2::sui::SUI │ +│ │ Amount: -19265080 │ +│ └── │ +╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/mover/qwrdxer/code/task5/coin.move b/mover/qwrdxer/code/task5/coin.move new file mode 100644 index 000000000..2437c9623 --- /dev/null +++ b/mover/qwrdxer/code/task5/coin.move @@ -0,0 +1,93 @@ +/* +/// Module: task5_coin +module task5_coin::task5_coin; +*/ + +//ref https://examples.sui-book.com/samples/coin.html +//ref https://learnblockchain.cn/article/8717#%20%E5%90%88%E7%BA%A6 +//ref https://learnblockchain.cn/article/9788 + +// Coin1 RMB +module task5_coin::qwrdxer_RMB{ + use sui::coin; + use sui::coin::{TreasuryCap, mint_and_transfer}; + + public struct QWRDXER_RMB has drop{} + fun init(witness:QWRDXER_RMB,ctx: &mut TxContext){ + let (treasury, metadata)=coin::create_currency( + witness, + 6, + b"QWRDXERRMB", + b"", + b"", + option::none(),ctx); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury,tx_context::sender(ctx)); + } + // 持有cap 的地址可以mint coin到指定地址 + public entry fun mint( + treasury_cap:&mut TreasuryCap,amount:u64,recipient:address,ctx: &mut TxContext + ){ + mint_and_transfer(treasury_cap,amount,recipient,ctx) + } + +} + +// Coin 2 USDT +module task5_coin::qwrdxer_USDT{ + use sui::coin; + use sui::coin::{TreasuryCap, mint_and_transfer}; + + public struct QWRDXER_USDT has drop{} + fun init(witness:QWRDXER_USDT,ctx: &mut TxContext){ + let (treasury, metadata)=coin::create_currency( + witness, + 6, + b"QWRDXERUSDT", + b"", + b"", + option::none(),ctx); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury,tx_context::sender(ctx)); + } + // 持有cap 的地址可以mint coin到指定地址 + public entry fun mint( + treasury_cap:&mut TreasuryCap,amount:u64,recipient:address,ctx: &mut TxContext + ){ + mint_and_transfer(treasury_cap,amount,recipient,ctx) + } + +} +// Coin 3 DOGE +module task5_coin::qwrdxer_DOGE{ + use sui::coin; + use sui::coin::{TreasuryCap, mint_and_transfer}; + + public struct QWRDXER_DOGE has drop{} + fun init(witness:QWRDXER_DOGE,ctx: &mut TxContext){ + let (treasury, metadata)=coin::create_currency( + witness, + 6, + b"QWRDXERDOGE", + b"", + b"", + option::none(),ctx); + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury,tx_context::sender(ctx)); + } + // 持有cap 的地址可以mint coin到指定地址 + public entry fun mint( + treasury_cap:&mut TreasuryCap,amount:u64,recipient:address,ctx: &mut TxContext + ){ + mint_and_transfer(treasury_cap,amount,recipient,ctx) + } + +} + +/* + 正确调用qwrdxercoin + sui client call --package 0x2a9a3474683292a9f88e5a404c191db5b7e9c8017380344d1ebc0d68caa3f369 --module qwrdxercoin --function mint --args 0xed02c055c9e1aad5cad787be38a1566aa3d851d94aacd62832e2e6c596b26452 10000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 --gas-budget 10000000 + 使用另一个地址调用faucet + sui client call --package 0x319ea40d6a669cd26f787fb432d2bd29b0bf71f9354486eae9bbab8517ff6bb0 --module faucetqwrdxercoin --function mint --args 0xdaba562b748d108e6cea27d23a7c8487729a60ff041cbb31d6c7c7bd92d1e8a1 10000000 0x3f130ae9c17e02f07fa4bb2e758365e5d1aa8c0b921f1a7dc0cf917a9c1aa07e --gas-budget 10000000 +*/ + diff --git a/mover/qwrdxer/code/task5/qwrdxer.move b/mover/qwrdxer/code/task5/qwrdxer.move new file mode 100644 index 000000000..73bb34760 --- /dev/null +++ b/mover/qwrdxer/code/task5/qwrdxer.move @@ -0,0 +1,117 @@ + +//第一个是简单的SWAP,交换的代币为QWRDXER_RMB 和QWRDXER_USDT +module qwrdxer::task5_swap{ + use sui::balance::{Self,Balance, zero}; + use sui::coin; + use sui::coin::{Coin}; + use sui::event::emit; + use sui::transfer::{share_object, public_transfer}; + use sui::tx_context::sender; + use task5_coin::qwrdxer_RMB::QWRDXER_RMB; + use task5_coin::qwrdxer_USDT::QWRDXER_USDT; + + //日志结构体 + public struct LogBank has drop,copy{ + bank_value_RMB:u64, + bank_value_USDT:u64, + bank_value_change:u64 + } + + public struct AdminCap has key{ + id:UID + } + public struct SwapBank has store,key{ + id:UID, + Coin_RMB:Balance, + Coin_USDT:Balance, + } + fun init(ctx:&mut TxContext){ + //初始化银行 + let bank= SwapBank{ + id:object::new(ctx), + Coin_RMB:zero(), + Coin_USDT:zero() + }; + //共享出去 + share_object(bank); + //创建管理员权限 + transfer::transfer(AdminCap{id:object::new(ctx)},tx_context::sender(ctx)) + } + + // 管理员能调用的存取函数 + public entry fun deposit_CoinRMB(_:&AdminCap,bank:&mut SwapBank,rmbcoin:Coin,_:&mut TxContext){ + let rmbbalance=coin::into_balance(rmbcoin); + let changevalue=balance::value(&rmbbalance); + bank.Coin_RMB.join(rmbbalance); + emit( + LogBank{ + bank_value_RMB:balance::value(&bank.Coin_RMB), + bank_value_USDT:balance::value(&bank.Coin_USDT), + bank_value_change:changevalue + } + ) + } + + public entry fun withDraw_CoinRMB(_:&AdminCap,bank:&mut SwapBank,amt:u64,ctx:&mut TxContext){ + let rmbbalance=balance::split(&mut bank.Coin_RMB,amt); + let cach=coin::from_balance(rmbbalance,ctx); + transfer::public_transfer(cach,ctx.sender()); + emit( + LogBank{ + bank_value_RMB:balance::value(&bank.Coin_RMB), + bank_value_USDT:balance::value(&bank.Coin_USDT), + bank_value_change:amt + } + ) + } + public entry fun deposit_CoinUSDT(_:&AdminCap,bank:&mut SwapBank,usdtcoin:Coin,_:&mut TxContext){ + let usdtbalance=coin::into_balance(usdtcoin); + let changevalue=balance::value(&usdtbalance); + bank.Coin_USDT.join(usdtbalance); + emit( + LogBank{ + bank_value_RMB:balance::value(&bank.Coin_RMB), + bank_value_USDT:balance::value(&bank.Coin_USDT), + bank_value_change:changevalue + } + ) + } + + public entry fun withDraw_CoinUSDT(_:&AdminCap,bank:&mut SwapBank,amt:u64,ctx:&mut TxContext){ + let usdtbalance=balance::split(&mut bank.Coin_USDT,amt); + let cach=coin::from_balance(usdtbalance,ctx); + transfer::public_transfer(cach,ctx.sender()); + emit( + LogBank{ + bank_value_RMB:balance::value(&bank.Coin_RMB), + bank_value_USDT:balance::value(&bank.Coin_USDT), + bank_value_change:amt + } + ) + } + //swap交换函数实现 + public entry fun swap_RMB_TO_USDT(bank:&mut SwapBank,rmbCoin: Coin,ctx:&mut TxContext){ + let coinvalue=coin::value(&rmbCoin); + let swapbalance=coinvalue *730000 /100000; + //RMB 入 Bank + let rmbbalance=coin::into_balance(rmbCoin); + balance::join(&mut bank.Coin_RMB,rmbbalance); + //取出 USDT + let usdtbalance=balance::split(&mut bank.Coin_USDT,swapbalance); + let usdtcoin=coin::from_balance(usdtbalance,ctx); + //发送给对方 + public_transfer(usdtcoin,sender(ctx)); + } + public entry fun swap_USDT_TO_RMB(bank:&mut SwapBank,usdtCoin: Coin,ctx:&mut TxContext){ + let coinvalue=coin::value(&usdtCoin); + let swapbalance=coinvalue*100000 /730000; + //RMB 入 Bank + let usdtbalance=coin::into_balance(usdtCoin); + balance::join(&mut bank.Coin_USDT,usdtbalance); + //取出 USDT + let rmbbalance=balance::split(&mut bank.Coin_RMB,swapbalance); + let rmbtcoin=coin::from_balance(rmbbalance,ctx); + //发送给对方 + public_transfer(rmbtcoin,sender(ctx)); + } +} \ No newline at end of file diff --git a/mover/qwrdxer/images/nft.png b/mover/qwrdxer/images/nft.png new file mode 100644 index 000000000..b501dde10 Binary files /dev/null and b/mover/qwrdxer/images/nft.png differ diff --git a/mover/qwrdxer/readme.md b/mover/qwrdxer/readme.md index d06dcb3c4..fc8bed82b 100644 --- a/mover/qwrdxer/readme.md +++ b/mover/qwrdxer/readme.md @@ -26,21 +26,22 @@ - [✓] `Faucet Coin` address2 mint hash:GDg4keQ1fGQVjoSHwiEPeZ3D29UUWNVgAPPEB1ui2LV8 ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [√] nft package id : 0xf30806a8738cfc1e1d34d8cb441cbbf4fa8ec34c840aa20aa250c1e6ff149b77 +- [√] nft object id : 0x14d13d9603ad0ffe955f2051f2163ea357478d5f2a0a74f1c77526f13f28fce6 +- [√] 转账 nft hash: Bez242vQST4sPW97UD881MG3NA1HdDfDPySVpYLcuRs9 +- [√] scan上的NFT截图:![Scan截图](./images/nft.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [√] game package id : 0x12aa2008a54b7be74ef8f4ee515498f8972299b22a90840ea14379ebc935f62f +- [√] deposit Coin hash: 5hnSNVcaQUras1gmpWGsuRSBexrrFgtLmoSgnXrNqgRn +- [√] withdraw `Coin` hash: FPqPELcg2PzXqePvVDdtU51jedV8tgKZGjP81zAWkX8t +- [√] play game hash: Cstddpqusyiy8tcWepr8BvZJtW1kdnpgPXqPrHojytRW + 3fEZrqVfa5qVMMzq35gDktiqF1RNA9sSJg7bh8KJzs7i ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [√] swap package id : 0x48251c536f9c06c5a68d958ce4c1ba6ee1d1bf36698ab42b0c1929d12969a840 +- [√] call swap CoinA-> CoinB hash : 5Gpmj7w7nonDEa48qtrsHyvaxSxXrY47Vonsqmyg5TdR +- [√] call swap CoinB-> CoinA hash : F4vBUtrMMEJmtcUNvKfJEaPghYj37U3ehFkfVW5o155W ## 06 Dapp-kit SDK PTB - [] save hash : diff --git a/mover/sahab328/coLearn2411/images/bilibili-follow.png b/mover/sahab328/coLearn2411/images/bilibili-follow.png new file mode 100644 index 000000000..b681faab3 Binary files /dev/null and b/mover/sahab328/coLearn2411/images/bilibili-follow.png differ diff --git a/mover/sahab328/coLearn2411/images/github-star.png b/mover/sahab328/coLearn2411/images/github-star.png new file mode 100644 index 000000000..cfd4d520b Binary files /dev/null and b/mover/sahab328/coLearn2411/images/github-star.png differ diff --git a/mover/sahab328/coLearn2411/images/readme.md b/mover/sahab328/coLearn2411/images/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/sahab328/coLearn2411/images/readme.md @@ -0,0 +1 @@ + diff --git a/mover/sahab328/coLearn2411/images/week3_learning.png b/mover/sahab328/coLearn2411/images/week3_learning.png new file mode 100644 index 000000000..fff05b924 Binary files /dev/null and b/mover/sahab328/coLearn2411/images/week3_learning.png differ diff --git a/mover/sahab328/coLearn2411/project/readme.md b/mover/sahab328/coLearn2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/sahab328/coLearn2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/sahab328/coLearn2411/readme.md b/mover/sahab328/coLearn2411/readme.md new file mode 100644 index 000000000..5b2bcdf96 --- /dev/null +++ b/mover/sahab328/coLearn2411/readme.md @@ -0,0 +1,54 @@ + + +## b站,推特关注 + +- [x] b站关注截图: ![关注截图](./images/bilibili-follow.png) +- [x] github关注截图: ![关注截图](./images/github-star.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第三周:![学习记录截图](./images/week3_learning.png) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + diff --git a/mover/sahab328/code/readme.md b/mover/sahab328/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/sahab328/code/task1/hello_move/Move.lock b/mover/sahab328/code/task1/hello_move/Move.lock new file mode 100644 index 000000000..6ac3697f4 --- /dev/null +++ b/mover/sahab328/code/task1/hello_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "8B7DC3EDF1D81F9E2D46D8251E70F4B8D7097878F02438454C30AEF9F05D81D0" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xc6ff8d94be9ef1c9685ea2a30fb4040df9447bb26b0c6b53bc88dc3a57f885e0" +latest-published-id = "0xc6ff8d94be9ef1c9685ea2a30fb4040df9447bb26b0c6b53bc88dc3a57f885e0" +published-version = "1" diff --git a/mover/sahab328/code/task1/hello_move/Move.toml b/mover/sahab328/code/task1/hello_move/Move.toml new file mode 100644 index 000000000..f99a76a8d --- /dev/null +++ b/mover/sahab328/code/task1/hello_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hello_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hello_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/sahab328/code/task1/hello_move/sources/hello_move.move b/mover/sahab328/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..701708fce --- /dev/null +++ b/mover/sahab328/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,17 @@ +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::transfer::transfer; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"sahab"), + }; + transfer(hello_move, ctx.sender()); +} \ No newline at end of file diff --git a/mover/sahab328/code/task1/hello_move/tests/hello_move_tests.move b/mover/sahab328/code/task1/hello_move/tests/hello_move_tests.move new file mode 100644 index 000000000..7798d8dda --- /dev/null +++ b/mover/sahab328/code/task1/hello_move/tests/hello_move_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hello_move::hello_move_tests; +// uncomment this line to import the module +// use hello_move::hello_move; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hello_move() { + // pass +} + +#[test, expected_failure(abort_code = ::hello_move::hello_move_tests::ENotImplemented)] +fun test_hello_move_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/sahab328/code/task2/my_coin/Move.lock b/mover/sahab328/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..34b84de97 --- /dev/null +++ b/mover/sahab328/code/task2/my_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0A4652D38CF3C3FDB79EC6C1C98FCFF7B2E933E12B84A1DA267DB28F66AFECE3" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xa87eaab797fcf55cf3a8798f5bc66528aa838a506021b7eaa4a077c6391b8c85" +latest-published-id = "0xa87eaab797fcf55cf3a8798f5bc66528aa838a506021b7eaa4a077c6391b8c85" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x6fad4e0f5f68ed70e322aca3dc36f9d09da758bdcdb8e06661aa18bd8da5ed6a" +latest-published-id = "0x6fad4e0f5f68ed70e322aca3dc36f9d09da758bdcdb8e06661aa18bd8da5ed6a" +published-version = "1" diff --git a/mover/sahab328/code/task2/my_coin/Move.toml b/mover/sahab328/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/sahab328/code/task2/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/sahab328/code/task2/my_coin/sources/meme.move b/mover/sahab328/code/task2/my_coin/sources/meme.move new file mode 100644 index 000000000..ac3df9a44 --- /dev/null +++ b/mover/sahab328/code/task2/my_coin/sources/meme.move @@ -0,0 +1,20 @@ +module my_coin::meme; + +use sui::url::{Self, Url}; +use sui::coin::{create_currency}; +use std::option::{some}; + +use sui::transfer::{public_freeze_object, public_share_object}; + +public struct MEME has drop {} + +fun init(witness: MEME, ctx: &mut TxContext) { + // let no = none(); + let url = url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/162699534"); + let icon_url = some(url); + let (treasury, coin_meta) = create_currency(witness, 18, b"MEME", b"MEME", b"sahab's meme token", icon_url, ctx); + + public_freeze_object(coin_meta); + + public_share_object(treasury); +} \ No newline at end of file diff --git a/mover/sahab328/code/task2/my_coin/sources/sa.move b/mover/sahab328/code/task2/my_coin/sources/sa.move new file mode 100644 index 000000000..0afbb4872 --- /dev/null +++ b/mover/sahab328/code/task2/my_coin/sources/sa.move @@ -0,0 +1,20 @@ +module my_coin::sa; + +use sui::url::{Self, Url}; +use sui::coin::{create_currency}; +use std::option::{some}; + +use sui::transfer::{public_freeze_object, public_transfer}; + +public struct SA has drop {} + +fun init(sa: SA, ctx: &mut TxContext) { + // let no = none(); + let url = url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/162699534"); + let icon_url = some(url); + let (treasury, coin_meta) = create_currency(sa, 18, b"SA", b"SA", b"sahab's token", icon_url, ctx); + + public_freeze_object(coin_meta); + + public_transfer(treasury, ctx.sender()); +} \ No newline at end of file diff --git a/mover/sahab328/code/task2/my_coin/tests/my_coin_tests.move b/mover/sahab328/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/sahab328/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/sahab328/code/task3/nft/Move.lock b/mover/sahab328/code/task3/nft/Move.lock new file mode 100644 index 000000000..8d22939e9 --- /dev/null +++ b/mover/sahab328/code/task3/nft/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "9D4FCF5807A34E3110DFBA44AD92FEFEC55EE3DE8CF58F3D302F55D3004E70D1" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x1d47e2d3ad1a2b9ef6c292f03ab8ee4674a8ac25ba8e9506e38d25822d1e150f" +latest-published-id = "0x1d47e2d3ad1a2b9ef6c292f03ab8ee4674a8ac25ba8e9506e38d25822d1e150f" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x3adb69d9749acdec6662209d9be6300cc0c79988622e6532447b52f4c53b6df1" +latest-published-id = "0x3adb69d9749acdec6662209d9be6300cc0c79988622e6532447b52f4c53b6df1" +published-version = "1" diff --git a/mover/sahab328/code/task3/nft/Move.toml b/mover/sahab328/code/task3/nft/Move.toml new file mode 100644 index 000000000..504c662e4 --- /dev/null +++ b/mover/sahab328/code/task3/nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/sahab328/code/task3/nft/sources/nft.move b/mover/sahab328/code/task3/nft/sources/nft.move new file mode 100644 index 000000000..a17bbc006 --- /dev/null +++ b/mover/sahab328/code/task3/nft/sources/nft.move @@ -0,0 +1,32 @@ + +module nft::nft; + +use std::string::{Self, String}; +use sui::url::{Self, Url}; +use sui::transfer::transfer; + +public struct NFT has key { + id: UID, + name: String, + url: Url +} + +fun init(ctx: &mut TxContext) { + let nft = NFT { + id: object::new(ctx), + name: string::utf8(b"sahab NFT"), + url: url::new_unsafe(b"https://avatars.githubusercontent.com/u/162699534".to_ascii_string()) + }; + + transfer(nft, ctx.sender()); +} + +public entry fun mint_to(receiver: address, ctx: &mut TxContext) { + let nft = NFT { + id: object::new(ctx), + name: string::utf8(b"sahab NFT"), + url: url::new_unsafe(b"https://avatars.githubusercontent.com/u/162699534".to_ascii_string()) + }; + + transfer(nft, receiver); +} \ No newline at end of file diff --git a/mover/sahab328/code/task3/nft/tests/nft_tests.move b/mover/sahab328/code/task3/nft/tests/nft_tests.move new file mode 100644 index 000000000..3c9c56a93 --- /dev/null +++ b/mover/sahab328/code/task3/nft/tests/nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module nft::nft_tests; +// uncomment this line to import the module +// use nft::nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::nft::nft_tests::ENotImplemented)] +fun test_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/sahab328/code/task4/game/Move.lock b/mover/sahab328/code/task4/game/Move.lock new file mode 100644 index 000000000..ad26c3914 --- /dev/null +++ b/mover/sahab328/code/task4/game/Move.lock @@ -0,0 +1,49 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "86203A0985C424653C576953C170EEEDC2F4B20DCF61ED64DEDCEB710F8D735F" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "my_coin", name = "my_coin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "my_coin" +source = { local = "../../task2/my_coin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xc29de30c4951b1e8d8b80b532a62fe3736b5411d031680411a47db917852ab47" +latest-published-id = "0xc29de30c4951b1e8d8b80b532a62fe3736b5411d031680411a47db917852ab47" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x90c9955a7f6bf5eadabe0df7d3d029c6a59fe84f0d0ddf05724d8568814e9b57" +latest-published-id = "0x90c9955a7f6bf5eadabe0df7d3d029c6a59fe84f0d0ddf05724d8568814e9b57" +published-version = "1" diff --git a/mover/sahab328/code/task4/game/Move.toml b/mover/sahab328/code/task4/game/Move.toml new file mode 100644 index 000000000..25ca6e4ba --- /dev/null +++ b/mover/sahab328/code/task4/game/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +my_coin = { local = "../../task2/my_coin" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/sahab328/code/task4/game/sources/flip_coin.move b/mover/sahab328/code/task4/game/sources/flip_coin.move new file mode 100644 index 000000000..ed787621f --- /dev/null +++ b/mover/sahab328/code/task4/game/sources/flip_coin.move @@ -0,0 +1,66 @@ +module game::flip_coin; + +use sui::balance::{Self, Balance}; +use sui::coin::{Self, Coin}; +use sui::transfer::{transfer, share_object, public_transfer}; +use sui::random::{Self, new_generator, Random}; +use std::string::String; + +use my_coin::meme::MEME; + +public struct Game has key { + id: UID, + balance: Balance, + desc: String, +} + +public struct AdminCap has key { + id: UID, +} + +const ETooMuchMoney: u64 = 0; +const ENotEnoughBalance: u64 = 1; + +fun init(ctx: &mut TxContext) { + let game = Game { + id: object::new(ctx), + balance: balance::zero(), + desc: b"sahab328's flip coin game".to_string(), + }; + + share_object(game); + + let cap = AdminCap { + id: object::new(ctx), + }; + transfer(cap, ctx.sender()); +} + +entry fun play(game: &mut Game, rand: &Random, guess: bool, in_coin: Coin, ctx: &mut TxContext) { + let in_value = in_coin.value(); + let game_value = game.balance.value(); + // 最多玩池子的1/10 + assert!(game_value >= in_value * 10, ETooMuchMoney); + + let mut rand_gen = new_generator(rand, ctx); + let result: bool = random::generate_bool(&mut rand_gen); + + if (guess == result) { // win + let out_coin = coin::from_balance(game.balance.split(in_value), ctx); + public_transfer(out_coin, ctx.sender()); + public_transfer(in_coin, ctx.sender()); + } else { // loss + game.balance.join(coin::into_balance(in_coin)); + } +} + +public entry fun add_balance(game: &mut Game, in_coin: Coin, _ctx: &mut TxContext) { + game.balance.join(coin::into_balance(in_coin)); +} + +public entry fun remove_balance(_:&AdminCap, game: &mut Game, out_value: u64, ctx: &mut TxContext) { + let game_value = game.balance.value(); + assert!(game_value >= out_value, ENotEnoughBalance); + let out_coin = coin::from_balance(game.balance.split(out_value), ctx); + public_transfer(out_coin, ctx.sender()); +} diff --git a/mover/sahab328/code/task4/game/tests/flip_coin_tests.move b/mover/sahab328/code/task4/game/tests/flip_coin_tests.move new file mode 100644 index 000000000..d05a3ca31 --- /dev/null +++ b/mover/sahab328/code/task4/game/tests/flip_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module flip_coin::flip_coin_tests; +// uncomment this line to import the module +// use flip_coin::flip_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_flip_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::flip_coin::flip_coin_tests::ENotImplemented)] +fun test_flip_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/sahab328/images/nft-scan.png b/mover/sahab328/images/nft-scan.png new file mode 100644 index 000000000..b3bbb0b56 Binary files /dev/null and b/mover/sahab328/images/nft-scan.png differ diff --git a/mover/sahab328/images/package-scan.png b/mover/sahab328/images/package-scan.png new file mode 100644 index 000000000..b56266ffe Binary files /dev/null and b/mover/sahab328/images/package-scan.png differ diff --git a/mover/sahab328/images/sui-wallet.png b/mover/sahab328/images/sui-wallet.png new file mode 100644 index 000000000..69b0510cb Binary files /dev/null and b/mover/sahab328/images/sui-wallet.png differ diff --git a/mover/sahab328/notes/readme.md b/mover/sahab328/notes/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/sahab328/readme.md b/mover/sahab328/readme.md new file mode 100644 index 000000000..abb6fa3d0 --- /dev/null +++ b/mover/sahab328/readme.md @@ -0,0 +1,55 @@ +## 基本信息 +- Sui钱包地址: `0xa9440e47c3a937be1203cdc8a2461d6d5d88facbfca8132e2a7ce7101f91acef` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `sahab328` + +## 个人简介 +- 工作经验: 0年 +- 技术栈: `Python` `C++` +> 重要提示 请认真写自己的简介 +- 研究生,对区块链感兴趣但没有相关经验,想通过学习move进入web3行业。 +- 联系方式: tg: `assahab328` + +## 任务 + +## 01 hello move +- [x] Sui cli version: sui 1.36.2-3ada97c109cc +- [x] Sui钱包截图: ![Sui钱包截图](./images/sui-wallet.png) +- [x] package id: 0xc6ff8d94be9ef1c9685ea2a30fb4040df9447bb26b0c6b53bc88dc3a57f885e0 +- [x] package id 在 scan上的查看截图:![Scan截图](./images/package-scan.png) + +## 02 move coin +- [x] My Coin package id : 0x6fad4e0f5f68ed70e322aca3dc36f9d09da758bdcdb8e06661aa18bd8da5ed6a +- [x] Faucet package id : 0x6fad4e0f5f68ed70e322aca3dc36f9d09da758bdcdb8e06661aa18bd8da5ed6a +- [x] 转账 `My Coin` hash: ZcV7yM6YVHLHLmHGQiKWsSuVnNgYCrRvssvVjRudJvD +- [x] `Faucet Coin` address1 mint hash: Bw1nfWS7yS676DbTcd8FBsM7smog3dvyXEXmLTBY9uaq +- [x] `Faucet Coin` address2 mint hash: 9YwG3XNQdMvECpUGTCeHPwYr1dDU45E2YvnoGeenCTmP + +## 03 move NFT +- [x] nft package id : 0x3adb69d9749acdec6662209d9be6300cc0c79988622e6532447b52f4c53b6df1 +- [x] nft object id : 0x256a4a7e580d0db4613ea2440ac12dbbbe7fda165aab054164bf23c48f3d9cd9 +- [x] 转账 nft hash: 5AJXFajzDP8ji3qmEyJjeB6nMQpFn6oc2KPxNngaiScW +- [x] scan上的NFT截图:![Scan截图](./images/nft-scan.png) + +## 04 Move Game +- [x] game package id : 0x90c9955a7f6bf5eadabe0df7d3d029c6a59fe84f0d0ddf05724d8568814e9b57 +- [x] deposit Coin hash: GMNxbvHA7aLAPrSBEdhtuvUB8N9hAWfTKUKms8R2TTgW +- [x] withdraw `Coin` hash: EEiQdohPFJZj9RWjRYqdcN7j2ybJ5WhTpJZ4MSxiUTAV +- [x] play game hash: BuwnM2J7hQu4GWXsxkeevfoWVcT2Pfxhjz8BTZzyaWPK + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : + diff --git a/mover/sahab328/scan/readme.md b/mover/sahab328/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/sahab328/scan/readme.md @@ -0,0 +1 @@ + diff --git "a/mover/smithclkpayphone123456789010/Images/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" "b/mover/smithclkpayphone123456789010/Images/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" new file mode 100644 index 000000000..2f7e54e08 Binary files /dev/null and "b/mover/smithclkpayphone123456789010/Images/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" differ diff --git a/mover/smithclkpayphone123456789010/Images/PackageId.png b/mover/smithclkpayphone123456789010/Images/PackageId.png deleted file mode 100644 index a34cd08bf..000000000 Binary files a/mover/smithclkpayphone123456789010/Images/PackageId.png and /dev/null differ diff --git a/mover/smithclkpayphone123456789010/Images/SuiWallet.png b/mover/smithclkpayphone123456789010/Images/SuiWallet.png deleted file mode 100644 index c48912372..000000000 Binary files a/mover/smithclkpayphone123456789010/Images/SuiWallet.png and /dev/null differ diff --git a/mover/smithclkpayphone123456789010/Images/Transaction.png b/mover/smithclkpayphone123456789010/Images/Transaction.png deleted file mode 100644 index 21855319d..000000000 Binary files a/mover/smithclkpayphone123456789010/Images/Transaction.png and /dev/null differ diff --git "a/mover/smithclkpayphone123456789010/Images/github\344\273\223\345\272\223star.png" "b/mover/smithclkpayphone123456789010/Images/github\344\273\223\345\272\223star.png" new file mode 100644 index 000000000..fa8157a36 Binary files /dev/null and "b/mover/smithclkpayphone123456789010/Images/github\344\273\223\345\272\223star.png" differ diff --git "a/mover/smithclkpayphone123456789010/Images/packageid\346\265\217\350\247\210\345\231\250\346\210\252\345\233\276.png" "b/mover/smithclkpayphone123456789010/Images/packageid\346\265\217\350\247\210\345\231\250\346\210\252\345\233\276.png" new file mode 100644 index 000000000..126711b1c Binary files /dev/null and "b/mover/smithclkpayphone123456789010/Images/packageid\346\265\217\350\247\210\345\231\250\346\210\252\345\233\276.png" differ diff --git "a/mover/smithclkpayphone123456789010/Images/sui\351\222\261\345\214\205\346\210\252\345\233\276.png" "b/mover/smithclkpayphone123456789010/Images/sui\351\222\261\345\214\205\346\210\252\345\233\276.png" new file mode 100644 index 000000000..8721ec47c Binary files /dev/null and "b/mover/smithclkpayphone123456789010/Images/sui\351\222\261\345\214\205\346\210\252\345\233\276.png" differ diff --git "a/mover/smithclkpayphone123456789010/Images/\347\254\254\344\270\200\346\254\241\347\233\264\346\222\255\347\255\224\347\226\221.jpg" "b/mover/smithclkpayphone123456789010/Images/\347\254\254\344\270\200\346\254\241\347\233\264\346\222\255\347\255\224\347\226\221.jpg" new file mode 100644 index 000000000..ea9cfca6a Binary files /dev/null and "b/mover/smithclkpayphone123456789010/Images/\347\254\254\344\270\200\346\254\241\347\233\264\346\222\255\347\255\224\347\226\221.jpg" differ diff --git "a/mover/smithclkpayphone123456789010/coLearn2411/images/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" "b/mover/smithclkpayphone123456789010/coLearn2411/images/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" new file mode 100644 index 000000000..2f7e54e08 Binary files /dev/null and "b/mover/smithclkpayphone123456789010/coLearn2411/images/B\347\253\231\345\205\263\346\263\250\346\210\252\345\233\276.png" differ diff --git a/mover/smithclkpayphone123456789010/coLearn2411/images/readme.md b/mover/smithclkpayphone123456789010/coLearn2411/images/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/smithclkpayphone123456789010/coLearn2411/images/readme.md @@ -0,0 +1 @@ + diff --git "a/mover/smithclkpayphone123456789010/coLearn2411/images/sui\351\222\261\345\214\205\346\210\252\345\233\276.png" "b/mover/smithclkpayphone123456789010/coLearn2411/images/sui\351\222\261\345\214\205\346\210\252\345\233\276.png" new file mode 100644 index 000000000..8721ec47c Binary files /dev/null and "b/mover/smithclkpayphone123456789010/coLearn2411/images/sui\351\222\261\345\214\205\346\210\252\345\233\276.png" differ diff --git "a/mover/smithclkpayphone123456789010/coLearn2411/images/\347\254\254\344\270\200\346\254\241\347\233\264\346\222\255\347\255\224\347\226\221.jpg" "b/mover/smithclkpayphone123456789010/coLearn2411/images/\347\254\254\344\270\200\346\254\241\347\233\264\346\222\255\347\255\224\347\226\221.jpg" new file mode 100644 index 000000000..ea9cfca6a Binary files /dev/null and "b/mover/smithclkpayphone123456789010/coLearn2411/images/\347\254\254\344\270\200\346\254\241\347\233\264\346\222\255\347\255\224\347\226\221.jpg" differ diff --git a/mover/smithclkpayphone123456789010/coLearn2411/project/readme.md b/mover/smithclkpayphone123456789010/coLearn2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/smithclkpayphone123456789010/coLearn2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/smithclkpayphone123456789010/coLearn2411/readme.md b/mover/smithclkpayphone123456789010/coLearn2411/readme.md new file mode 100644 index 000000000..0093f14c3 --- /dev/null +++ b/mover/smithclkpayphone123456789010/coLearn2411/readme.md @@ -0,0 +1,53 @@ + + +## b站,推特关注 + +- [√] b站,推特关注截图: ![关注截图](Images\B站关注截图.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [√] 第一周:![学习记录截图](Images\B站关注截图.png) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [√] 第一周:![学习记录截图](Images\第一次直播答疑.jpg) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [√] 第一篇笔记 ![学习记录截图](notes\task1.md) +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [√] 第一篇笔记【学习笔记链接】 https://learnblockchain.cn/article/9911 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + diff --git a/mover/smithclkpayphone123456789010/code/task01/hello/Move.lock b/mover/smithclkpayphone123456789010/code/task01/hello/Move.lock deleted file mode 100644 index dabde588e..000000000 --- a/mover/smithclkpayphone123456789010/code/task01/hello/Move.lock +++ /dev/null @@ -1,40 +0,0 @@ -# @generated by Move, please check-in and do not edit manually. - -[move] -version = 2 -manifest_digest = "378AE43A3061361EB8BF0455D22D9E771CE7B9FAA008A92DF685BE2387CB29B8" -deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" -dependencies = [ - { name = "Sui" }, -] - -[[move.package]] -name = "MoveStdlib" -source = { git = "https://gitee.com/WGB5445/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } - -[[move.package]] -name = "Sui" -source = { git = "https://gitee.com/WGB5445/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } - -dependencies = [ - { name = "MoveStdlib" }, -] - -[move.toolchain-version] -compiler-version = "1.24.0" -edition = "2024.beta" -flavor = "sui" - -[env] - -[env.devnet] -chain-id = "ddb98719" -original-published-id = "0x6e792c90a74623e86f5962f6cb3811102ac8a235fa2a996e4c85b333aedc5869" -latest-published-id = "0x6e792c90a74623e86f5962f6cb3811102ac8a235fa2a996e4c85b333aedc5869" -published-version = "1" - -[env.testnet] -chain-id = "4c78adac" -original-published-id = "0xce6897e193b3eec337017dbb9f6bd7185fcb8e5c7e203a73c07c061148d4af9d" -latest-published-id = "0xce6897e193b3eec337017dbb9f6bd7185fcb8e5c7e203a73c07c061148d4af9d" -published-version = "1" diff --git a/mover/smithclkpayphone123456789010/code/task01/hello/sources/hello.move b/mover/smithclkpayphone123456789010/code/task01/hello/sources/hello.move deleted file mode 100644 index 8909a049e..000000000 --- a/mover/smithclkpayphone123456789010/code/task01/hello/sources/hello.move +++ /dev/null @@ -1,21 +0,0 @@ -module hello_world::hello { - use sui::object::{Self, UID}; - use sui::tx_context::{Self, TxContext}; - use std::string::{Self, String}; - use sui::transfer; - - public struct Hello has key { - id: UID, - str: String, - } - - public fun say_hello(ctx: &mut TxContext) { - let word = Hello { - id: object::new(ctx), - str: string::utf8(b"Hello smithclkpayphone123456789010"), - }; - transfer::transfer(word, tx_context::sender(ctx)); - } -} - - diff --git a/mover/smithclkpayphone123456789010/code/task1/hello_move/Move.lock b/mover/smithclkpayphone123456789010/code/task1/hello_move/Move.lock new file mode 100644 index 000000000..bb908a291 --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task1/hello_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "15C92DB7143AE506431E8FE14625189CE312456B12D01A47D7711D0BFBD6A124" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x52bac991d33afcbcb4293d2a412f8b982d45d9f3cbaa6385a5d1f453297ad2d3" +latest-published-id = "0x52bac991d33afcbcb4293d2a412f8b982d45d9f3cbaa6385a5d1f453297ad2d3" +published-version = "1" diff --git a/mover/smithclkpayphone123456789010/code/task1/hello_move/Move.toml b/mover/smithclkpayphone123456789010/code/task1/hello_move/Move.toml new file mode 100644 index 000000000..2fd3b0f2a --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task1/hello_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hello_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hello_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/smithclkpayphone123456789010/code/task1/hello_move/sources/hello_move.move b/mover/smithclkpayphone123456789010/code/task1/hello_move/sources/hello_move.move new file mode 100644 index 000000000..93320295b --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task1/hello_move/sources/hello_move.move @@ -0,0 +1,21 @@ +/* +/// Module: hello_move +module hello_move::hello_move; +*/ +module hello_move::hello ; + +use std::ascii::{String, string}; +use sui::transfer::transfer; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"smithclkpayphone123456789010"), + }; + transfer(hello_move, ctx.sender()); +} \ No newline at end of file diff --git a/mover/smithclkpayphone123456789010/code/task1/hello_move/tests/hello_move_tests.move b/mover/smithclkpayphone123456789010/code/task1/hello_move/tests/hello_move_tests.move new file mode 100644 index 000000000..7798d8dda --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task1/hello_move/tests/hello_move_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hello_move::hello_move_tests; +// uncomment this line to import the module +// use hello_move::hello_move; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hello_move() { + // pass +} + +#[test, expected_failure(abort_code = ::hello_move::hello_move_tests::ENotImplemented)] +fun test_hello_move_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/smithclkpayphone123456789010/code/task2/My_Coin/Move.lock b/mover/smithclkpayphone123456789010/code/task2/My_Coin/Move.lock new file mode 100644 index 000000000..23df573ea --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task2/My_Coin/Move.lock @@ -0,0 +1,26 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "778146A43F9D8EB9A9CA02F0BA8B0346C9409679170CAF698DE1EDB8A1B61513" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" diff --git a/mover/smithclkpayphone123456789010/code/task2/My_Coin/Move.toml b/mover/smithclkpayphone123456789010/code/task2/My_Coin/Move.toml new file mode 100644 index 000000000..9d686bd31 --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task2/My_Coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "My_Coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/smithclkpayphone123456789010/code/task2/My_Coin/sources/prts.move b/mover/smithclkpayphone123456789010/code/task2/My_Coin/sources/prts.move new file mode 100644 index 000000000..d779a93d2 --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task2/My_Coin/sources/prts.move @@ -0,0 +1,24 @@ +module my_coin::prts; +use sui::coin::create_currency; +use std::option::{none, some}; +use sui::transfer::{public_freeze_object, public_transfer}; +use sui::url::Url; +use sui::url; + +public struct PRTS has drop{} + + + +fun init(prts:PRTS, ctx: &mut TxContext) { + + let no = none(); // "variable no means The set image is empty." + let url = url::new_unsafe_from_bytes(b"https://patchwiki.biligame.com/images/arknights/thumb/0/0f/t5ygg18f380pcqvwt22rrplk11pv734.png/180px-%E9%BE%99%E9%97%A8%E5%B8%81.png"); // variable url is the url of picture you want + let yes = some(url); // The variable `yes` holds a `Some` variant containing the `Url` instance, which is the URL of the image you want to use. + let(treasury,coin_metadata) = + create_currency(prts,8,b"PRTS",b"Longmen_Coin",b"Currency issued by Longmen, with wide-ranging uses.",yes,ctx); + + public_freeze_object(coin_metadata); //The public_freeze_object method freezes the passed object,the object contains the data of your own coin . + + public_transfer(treasury,ctx.sender()); // The token is transferred from the transaction sender's account (ctx.sender()) to the target account (treasury). +} +/* Minting your own coin */ \ No newline at end of file diff --git a/mover/smithclkpayphone123456789010/code/task2/My_Coin/sources/rmb.move b/mover/smithclkpayphone123456789010/code/task2/My_Coin/sources/rmb.move new file mode 100644 index 000000000..089234a3f --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task2/My_Coin/sources/rmb.move @@ -0,0 +1,33 @@ +module my_coin::rmb; +use sui::coin::create_currency; +use std::option::{none, some}; +use sui::transfer::{public_freeze_object, public_share_object}; +use sui::url::Url; +use sui::url; + +public struct RMB has drop{} + + + +fun init(rmb:RMB, ctx: &mut TxContext) { + + let no = none(); // "variable no means The set image is empty." + let url = url::new_unsafe_from_bytes(b"https://patchwiki.biligame.com/images/arknights/thumb/0/0f/t5ygg18f380pcqvwt22rrplk11pv734.png/180px-%E9%BE%99%E9%97%A8%E5%B8%81.png"); // variable url is the url of picture you want + let yes = some(url); // The variable `yes` holds a `Some` variant containing the `Url` instance, which is the URL of the image you want to use. + let(treasury,coin_metadata) = + create_currency(rmb,8,b"RMB",b"RMB",b"this is renmingbi.",no,ctx); + // public fun create_currency( + // witness: T, + // decimals: u8, + // symbol: vector, + // name: vector, + // description: vector, + // icon_url: Option, + // ctx: &mut TxContext, + // ): (TreasuryCap, CoinMetadata) + + public_freeze_object(coin_metadata); //The public_freeze_object method freezes the passed object,the object contains the data of your own coin . + + public_share_object(treasury); // The token is transferred from the transaction sender's account (ctx.sender()) to the target account (treasury). +} +/* Minting your own coin */ \ No newline at end of file diff --git a/mover/smithclkpayphone123456789010/code/task2/My_Coin/tests/my_coin_tests.move b/mover/smithclkpayphone123456789010/code/task2/My_Coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/smithclkpayphone123456789010/code/task2/My_Coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/smithclkpayphone123456789010/notes/task1.md b/mover/smithclkpayphone123456789010/notes/task1.md new file mode 100644 index 000000000..81852220f --- /dev/null +++ b/mover/smithclkpayphone123456789010/notes/task1.md @@ -0,0 +1,33 @@ +## 外部笔记链接: https://learnblockchain.cn/article/9911 + +`sui client active-address` 查看自己的地址 + +`sui client faucet` 请求测试币 + +`sui client gas` 查看余额 + +`sui move new hello_move` 创建一个.move项目,名称为hello_move + +`sui client publish` 将一个新的智能合约包(package)发送到sui区块链上 + +## *package(智能合约包)* + + package是存储智能合约的容器,sui client publish会将package发送到sui区块链上,等于说将你的智能合约部署到了链上,部署上链的合约可以被其他账户调用 + + 假设你已经编写了一个包含智能合约模块的 Rust 或 Move 文件,你可以通过以下步骤来**发布它**:\ + + `sui client publish --path /path/to/your/package` + + - `--path` 后面是你合约包所在的目录路径。 + - 该命令会在区块链上创建一个新的合约包并返回相应的 `packageID`,你可以使用这个 ID 来在未来的操作中引用该合约包。 + + +## *packageid(智能合约包的id)* + +智能合约包的唯一标识,其他账号可以通过id来查看调用包中的合约 + + + +## *transaction digest(交易摘要)* + +每一笔交易的唯一标识 \ No newline at end of file diff --git a/mover/smithclkpayphone123456789010/notes/task2.md b/mover/smithclkpayphone123456789010/notes/task2.md new file mode 100644 index 000000000..0e47f3e28 --- /dev/null +++ b/mover/smithclkpayphone123456789010/notes/task2.md @@ -0,0 +1 @@ +## 外部笔记链接: https://learnblockchain.cn/article/9988 \ No newline at end of file diff --git a/mover/smithclkpayphone123456789010/readme.md b/mover/smithclkpayphone123456789010/readme.md index 8a48d8e91..11a756b68 100644 --- a/mover/smithclkpayphone123456789010/readme.md +++ b/mover/smithclkpayphone123456789010/readme.md @@ -1,11 +1,11 @@ ## 基本信息 -- Sui钱包地址: `0x2f47252cb1d0422a1e5953571bcb3e27c382d8043ae9b7865a33399cce716682` +- Sui钱包地址: `0x435645882422995504a682fbc6fe752e36a97ab9b82d54cebec387a8594e4ff0` > 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 - github: `smithclkpayphone123456789010` ## 个人简介 -- 工作经验: 10年 -- 技术栈: `Rust` `C++` `Java` `Go` +- 工作经验: x年 +- 技术栈: `Rust` `C++` > 重要提示 请认真写自己的简介 - 多年web2开发经验,对Move特别感兴趣,想通过Move入门区块链 - 联系方式: tg: `xxx` @@ -13,17 +13,17 @@ ## 任务 ## 01 hello move -- [] Sui cli version:`sui 1.24.0-92ba3bc-dirty` -- [] Sui钱包截图: ![Sui钱包截图](Images\SuiWallet.png) -- [] package id (testnet): `0xce6897e193b3eec337017dbb9f6bd7185fcb8e5c7e203a73c07c061148d4af9d` -- [] package id 在 scan上的查看截图:`https://suiscan.xyz/testnet/object/0xce6897e193b3eec337017dbb9f6bd7185fcb8e5c7e203a73c07c061148d4af9d/txs` ![packageid截图](Images\PackageId.png) +- [√] Sui cli version: `sui 1.37.3-b8eb8920aeca` +- [√] Sui钱包截图: ![Sui钱包截图](images\sui钱包截图.png) +- [√] package id: `0x52bac991d33afcbcb4293d2a412f8b982d45d9f3cbaa6385a5d1f453297ad2d3` +- [√] package id 在 scan上的查看截图:![Scan截图](images\packageid浏览器截图.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [√] My Coin package id : `0xdf098516b0ecba9bc7db3e1c2d6b5aeb64c479170ed96808a6c60570885163f3` +- [√] Faucet package id : `0xdf098516b0ecba9bc7db3e1c2d6b5aeb64c479170ed96808a6c60570885163f3` +- [√] 转账 `My Coin` hash: `ChBN42MVw9aw2WHzmGn7sE8Hx8gNZhK4zSpAAhUqFT5g` +- [√] `Faucet Coin` address1 mint hash: `4Bnfi7u1UDT4qEPUHEuMKmLmksH8NGvakZ5DfT4C9PGb` +- [√] `Faucet Coin` address2 mint hash: `4BJTopr4t6rAYzDUK65FDhvj4igAh71rRpo2iaojML6x` ## 03 move NFT - [] nft package id : diff --git a/mover/smithclkpayphone123456789010/scan/readme.md b/mover/smithclkpayphone123456789010/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/smithclkpayphone123456789010/scan/readme.md @@ -0,0 +1 @@ + diff --git "a/mover/suiceber/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" "b/mover/suiceber/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" new file mode 100644 index 000000000..e193eb01c Binary files /dev/null and "b/mover/suiceber/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\270\211\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" differ diff --git "a/mover/suiceber/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" "b/mover/suiceber/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" new file mode 100644 index 000000000..7edb6b58f Binary files /dev/null and "b/mover/suiceber/co-learn-2411/images/\345\217\202\345\212\240\347\254\254\344\272\214\345\221\250\347\233\264\346\222\255\347\255\224\347\226\221.jpg" differ diff --git "a/mover/suiceber/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\350\257\276\347\250\213\345\255\246\344\271\240.png" "b/mover/suiceber/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\350\257\276\347\250\213\345\255\246\344\271\240.png" new file mode 100644 index 000000000..7fed4aa38 Binary files /dev/null and "b/mover/suiceber/co-learn-2411/images/\347\254\254\344\272\214\345\221\250\350\257\276\347\250\213\345\255\246\344\271\240.png" differ diff --git a/mover/suiceber/co-learn-2411/readme.md b/mover/suiceber/co-learn-2411/readme.md index 545a34b9c..2f41250f8 100644 --- a/mover/suiceber/co-learn-2411/readme.md +++ b/mover/suiceber/co-learn-2411/readme.md @@ -11,15 +11,15 @@ ## 每周课程学习 - [x] 第一周:![学习记录截图](./images/第一周课程学习.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第二周:![学习记录截图](./images/第二周课程学习.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 - [x] 第一周:![学习记录截图](./images/参加直播答疑.jpg) -- [] 第二周:![学习记录截图](./images/你的图片地址) -- [] 第三周:![学习记录截图](./images/你的图片地址) +- [x] 第二周:![学习记录截图](./images/参加第二周直播答疑.jpg) +- [x] 第三周:![学习记录截图](./images/参加第三周直播答疑.jpg) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 群里分享学习笔记 diff --git a/mover/suiceber/code/task3-my_nft/Move.lock b/mover/suiceber/code/task3-my_nft/Move.lock new file mode 100644 index 000000000..255944cd4 --- /dev/null +++ b/mover/suiceber/code/task3-my_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "4C9B47E7441289AA0D50D87EEB9836BD01CE3604E3B249490E7F2046EAEE3400" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x7457fc74ff95c140b4dd4f38360f7b3968d7fd83bd3cb7a96a5e2d1d930a91b0" +latest-published-id = "0x7457fc74ff95c140b4dd4f38360f7b3968d7fd83bd3cb7a96a5e2d1d930a91b0" +published-version = "1" diff --git a/mover/suiceber/code/task3-my_nft/Move.toml b/mover/suiceber/code/task3-my_nft/Move.toml new file mode 100644 index 000000000..d40d13d2e --- /dev/null +++ b/mover/suiceber/code/task3-my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/suiceber/code/task3-my_nft/sources/my_nft.move b/mover/suiceber/code/task3-my_nft/sources/my_nft.move new file mode 100644 index 000000000..4d888a797 --- /dev/null +++ b/mover/suiceber/code/task3-my_nft/sources/my_nft.move @@ -0,0 +1,38 @@ +module my_nft::my_nft{ + use std::string; + use std::string::String; + use sui::transfer::transfer; + use sui::tx_context::sender; + + public struct MyNFT has key,store{ + id:UID, + name:String, + image_url:String, + } + + fun init(ctx: &mut TxContext){ + let nft = MyNFT{ + id:object::new(ctx), + name:string::utf8(b"suiceber NFT"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/182899206?v=4&size=64") , + }; + transfer(nft, sender(ctx)); + + } + + public entry fun mint_and_transfer_nft( + image_url: String, + name:String, + ctx: &mut TxContext + ) { + let id = object::new(ctx); + let nft = MyNFT { + id, + name, + image_url, + }; + transfer(nft, sender(ctx)); + + } + +} \ No newline at end of file diff --git a/mover/suiceber/code/task3-my_nft/tests/my_nft_tests.move b/mover/suiceber/code/task3-my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..56164f4a2 --- /dev/null +++ b/mover/suiceber/code/task3-my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task3-my_nft::my_nft_tests; +// uncomment this line to import the module +// use task3-my_nft::task3-my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::task3-my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/suiceber/images/task3-Scan.png b/mover/suiceber/images/task3-Scan.png new file mode 100644 index 000000000..b1abafd1b Binary files /dev/null and b/mover/suiceber/images/task3-Scan.png differ diff --git a/mover/suiceber/readme.md b/mover/suiceber/readme.md index f0b42676b..abac531bb 100644 --- a/mover/suiceber/readme.md +++ b/mover/suiceber/readme.md @@ -26,10 +26,10 @@ - [] `Faucet Coin` address2 mint hash: ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :0x7457fc74ff95c140b4dd4f38360f7b3968d7fd83bd3cb7a96a5e2d1d930a91b0 +- [x] nft object id : 0x82b59355578222b2fbda80b3b11fe07323e6c1ca25ae2430c711533c2e9dbc53 +- [x] 转账 nft hash:BXSfoCXZr4oxRmgT2NiCsYaJ6me2Q96zvpS9X1HWbDmC +- [x] scan上的NFT截图:![Scan截图](./images/task3-Scan.png) ## 04 Move Game - [] game package id : diff --git a/mover/unpWn4bl3/code/task6/package-lock.json b/mover/unpWn4bl3/code/task6/package-lock.json new file mode 100644 index 000000000..a4e944c89 --- /dev/null +++ b/mover/unpWn4bl3/code/task6/package-lock.json @@ -0,0 +1,2606 @@ +{ + "name": "task6", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "task6", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "navi-sdk": "^1.1.15", + "task6": "file:" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.8.tgz", + "integrity": "sha512-8BG6woLtDMvXB9Ajb/uE+Zr/U7y4qJ3upXi0JQHZmsKUJa7HjF/gFvmL2f3/mSmfZoQGRr9VoY97LCX2uaFMzA==", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.14.tgz", + "integrity": "sha512-0FoG2EkXxTY+++dKggmBkwY/skAE5dW2yqt4abHF0zrbCId4WreoFfhoTQT82FeD6gbkYe5FGrcn1x9SjnO77g==", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@digitak/grubber": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", + "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.6.2.tgz", + "integrity": "sha512-P4bOOayf6zR/uRWHmVyRz8auiuOzNmq8C0YFQbhj5TGGgHr5kkVI2ZIrplWsJqCBTYzpZEYzaxa9iGP6vuKA9Q==", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@mysten/bcs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-1.0.4.tgz", + "integrity": "sha512-6JoQi59GN/dVEBCNq8Rj4uOR0niDrJqDx/2gNQWXANwJakHIGH0AMniHrXP41B2dF+mZ3HVmh9Hi3otiEVQTrQ==", + "dependencies": { + "bs58": "^6.0.0" + } + }, + "node_modules/@mysten/sui": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@mysten/sui/-/sui-1.9.0.tgz", + "integrity": "sha512-AcnwVK7ro8+GWAp/vz0V35naS1/PD1FkYlH6rglupKWvVIpnmEBgjr+XE7U4LvtAyoXPiE4uj/MhXLIx5rZuzw==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "1.0.4", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@scure/bip32": "^1.4.0", + "@scure/bip39": "^1.3.0", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.8.2", + "graphql": "^16.9.0", + "tweetnacl": "^1.0.3", + "valibot": "^0.36.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mysten/sui.js": { + "version": "0.54.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.54.1.tgz", + "integrity": "sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.7.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@mysten/sui.js/node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@mysten/sui.js/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@mysten/sui.js/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@pythnetwork/price-service-client": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz", + "integrity": "sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==", + "deprecated": "This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead.", + "dependencies": { + "@pythnetwork/price-service-sdk": "*", + "@types/ws": "^8.5.3", + "axios": "^1.5.1", + "axios-retry": "^3.8.0", + "isomorphic-ws": "^4.0.1", + "ts-log": "^2.2.4", + "ws": "^8.6.0" + } + }, + "node_modules/@pythnetwork/price-service-sdk": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz", + "integrity": "sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==", + "dependencies": { + "bn.js": "^5.2.1" + } + }, + "node_modules/@pythnetwork/pyth-sui-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/pyth-sui-js/-/pyth-sui-js-2.1.0.tgz", + "integrity": "sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==", + "dependencies": { + "@mysten/sui": "^1.3.0", + "@pythnetwork/price-service-client": "1.9.0", + "buffer": "^6.0.3" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", + "integrity": "sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "dependencies": { + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dependencies": { + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-retry": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.9.1.tgz", + "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/esrun": { + "version": "3.2.26", + "resolved": "https://registry.npmjs.org/esrun/-/esrun-3.2.26.tgz", + "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "dependencies": { + "@digitak/grubber": "^3.1.4", + "chokidar": "^3.5.1", + "esbuild": "^0.17.4" + }, + "bin": { + "esrun": "bin.js" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gql.tada": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.7.tgz", + "integrity": "sha512-ixqMvH5jRs5wxe5liNoaG1TA9NfA+kAz8QzfT0xrzcKARJOVC7MednVhxyhY1RDgZH8mNfChK3ti8cIcd9cuuw==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.2", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/navi-sdk": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/navi-sdk/-/navi-sdk-1.3.2.tgz", + "integrity": "sha512-ODsJS6BOcgVT3vjDAnbMLPorcG4mljFRVOGB30ZjRPow/3shLpmiQ+jGfaEKu7b6xd4ojYRyykYLpAF7/QLzUg==", + "dependencies": { + "@mysten/sui": "^1.8.0", + "@mysten/sui.js": "^0.54.1", + "@pythnetwork/pyth-sui-js": "^2.1.0", + "axios": "^1.7.7", + "esrun": "^3.2.26", + "tsconfig-paths": "^4.2.0", + "vitest": "^1.6.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dependencies": { + "js-tokens": "^9.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/task6": { + "resolved": "", + "link": true + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==" + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/valibot": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==" + }, + "node_modules/vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitest": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "dependencies": { + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/mover/unpWn4bl3/code/task6/package.json b/mover/unpWn4bl3/code/task6/package.json index 75df5292a..8eb895dc0 100644 --- a/mover/unpWn4bl3/code/task6/package.json +++ b/mover/unpWn4bl3/code/task6/package.json @@ -10,7 +10,8 @@ "author": "", "license": "ISC", "dependencies": { - "navi-sdk": "^1.1.15" + "navi-sdk": "^1.1.15", + "task6": "file:" }, "type": "module" -} \ No newline at end of file +} diff --git a/mover/xiongchenyu6/co-learn-2411/images/20241118-174757_screenshot.png b/mover/xiongchenyu6/co-learn-2411/images/20241118-174757_screenshot.png new file mode 100644 index 000000000..d110ff542 Binary files /dev/null and b/mover/xiongchenyu6/co-learn-2411/images/20241118-174757_screenshot.png differ diff --git a/mover/xiongchenyu6/co-learn-2411/images/20241118-175931_screenshot.png b/mover/xiongchenyu6/co-learn-2411/images/20241118-175931_screenshot.png new file mode 100644 index 000000000..fe53f6b98 Binary files /dev/null and b/mover/xiongchenyu6/co-learn-2411/images/20241118-175931_screenshot.png differ diff --git a/mover/xiongchenyu6/co-learn-2411/images/20241119-164015_screenshot.png b/mover/xiongchenyu6/co-learn-2411/images/20241119-164015_screenshot.png new file mode 100644 index 000000000..5455064ab Binary files /dev/null and b/mover/xiongchenyu6/co-learn-2411/images/20241119-164015_screenshot.png differ diff --git a/mover/xiongchenyu6/co-learn-2411/images/IMG_4198.png b/mover/xiongchenyu6/co-learn-2411/images/IMG_4198.png new file mode 100644 index 000000000..ebda6d20b Binary files /dev/null and b/mover/xiongchenyu6/co-learn-2411/images/IMG_4198.png differ diff --git a/mover/xiongchenyu6/co-learn-2411/images/IMG_4200.png b/mover/xiongchenyu6/co-learn-2411/images/IMG_4200.png new file mode 100644 index 000000000..e0d206c29 Binary files /dev/null and b/mover/xiongchenyu6/co-learn-2411/images/IMG_4200.png differ diff --git a/mover/xiongchenyu6/co-learn-2411/readme.md b/mover/xiongchenyu6/co-learn-2411/readme.md index bec391402..e0e861e79 100644 --- a/mover/xiongchenyu6/co-learn-2411/readme.md +++ b/mover/xiongchenyu6/co-learn-2411/readme.md @@ -2,23 +2,25 @@ ## b站,推特关注 -- [x] b站,推特关注截图: ![关注截图](./images/20241107-185011_screenshot.png) +- [x] b站关注截图: ![关注截图](./images/20241107-185011_screenshot.png) +- [x] 推特关注截图: ![关注截图](./images/20241118-174757_screenshot.png) + ## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) -- [] 宣传截图:![宣传截图](./images/你的图片地址) +- [x] 宣传截图:![宣传截图](./images/IMG_4198.png) ## 每周课程学习 - [x] 第一周:![学习记录截图](./images/20241107-184959_screenshot.png) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第二周:![学习记录截图](./images/20241118-175931_screenshot.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) ## 参加直播答疑 - [] 第一周:![学习记录截图](./images/你的图片地址) -- [] 第二周:![学习记录截图](./images/你的图片地址) +- [x] 第二周:![学习记录截图](./images/IMG_4200.png) - [] 第三周:![学习记录截图](./images/你的图片地址) - [] 第四周:![学习记录截图](./images/你的图片地址) diff --git a/mover/xiongchenyu6/code/task2/Move.lock b/mover/xiongchenyu6/code/task2/Move.lock new file mode 100644 index 000000000..0e69d1334 --- /dev/null +++ b/mover/xiongchenyu6/code/task2/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "E7A65BF39B740E195045E87B46B06936199C063AFE29D8948B9C6B9B853033A8" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x92e2c8604429789bdb504505c82d1d8e9a14aaf7eb5ebd5434efade956c47260" +latest-published-id = "0x92e2c8604429789bdb504505c82d1d8e9a14aaf7eb5ebd5434efade956c47260" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x32de70fc2e92a7abddf1675afc56b37c5403a4a846d68de328c44d528450754e" +latest-published-id = "0x32de70fc2e92a7abddf1675afc56b37c5403a4a846d68de328c44d528450754e" +published-version = "1" diff --git a/mover/xiongchenyu6/code/task2/Move.toml b/mover/xiongchenyu6/code/task2/Move.toml new file mode 100644 index 000000000..6a6098d99 --- /dev/null +++ b/mover/xiongchenyu6/code/task2/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task2" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task2 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/xiongchenyu6/code/task2/sources/faucet_coin.move b/mover/xiongchenyu6/code/task2/sources/faucet_coin.move new file mode 100644 index 000000000..60334292a --- /dev/null +++ b/mover/xiongchenyu6/code/task2/sources/faucet_coin.move @@ -0,0 +1,39 @@ +/* +/// Module: task2 +*/ +module task2::faucet_coin { + + use sui::coin::{Self, TreasuryCap, Coin}; + use sui::url; + + public struct FAUCET_COIN has drop {} + + fun init(witness: FAUCET_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"ALRFAUCET", + b"faucet autolife robotics", + b"First ai robotics coin on sui net by autolife robotics faucet", + option::some(url::new_unsafe_from_bytes(b"https://www.autolife.ai/icon.svg")), ctx); + + transfer::public_freeze_object(metadata); + transfer::public_share_object(treasury) + } + + #[allow(lint(self_transfer))] + public entry fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + ctx: &mut TxContext, + ) { + let coin = coin::mint(treasury_cap, amount, ctx); + let sender = tx_context::sender(ctx); + + transfer::public_transfer(coin, sender) + } + + public entry fun burn(treasury_cap: &mut TreasuryCap, coin: Coin) { + coin::burn(treasury_cap, coin); + } +} diff --git a/mover/xiongchenyu6/code/task2/sources/my_coin.move b/mover/xiongchenyu6/code/task2/sources/my_coin.move new file mode 100644 index 000000000..bde97d4a0 --- /dev/null +++ b/mover/xiongchenyu6/code/task2/sources/my_coin.move @@ -0,0 +1,32 @@ +/* +/// Module: task2 +*/ +module task2::autolife_robotics { + use sui::coin::{Self, TreasuryCap}; + use sui::url; + + public struct AUTOLIFE_ROBOTICS has drop {} + + fun init(witness: AUTOLIFE_ROBOTICS, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 6, + b"AUTOLFIE", + b"autolife robotics", + b"First ai robot coin on sui net by autolife robotics", + option::some(url::new_unsafe_from_bytes(b"https://www.autolife.ai/icon.svg")), ctx); + + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, ctx.sender()) + } + + public fun mint( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext, + ) { + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient) + } +} \ No newline at end of file diff --git a/mover/xiongchenyu6/code/task2/tests/task2_tests.move b/mover/xiongchenyu6/code/task2/tests/task2_tests.move new file mode 100644 index 000000000..8a0300a94 --- /dev/null +++ b/mover/xiongchenyu6/code/task2/tests/task2_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task2::task2_tests; +// uncomment this line to import the module +// use task2::task2; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task2() { + // pass +} + +#[test, expected_failure(abort_code = ::task2::task2_tests::ENotImplemented)] +fun test_task2_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/xiongchenyu6/code/task3/Move.lock b/mover/xiongchenyu6/code/task3/Move.lock new file mode 100644 index 000000000..25bc82e1d --- /dev/null +++ b/mover/xiongchenyu6/code/task3/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "DEDE53BD567ECEDC2009BE853A86F47F6BDC3F1F03A6B00FAED274F07E74A18B" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xcbcdf4bb693e1d1d884ac1a91f029e4836221cccc9bac901bc3399fefdcbcab2" +latest-published-id = "0xcbcdf4bb693e1d1d884ac1a91f029e4836221cccc9bac901bc3399fefdcbcab2" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x8f114682b00555c2cc6d2fd2fb2fa8b388d3f71e067150b6493133dc1a4133a6" +latest-published-id = "0x8f114682b00555c2cc6d2fd2fb2fa8b388d3f71e067150b6493133dc1a4133a6" +published-version = "1" diff --git a/mover/xiongchenyu6/code/task3/Move.toml b/mover/xiongchenyu6/code/task3/Move.toml new file mode 100644 index 000000000..480be1592 --- /dev/null +++ b/mover/xiongchenyu6/code/task3/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "task3" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +task3 = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/xiongchenyu6/code/task3/sources/task3.move b/mover/xiongchenyu6/code/task3/sources/task3.move new file mode 100644 index 000000000..49dcbb3aa --- /dev/null +++ b/mover/xiongchenyu6/code/task3/sources/task3.move @@ -0,0 +1,139 @@ +/* +/// Module: task3*/ +module task3::autolife_nft { + use std::string; + use std::string::{ String }; + use sui::url; + use sui::url::Url; + use sui::event; + use sui::package; + use sui::display; + + public struct RobotNft has key, store{ + id:UID, + name: String, + description: String, + image_url: Url, + } + public struct AUTOLIFE_NFT has drop{} + + + // ===== Events ===== + + public struct NFTMinted has copy, drop { + object_id: ID, + creator: address, + name: String, + } + + /// The capability granting the application admin the right to create new + /// accounts in the system. + public struct AdminCap has key, store { id: UID } + + /// Create the AdminCap object on package publish and transfer it to the + /// package owner. + fun init(otw:AUTOLIFE_NFT, ctx: &mut TxContext) { + + let keys = vector[ + b"name".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Hero.name` property + b"{name}".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Hero` objects. + b"{description}".to_string(), + // Creator field can be any + b"Autolife-Robotics".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `RobotNft` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + transfer::transfer( + AdminCap { id: object::new(ctx) }, + ctx.sender() + ) + } + + public entry fun mint_to_sender( + name: vector, + description: vector, + img_url: vector, + ctx: &mut TxContext + ) { + let sender = ctx.sender(); + inner_mint_to(name, description, img_url, sender, ctx); + } + + public entry fun mint_to( + name: vector, + description: vector, + img_url: vector, + reciver: address, + ctx: &mut TxContext) { + + inner_mint_to(name, description, img_url, reciver, ctx); + } + + fun inner_mint_to( + name: vector, + description: vector, + img_url: vector, + reciver: address, + ctx: &mut TxContext){ + + let nft = RobotNft { + id: object::new(ctx), + name: string::utf8(name), + description: string::utf8(description), + image_url: url::new_unsafe_from_bytes(img_url) + }; + + event::emit(NFTMinted { + object_id: object::id(&nft), + creator: reciver, + name: nft.name, + }); + + transfer::public_transfer(nft, reciver); + } + + /// Transfer `nft` to `recipient` + public entry fun transfer( + nft: RobotNft, recipient: address, _: &mut TxContext + ) { + transfer::public_transfer(nft, recipient) + } + + /// Update the `description` of `nft` to `new_description` + public entry fun update_description( + nft: &mut RobotNft, + new_description: vector, + _: &mut TxContext + ) { + nft.description = string::utf8(new_description) + } + + /// Permanently delete `nft` + public entry fun burn(_: &AdminCap, nft: RobotNft, _: &mut TxContext) { + let RobotNft { id, name: _, description: _, image_url: _ } = nft; + id.delete() + } +} \ No newline at end of file diff --git a/mover/xiongchenyu6/code/task3/tests/task3_tests.move b/mover/xiongchenyu6/code/task3/tests/task3_tests.move new file mode 100644 index 000000000..d128fbb0f --- /dev/null +++ b/mover/xiongchenyu6/code/task3/tests/task3_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module task3::task3_tests; +// uncomment this line to import the module +// use task3::task3; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_task3() { + // pass +} + +#[test, expected_failure(abort_code = ::task3::task3_tests::ENotImplemented)] +fun test_task3_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/xiongchenyu6/code/task4/Move.lock b/mover/xiongchenyu6/code/task4/Move.lock new file mode 100644 index 000000000..3e265a389 --- /dev/null +++ b/mover/xiongchenyu6/code/task4/Move.lock @@ -0,0 +1,49 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "84A42D3EFFDD8DE8ECCDBC0E1150EB1E5BD8EC2C4AE04DBD4A44BD598011BC8A" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "task2", name = "task2" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "task2" +source = { local = "../task2" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.38.0" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0x5dbfcbe125b8f5abff72b4ed6aac324e6045788befc3d8246992628e0e4c93de" +latest-published-id = "0x5dbfcbe125b8f5abff72b4ed6aac324e6045788befc3d8246992628e0e4c93de" +published-version = "1" + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x3fd9c2ff46850b9bdf4695b0da6e79e912095c9cb34976c16d8e8221895c439a" +latest-published-id = "0x3fd9c2ff46850b9bdf4695b0da6e79e912095c9cb34976c16d8e8221895c439a" +published-version = "1" diff --git a/mover/xiongchenyu6/code/task4/Move.toml b/mover/xiongchenyu6/code/task4/Move.toml new file mode 100644 index 000000000..b42e3130b --- /dev/null +++ b/mover/xiongchenyu6/code/task4/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +task2 = { local = "../task2" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" diff --git a/mover/xiongchenyu6/code/task4/sources/my_game.move b/mover/xiongchenyu6/code/task4/sources/my_game.move new file mode 100644 index 000000000..8fcfb4bfa --- /dev/null +++ b/mover/xiongchenyu6/code/task4/sources/my_game.move @@ -0,0 +1,88 @@ +#[allow(unused_use, duplicate_alias, lint(public_random))] +module my_game::my_game { + // Use necessary modules and types + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::balance::{Self, Balance}; + use sui::random::{Self, Random, new_generator}; + use task2::faucet_coin::{FAUCET_COIN}; + use 0x1::bcs::{}; + + // Constants in ALL_CAPS with underscores + const BALANCE_VALUE_SMALL: u64 = 1000; + + /// Struct representing a reward pool with a unique ID and balance + public struct RewardPool has key, store { + id: UID, + balance: Balance, + } + + /// Struct representing the owner with a unique ID + public struct Owner has key { + id: UID, + } + + /// Initializes the reward pool and assigns ownership + fun init(ctx: &mut TxContext) { + // Create a new reward pool with zero balance + let reward_pool = RewardPool { id: object::new(ctx), balance: balance::zero(), }; + // Share the reward pool object + transfer::share_object(reward_pool); + + // Create a new owner object + let owner = Owner { id: object::new(ctx) }; + // Transfer ownership to the sender + transfer::transfer(owner, tx_context::sender(ctx)); + } + + /// Deposits a specified amount into the reward pool from the given coin + public entry fun deposit(reward: &mut RewardPool, coin: &mut Coin, amount: u64) { + // Ensure the coin has enough value for the deposit amount + assert!(coin::value(coin) >= amount, BALANCE_VALUE_SMALL); + + // Split the coin balance to get the deposit amount + let split_balance = balance::split(coin::balance_mut(coin), amount); + // Join the split balance into the reward pool's balance + balance::join(&mut reward.balance, split_balance); + } + + /// Withdraws a specified amount from the reward pool to the owner + entry fun withdraw(reward: &mut RewardPool, amount: u64, _: &mut Owner, ctx: &mut TxContext) { + // Ensure the reward pool has enough balance for the withdrawal + assert!(reward.balance.value() >= amount, BALANCE_VALUE_SMALL); + + // Take the amount from the reward pool's balance + let recv_balance = coin::take(&mut reward.balance, amount, ctx); + // Transfer the withdrawn amount to the sender + transfer::public_transfer(recv_balance, tx_context::sender(ctx)); + } + + /// Plays a game where the user guesses a boolean value + public entry fun game( + reward_pool: &mut RewardPool, + coin: &mut Coin, + amount: u64, + guess: bool, + rand: &Random, + ctx: &mut TxContext + ) { + // Ensure the coin has enough value to place the bet + assert!(coin::value(coin) >= amount, BALANCE_VALUE_SMALL); + + // Create a new random number generator + let mut generator = new_generator(rand, ctx); + // Generate a random number between 0 and 1 + let result = random::generate_u8_in_range(&mut generator, 0, 1); + + // Convert the random result to a boolean + let flag: bool = result == 1; + if (flag == guess) { + // If the guess is correct, reward the player + let reward = coin::take(&mut reward_pool.balance, amount, ctx); + coin::join(coin, reward); + } else { + // If the guess is incorrect, deposit the amount into the reward pool + deposit(reward_pool, coin, amount); + } + } +} + diff --git a/mover/xiongchenyu6/code/task4/tests/my_game_tests.move b/mover/xiongchenyu6/code/task4/tests/my_game_tests.move new file mode 100644 index 000000000..a86dc77ed --- /dev/null +++ b/mover/xiongchenyu6/code/task4/tests/my_game_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_game::my_game_tests; +// uncomment this line to import the module +// use my_game::my_game; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_game() { + // pass +} + +#[test, expected_failure(abort_code = ::my_game::my_game_tests::ENotImplemented)] +fun test_my_game_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/xiongchenyu6/readme.md b/mover/xiongchenyu6/readme.md index d4013c365..2c554b0df 100644 --- a/mover/xiongchenyu6/readme.md +++ b/mover/xiongchenyu6/readme.md @@ -12,7 +12,7 @@ ## 任务 -## 01 hello move +## 01 hello move - [x] Sui cli version: sui 1.37.1-7839b9501066 - [x] Sui钱包截图: ![Sui钱包截图](./co-learn-2411/images/20241108-102046_screenshot.png) - [x] package id: 0x9c87e896b2d75c4a4264b6f330ad8289102514435a8e55a28c20ff6aecca5b1d @@ -20,25 +20,25 @@ ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0x32de70fc2e92a7abddf1675afc56b37c5403a4a846d68de328c44d528450754e +- [x] Faucet package id : 0x32de70fc2e92a7abddf1675afc56b37c5403a4a846d68de328c44d528450754e +- [x] 转账 `My Coin` hash: EJBJZPbavFmXXxN8whgUMxHnWNbHKGjPFuCcbqR2kXPg +- [x] `Faucet Coin` address1 mint hash: EWKVnwGMxQxhQTGgFy7V5PP9XnAQqBm4qtNaZ3fdtzT9 +- [x] `Faucet Coin` address2 mint hash: 6f5nFAjVYQUUJpW8Yvt8HM3VDWJ1XRvjPUGeoSvmC4fN ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan 上的 NFT 截图:![Scan截图](./images/你的图片地址) +- [x] nft package id : 0x8f114682b00555c2cc6d2fd2fb2fa8b388d3f71e067150b6493133dc1a4133a6 +- [x] nft object id : 0x80f62e3d3c52373385e21763cc235e1e46b3ef658b837fde4b390d2a448ebc5b +- [x] 转账 nft hash: 7bLrDV4GVAM1niBEQ19Tz4ZB8u1XytdhzNYoUw9C2KWm +- [x] scan 上的 NFT 截图:![Scan截图](./images/20241119-164015_screenshot.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id : 0x3fd9c2ff46850b9bdf4695b0da6e79e912095c9cb34976c16d8e8221895c439a +- [x] deposit Coin hash: 6SQrfU3LGLrhmXZNbMfb71jAfkPwksjAPGU7K9hMLUXL +- [x] withdraw `Coin` hash: DSHjboMZdQYdVbt2d6FVa4mYM7QBSERHecsB2KUJXUVH +- [x] play game hash: 8nr8rLEVPatAvYdRDsfkq1kbqdYYYES4mWJEvMX2qDnK ## 05 Move Swap @@ -58,4 +58,4 @@ ## 08 Move CTF Lets Move - [] proof : -- [] flag hash : \ No newline at end of file +- [] flag hash : diff --git a/mover/yhfysun/code/task3/my_ntf/README.md b/mover/yhfysun/code/task3/my_ntf/README.md new file mode 100644 index 000000000..1d2e227fb --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/README.md @@ -0,0 +1,102 @@ +# Sui dApp Starter Template + +This dApp was created using `@mysten/create-dapp` that sets up a basic React +Client dApp using the following tools: + +- [React](https://react.dev/) as the UI framework +- [TypeScript](https://www.typescriptlang.org/) for type checking +- [Vite](https://vitejs.dev/) for build tooling +- [Radix UI](https://www.radix-ui.com/) for pre-built UI components +- [ESLint](https://eslint.org/) for linting +- [`@mysten/dapp-kit`](https://sdk.mystenlabs.com/dapp-kit) for connecting to + wallets and loading data +- [pnpm](https://pnpm.io/) for package management + +For a full guide on how to build this dApp from scratch, visit this +[guide](http://docs.sui.io/guides/developer/app-examples/e2e-counter#frontend). + +## Deploying your Move code + +### Install Sui cli + +Before deploying your move code, ensure that you have installed the Sui CLI. You +can follow the [Sui installation instruction](https://docs.sui.io/build/install) +to get everything set up. + +This template uses `testnet` by default, so we'll need to set up a testnet +environment in the CLI: + +```bash +sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443 +sui client switch --env testnet +``` + +If you haven't set up an address in the sui client yet, you can use the +following command to get a new address: + +```bash +sui client new-address secp256k1 +``` + +This well generate a new address and recover phrase for you. You can mark a +newly created address as you active address by running the following command +with your new address: + +```bash +sui client switch --address 0xYOUR_ADDRESS... +``` + +We can ensure we have some Sui in our new wallet by requesting Sui from the +faucet (make sure to replace the address with your address): + +```bash +curl --location --request POST 'https://faucet.testnet.sui.io/gas' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "FixedAmountRequest": { + "recipient": "" + } +}' +``` + +### Publishing the move package + +The move code for this template is located in the `move` directory. To publish +it, you can enter the `move` directory, and publish it with the Sui CLI: + +```bash +cd move +sui client publish --gas-budget 100000000 counter +``` + +In the output there will be an object with a `"packageId"` property. You'll want +to save that package ID to the `src/constants.ts` file as `PACKAGE_ID`: + +```ts +export const TESTNET_COUNTER_PACKAGE_ID = ""; +``` + +Now that we have published the move code, and update the package ID, we can +start the app. + +## Starting your dApp + +To install dependencies you can run + +```bash +pnpm install +``` + +To start your dApp in development mode run + +```bash +pnpm dev +``` + +## Building + +To build your app for deployment you can run + +```bash +pnpm build +``` diff --git a/mover/yhfysun/code/task3/my_ntf/index.html b/mover/yhfysun/code/task3/my_ntf/index.html new file mode 100644 index 000000000..bb7f75b16 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/index.html @@ -0,0 +1,59 @@ + + + + + + + Sui dApp Starter + + + + +
+ + + diff --git a/mover/yhfysun/code/task3/my_ntf/move/counter/Move.toml b/mover/yhfysun/code/task3/my_ntf/move/counter/Move.toml new file mode 100644 index 000000000..970e0ebee --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/move/counter/Move.toml @@ -0,0 +1,10 @@ +[package] +name = "counter" +version = "0.0.1" +edition = "2024.beta" + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +[addresses] +counter = "0x0" diff --git a/mover/yhfysun/code/task3/my_ntf/move/counter/sources/counter.move b/mover/yhfysun/code/task3/my_ntf/move/counter/sources/counter.move new file mode 100644 index 000000000..5ecae366b --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/move/counter/sources/counter.move @@ -0,0 +1,72 @@ +module counter::counter; +use std::string; +use std::string::String; +use sui::transfer::transfer; +use sui::tx_context::sender; +// The creator bundle: these two packages often go together. +use sui::package; +use sui::display; + +public struct MyNft has key { + id: UID, + name: String, + image_url: String +} + +public struct COUNTER has drop {} + +fun init(otw: COUNTER, ctx: &mut TxContext) { + let keys = vector[ + b"name".to_string(), + b"link".to_string(), + b"image_url".to_string(), + b"description".to_string(), + b"project_url".to_string(), + b"creator".to_string(), + ]; + + let values = vector[ + // For `name` one can use the `Ant.name` property + b"{name}".to_string(), + // For `link` one can build a URL using an `id` property + b"".to_string(), + // For `image_url` use an IPFS template + `image_url` property. + b"{image_url}".to_string(), + // Description is static for all `Ant` objects. + b"An Ant of the Sui ecosystem!".to_string(), + // Project URL is usually static + b"".to_string(), + // Creator field can be any + b"yhfysun Sui Fan".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `MyNft` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + let my_nft = MyNft { + id: object::new(ctx), + name: string::utf8(b"yhfysun NFT"), + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/48269774?v=4&size=64"), + }; + transfer(my_nft, sender(ctx)); +} + +public entry fun mint(name: String, image_url: String, address: address, ctx: &mut TxContext) { + let my_nft = MyNft { + id: object::new(ctx), + name, + image_url, + }; + transfer(my_nft, address); +} \ No newline at end of file diff --git a/mover/yhfysun/code/task3/my_ntf/package.json b/mover/yhfysun/code/task3/my_ntf/package.json new file mode 100644 index 000000000..3f47a3291 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/package.json @@ -0,0 +1,36 @@ +{ + "name": "my_ntf", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "0.14.33", + "@mysten/sui": "1.14.3", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-spinners": "^0.14.1" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^8.45.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } +} \ No newline at end of file diff --git a/mover/yhfysun/code/task3/my_ntf/prettier.config.cjs b/mover/yhfysun/code/task3/my_ntf/prettier.config.cjs new file mode 100644 index 000000000..c07541106 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/prettier.config.cjs @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-undef +module.exports = { + proseWrap: "always", +}; diff --git a/mover/yhfysun/code/task3/my_ntf/src/App.tsx b/mover/yhfysun/code/task3/my_ntf/src/App.tsx new file mode 100644 index 000000000..dd5506c95 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/App.tsx @@ -0,0 +1,61 @@ +import { ConnectButton, useCurrentAccount } from "@mysten/dapp-kit"; +import { isValidSuiObjectId } from "@mysten/sui/utils"; +import { Box, Container, Flex, Heading } from "@radix-ui/themes"; +import { useState } from "react"; +import { Counter } from "./Counter"; +import { CreateCounter } from "./CreateCounter"; + +function App() { + const currentAccount = useCurrentAccount(); + const [counterId, setCounter] = useState(() => { + const hash = window.location.hash.slice(1); + return isValidSuiObjectId(hash) ? hash : null; + }); + + return ( + <> + + + dApp Starter Template + + + + + + + + + {currentAccount ? ( + counterId ? ( + + ) : ( + { + window.location.hash = id; + setCounter(id); + }} + /> + ) + ) : ( + Please connect your wallet + )} + + + + ); +} + +export default App; diff --git a/mover/yhfysun/code/task3/my_ntf/src/Counter.tsx b/mover/yhfysun/code/task3/my_ntf/src/Counter.tsx new file mode 100644 index 000000000..3ad530d86 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/Counter.tsx @@ -0,0 +1,106 @@ +import { + useCurrentAccount, + useSignAndExecuteTransaction, + useSuiClient, + useSuiClientQuery, +} from "@mysten/dapp-kit"; +import type { SuiObjectData } from "@mysten/sui/client"; +import { Transaction } from "@mysten/sui/transactions"; +import { Button, Flex, Heading, Text } from "@radix-ui/themes"; +import { useNetworkVariable } from "./networkConfig"; +import { useState } from "react"; +import ClipLoader from "react-spinners/ClipLoader"; + +export function Counter({ id }: { id: string }) { + const counterPackageId = useNetworkVariable("counterPackageId"); + const suiClient = useSuiClient(); + const currentAccount = useCurrentAccount(); + const { mutate: signAndExecute } = useSignAndExecuteTransaction(); + const { data, isPending, error, refetch } = useSuiClientQuery("getObject", { + id, + options: { + showContent: true, + showOwner: true, + }, + }); + + const [waitingForTxn, setWaitingForTxn] = useState(""); + + const executeMoveCall = (method: "increment" | "reset") => { + setWaitingForTxn(method); + + const tx = new Transaction(); + + if (method === "reset") { + tx.moveCall({ + arguments: [tx.object(id), tx.pure.u64(0)], + target: `${counterPackageId}::counter::set_value`, + }); + } else { + tx.moveCall({ + arguments: [tx.object(id)], + target: `${counterPackageId}::counter::increment`, + }); + } + + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: (tx) => { + suiClient.waitForTransaction({ digest: tx.digest }).then(async () => { + await refetch(); + setWaitingForTxn(""); + }); + }, + }, + ); + }; + + if (isPending) return Loading...; + + if (error) return Error: {error.message}; + + if (!data.data) return Not found; + + const ownedByCurrentAccount = + getCounterFields(data.data)?.owner === currentAccount?.address; + + return ( + <> + Counter {id} + + + Count: {getCounterFields(data.data)?.value} + + + {ownedByCurrentAccount ? ( + + ) : null} + + + + ); +} +function getCounterFields(data: SuiObjectData) { + if (data.content?.dataType !== "moveObject") { + return null; + } + + return data.content.fields as { value: number; owner: string }; +} diff --git a/mover/yhfysun/code/task3/my_ntf/src/CreateCounter.tsx b/mover/yhfysun/code/task3/my_ntf/src/CreateCounter.tsx new file mode 100644 index 000000000..32d8aafa2 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/CreateCounter.tsx @@ -0,0 +1,60 @@ +import { Transaction } from "@mysten/sui/transactions"; +import { Button, Container } from "@radix-ui/themes"; +import { useSignAndExecuteTransaction, useSuiClient } from "@mysten/dapp-kit"; +import { useNetworkVariable } from "./networkConfig"; +import ClipLoader from "react-spinners/ClipLoader"; + +export function CreateCounter({ + onCreated, +}: { + onCreated: (id: string) => void; +}) { + const counterPackageId = useNetworkVariable("counterPackageId"); + const suiClient = useSuiClient(); + const { + mutate: signAndExecute, + isSuccess, + isPending, + } = useSignAndExecuteTransaction(); + + function create() { + const tx = new Transaction(); + + tx.moveCall({ + arguments: [], + target: `${counterPackageId}::counter::create`, + }); + + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: async ({ digest }) => { + const { effects } = await suiClient.waitForTransaction({ + digest: digest, + options: { + showEffects: true, + }, + }); + + onCreated(effects?.created?.[0]?.reference?.objectId!); + }, + }, + ); + } + + return ( + + + + ); +} diff --git a/mover/yhfysun/code/task3/my_ntf/src/constants.ts b/mover/yhfysun/code/task3/my_ntf/src/constants.ts new file mode 100644 index 000000000..0ffffc297 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/constants.ts @@ -0,0 +1,3 @@ +export const DEVNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const TESTNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const MAINNET_COUNTER_PACKAGE_ID = "0xTODO"; diff --git a/mover/yhfysun/code/task3/my_ntf/src/main.tsx b/mover/yhfysun/code/task3/my_ntf/src/main.tsx new file mode 100644 index 000000000..55f323a5d --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/main.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "@mysten/dapp-kit/dist/index.css"; +import "@radix-ui/themes/styles.css"; + +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Theme } from "@radix-ui/themes"; +import App from "./App.tsx"; +import { networkConfig } from "./networkConfig.ts"; + +const queryClient = new QueryClient(); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + + + + + + , +); diff --git a/mover/yhfysun/code/task3/my_ntf/src/networkConfig.ts b/mover/yhfysun/code/task3/my_ntf/src/networkConfig.ts new file mode 100644 index 000000000..7b6f8b73d --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/networkConfig.ts @@ -0,0 +1,31 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { + DEVNET_COUNTER_PACKAGE_ID, + TESTNET_COUNTER_PACKAGE_ID, + MAINNET_COUNTER_PACKAGE_ID, +} from "./constants.ts"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + variables: { + counterPackageId: DEVNET_COUNTER_PACKAGE_ID, + }, + }, + testnet: { + url: getFullnodeUrl("testnet"), + variables: { + counterPackageId: TESTNET_COUNTER_PACKAGE_ID, + }, + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + variables: { + counterPackageId: MAINNET_COUNTER_PACKAGE_ID, + }, + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/mover/yhfysun/code/task3/my_ntf/src/vite-env.d.ts b/mover/yhfysun/code/task3/my_ntf/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mover/yhfysun/code/task3/my_ntf/tsconfig.json b/mover/yhfysun/code/task3/my_ntf/tsconfig.json new file mode 100644 index 000000000..a7fc6fbf2 --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/mover/yhfysun/code/task3/my_ntf/tsconfig.node.json b/mover/yhfysun/code/task3/my_ntf/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/mover/yhfysun/code/task3/my_ntf/vite.config.ts b/mover/yhfysun/code/task3/my_ntf/vite.config.ts new file mode 100644 index 000000000..d366e8c8d --- /dev/null +++ b/mover/yhfysun/code/task3/my_ntf/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/mover/yhfysun/images/task3.png b/mover/yhfysun/images/task3.png new file mode 100644 index 000000000..fe4fa074c Binary files /dev/null and b/mover/yhfysun/images/task3.png differ diff --git a/mover/yhfysun/readme.md b/mover/yhfysun/readme.md index dbbca7126..4af58c6c8 100644 --- a/mover/yhfysun/readme.md +++ b/mover/yhfysun/readme.md @@ -26,10 +26,10 @@ - [] `Faucet Coin` address2 mint hash: ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [√] nft package id : 0x945f3d81a741514ef778effd6ad4b27b7527a5d814c809b3036a981ca03494a9 +- [√] nft object id : 0xcbcd5e636cae6126d23ec8f6b2ba6081fa0b277c1341908c53cfdcff03692efd +- [√] 转账 nft hash: D7PmSdRuwTvb8wrULoaFSTi46THXHUNEqSUsh91iBQF5 +- [√] scan上的NFT截图:![Scan截图](./images/task3.png) ## 04 Move Game - [] game package id : diff --git a/mover/yoona333/co-learn-2411/images/1.jpg b/mover/yoona333/co-learn-2411/images/1.jpg new file mode 100644 index 000000000..2bae97c6b Binary files /dev/null and b/mover/yoona333/co-learn-2411/images/1.jpg differ diff --git a/mover/yoona333/co-learn-2411/images/2.png b/mover/yoona333/co-learn-2411/images/2.png new file mode 100644 index 000000000..f62c8610f Binary files /dev/null and b/mover/yoona333/co-learn-2411/images/2.png differ diff --git a/mover/yoona333/co-learn-2411/images/3.png b/mover/yoona333/co-learn-2411/images/3.png new file mode 100644 index 000000000..1f849e1be Binary files /dev/null and b/mover/yoona333/co-learn-2411/images/3.png differ diff --git a/mover/yoona333/co-learn-2411/images/readme.md b/mover/yoona333/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/yoona333/co-learn-2411/project/readme.md b/mover/yoona333/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/yoona333/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/yoona333/co-learn-2411/readme.md b/mover/yoona333/co-learn-2411/readme.md new file mode 100644 index 000000000..49cb76570 --- /dev/null +++ b/mover/yoona333/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [√] b站,推特关注截图: ![关注截图](./images/3.png) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [√] 宣传截图:![宣传截图](./images/1.jpg) + +## 每周课程学习 + +- [√] 第一周:![学习记录截图](./images/2.png) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/yoona333/code/task1/hello_move/Move.toml b/mover/yoona333/code/task1/hello_move/Move.toml index d022a9699..1aa2e580d 100644 --- a/mover/yoona333/code/task1/hello_move/Move.toml +++ b/mover/yoona333/code/task1/hello_move/Move.toml @@ -33,4 +33,4 @@ hello_move = "0x0" [dev-addresses] # The dev-addresses section allows overwriting named addresses for the `--test` # and `--dev` modes. -# alice = "0xB0B" \ No newline at end of file +# alice = "0xB0B" diff --git a/mover/yoona333/code/task1/hello_move/sources/hello_move.move b/mover/yoona333/code/task1/hello_move/sources/hello_move.move index b1fc430e6..2ed11d167 100644 --- a/mover/yoona333/code/task1/hello_move/sources/hello_move.move +++ b/mover/yoona333/code/task1/hello_move/sources/hello_move.move @@ -16,4 +16,4 @@ module hello_move::hello { }; transfer(hello_move, sender(ctx)); } -} \ No newline at end of file +} diff --git a/mover/yoona333/code/task2/my_coin/Move.lock b/mover/yoona333/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..643d77404 --- /dev/null +++ b/mover/yoona333/code/task2/my_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0A4652D38CF3C3FDB79EC6C1C98FCFF7B2E933E12B84A1DA267DB28F66AFECE3" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.35.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x42d09c92dc048f5753f6c7960c8dbb92934dc7e69b4b59bbf89f4e2e0ad4525d" +latest-published-id = "0x42d09c92dc048f5753f6c7960c8dbb92934dc7e69b4b59bbf89f4e2e0ad4525d" +published-version = "1" diff --git a/mover/yoona333/code/task2/my_coin/Move.toml b/mover/yoona333/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/yoona333/code/task2/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/yoona333/code/task2/my_coin/sources/yoona333Coin.move b/mover/yoona333/code/task2/my_coin/sources/yoona333Coin.move new file mode 100644 index 000000000..4ec6a7413 --- /dev/null +++ b/mover/yoona333/code/task2/my_coin/sources/yoona333Coin.move @@ -0,0 +1,26 @@ +module my_coin::yoona333Coin{ //定义了yoona333Coin模块 + +//导入依赖 +use sui::coin::create_currency; +use std::option::{none,some}; +use sui::transfer::{ public_transfer,public_freeze_object}; +use sui::url::{Self,Url}; + +public struct YOONA333COIN has drop{} + +fun init(yoona333Coin:YOONA333COIN, ctx: &mut TxContext) { + + // let no = none(); + + let url = url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/167958904?v=4"); + let yes = some(url); + let (treasury,coin_metadata) = + create_currency(yoona333Coin,8,b"YOONA333COIN",b"YOONA333COIN",b"This is YOONA333COIN",yes,ctx); + + + public_freeze_object(coin_metadata); //冻结 coin_metadata 对象,使其不可再被修改。 + + public_transfer(treasury,ctx.sender()) //将 treasury 对象(初始代币)转移到当前交易的发送者地址。 + +} +} \ No newline at end of file diff --git a/mover/yoona333/code/task2/my_coin/sources/yoona333FaucetCoin.move b/mover/yoona333/code/task2/my_coin/sources/yoona333FaucetCoin.move new file mode 100644 index 000000000..744baddf5 --- /dev/null +++ b/mover/yoona333/code/task2/my_coin/sources/yoona333FaucetCoin.move @@ -0,0 +1,26 @@ +module my_coin::yoona333FaucetCoin{ //定义了yoona333Coin模块 + +//导入依赖 +use sui::coin::create_currency; +use std::option::{none,some}; +use sui::transfer::{public_share_object,public_freeze_object}; +use sui::url::{Self,Url}; + +public struct YOONA333FAUCETCOIN has drop{} + +fun init(yoona333FaucetCoin:YOONA333FAUCETCOIN, ctx: &mut TxContext) { + + // let no = none(); + + let url = url::new_unsafe_from_bytes(b"https://avatars.githubusercontent.com/u/167958904?v=4"); + let yes = some(url); + let (treasury,coin_metadata) = + create_currency(yoona333FaucetCoin,8,b"YOONA333FAUCETCOIN",b"YOONA333FAUCETCOIN",b"This is YOONA333FAUCETCOIN",yes,ctx); + + + public_freeze_object(coin_metadata); //冻结 coin_metadata 对象,使其不可再被修改。 + + public_share_object(treasury); //将 treasury 对象(初始代币)转移到当前交易的发送者地址。 + +} +} \ No newline at end of file diff --git a/mover/yoona333/code/task2/my_coin/tests/call.sh b/mover/yoona333/code/task2/my_coin/tests/call.sh new file mode 100644 index 000000000..2104bb811 --- /dev/null +++ b/mover/yoona333/code/task2/my_coin/tests/call.sh @@ -0,0 +1 @@ + sui client call --package 0x2 --module coin --function mint_and_transfer --type-args 0x42d09c92dc048f5753f6c7960c8dbb92934dc7e69b4b59bbf89f4e2e0ad4525d::yoona333Coin::YOONA333COIN --args 0xc546685f063fe21108b585fb6ba834d992134ca6456273664321d593ec7e679a 10000000000 0x7b8e0864967427679b4e129f79dc332a885c6087ec9e187b53451a9006ee15f2 \ No newline at end of file diff --git a/mover/yoona333/code/task2/my_coin/tests/my_coin_tests.move b/mover/yoona333/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/yoona333/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/yoona333/code/task3/my_nft/Move.lock b/mover/yoona333/code/task3/my_nft/Move.lock new file mode 100644 index 000000000..fb231d505 --- /dev/null +++ b/mover/yoona333/code/task3/my_nft/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "1C7E4E6784885553F41F77ACBDC5306913E332B17CDD69A828BE8590288858D2" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.35.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x9a88207e421473b8a6c0dc2b83a71a8dac8c8cb4783621d454bf3c67737b1d1c" +latest-published-id = "0x9a88207e421473b8a6c0dc2b83a71a8dac8c8cb4783621d454bf3c67737b1d1c" +published-version = "1" diff --git a/mover/yoona333/code/task3/my_nft/Move.toml b/mover/yoona333/code/task3/my_nft/Move.toml new file mode 100644 index 000000000..1f5914ca6 --- /dev/null +++ b/mover/yoona333/code/task3/my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/yoona333/code/task3/my_nft/sources/my_nft.move b/mover/yoona333/code/task3/my_nft/sources/my_nft.move new file mode 100644 index 000000000..b62942914 --- /dev/null +++ b/mover/yoona333/code/task3/my_nft/sources/my_nft.move @@ -0,0 +1,76 @@ +module my_nft::display_nft { + // 引入标准库和 Sui 框架中的模块 + use std::string; // 提供字符串相关功能 + use std::string::{utf8, String}; // 提供 utf8 转换和 String 类型 + use sui::tx_context::{sender}; // 获取交易的发送者 + use sui::package; // 提供对象声明相关功能 + use sui::display; // 提供对象展示功能 + + // 定义一个具有 key 和 store 能力的结构体,用于表示 NFT + public struct MyNFT has key, store { + id: UID, // 唯一标识符,标记 NFT 对象 + name: String, // NFT 的名称 + image_url: String, // NFT 的图片 URL + } + + // 定义一个仅具有 drop 能力的空结构体,用于初始化 NFT 展示信息 + public struct DISPLAY_NFT has drop {} + + // 初始化函数,用于设置 NFT 的展示属性 + fun init(otw: DISPLAY_NFT, ctx: &mut TxContext) { + // 定义展示信息的键(字段名) + let keys = vector[ + utf8(b"name"), // 名称字段 + utf8(b"link"), // 详情链接字段 + utf8(b"image_url"), // 图片链接字段 + utf8(b"description"), // 描述字段 + utf8(b"project_url"), // 项目链接字段 + utf8(b"creator"), // 创建者字段 + ]; + + // 定义展示信息的值(字段内容) + let values = vector[ + utf8(b"{name}"), // NFT 的名称占位符 + utf8(b"https://sui-heroes.io/hero/{id}"), // NFT 详情链接 + utf8(b"{image_url}"), // 图片链接占位符 + utf8(b"A true Hero of the Sui ecosystem!"), // 描述信息 + utf8(b"https://sui-heroes.io"), // 项目官网 + utf8(b"Unknown Sui Fan"), // 创建者信息 + ]; + + // 声明一个包对象,用于发布展示数据 + let publisher = package::claim(otw, ctx); + + // 创建并初始化展示信息对象 + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // 更新展示对象的版本信息 + display::update_version(&mut display); + + // 将发布者和展示对象转移到交易发送者名下 + transfer::public_transfer(publisher, sender(ctx)); + transfer::public_transfer(display, sender(ctx)); + + // 创建一个 MyNFT 对象,表示 NFT + let nft = MyNFT { + id: object::new(ctx), // 创建 NFT 的唯一 ID + name: string::utf8(b"yoona333 display nft"), // 设置 NFT 名称 + image_url: string::utf8(b"https://avatars.githubusercontent.com/u/167958904?v=4"), // 设置图片 URL + }; + + // 将 NFT 对象转移到交易发送者名下 + transfer::public_transfer(nft, sender(ctx)); + } + + // 铸造 NFT 的入口函数 + public entry fun mint(name: String, image_url: String, ctx: &mut TxContext) { + // 创建新的唯一 ID + let id = object::new(ctx); + // 初始化 MyNFT 对象 + let nft = MyNFT { id, name, image_url }; + // 将 NFT 对象转移到交易发送者名下 + transfer::public_transfer(nft, sender(ctx)); + } +} diff --git a/mover/yoona333/code/task3/my_nft/tests/my_nft_tests.move b/mover/yoona333/code/task3/my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/yoona333/code/task3/my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/yoona333/images/3.png b/mover/yoona333/images/3.png new file mode 100644 index 000000000..0fb48c191 Binary files /dev/null and b/mover/yoona333/images/3.png differ diff --git a/mover/yoona333/readme.md b/mover/yoona333/readme.md index 9eefd7c81..ae1f37f73 100644 --- a/mover/yoona333/readme.md +++ b/mover/yoona333/readme.md @@ -13,23 +13,23 @@ ## 任务 ## 01 hello move s -- [] Sui cli version:sui 1.35.2-4e46da89efd5 -- [] Sui钱包截图: ![Sui钱包截图](./images/1.png) -- [] package id: 0xb19a851fdb7d882561515669d733056c7f29a31ce27b005fe460b82aa123a6e9 -- [] package id 在 scan上的查看截图:![Scan截图](./images/2.png) +- [x] Sui cli version:sui 1.35.2-4e46da89efd5 +- [x] Sui钱包截图: ![Sui钱包截图](./images/1.png) +- [x] package id: 0xb19a851fdb7d882561515669d733056c7f29a31ce27b005fe460b82aa123a6e9 +- [x] package id 在 scan上的查看截图:![Scan截图](./images/2.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : `0x42d09c92dc048f5753f6c7960c8dbb92934dc7e69b4b59bbf89f4e2e0ad4525d` +- [x] Faucet package id : `0x42d09c92dc048f5753f6c7960c8dbb92934dc7e69b4b59bbf89f4e2e0ad4525d` +- [x] 转账 `My Coin` hash: `4g7MaYruPQxsGvMTfVx36nxeNPJJwxHR2jXNkJDXVJjw` +- [x] `Faucet Coin` address1 mint hash:`CoTU33nN3XGjDyVn3KeCtdcE6xYu9JCrkkSpJtpHvTJZ` +- [x] `Faucet Coin` address2 mint hash:`734tBAzvZANFsJrhFv5aUgE57YaM6ZhAhwBwy4Tou19m` ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :`0x9a88207e421473b8a6c0dc2b83a71a8dac8c8cb4783621d454bf3c67737b1d1c` +- [x] nft object id : `0xb8efb78f4f4f3df93ed8940777bb814312b049e6ff0e5a03bbd34e3763251bff` +- [x] 转账 nft hash: `CT4wfdfoNTHmwtKy5yXZRLzzkmtrU512GbHP2JJ4Stma` +- [x] scan上的NFT截图:![Scan截图](./images/3.png) ## 04 Move Game - [] game package id : diff --git a/mover/yuanchengjiayu/code/task5/swap/Move.lock b/mover/yuanchengjiayu/code/task5/swap/Move.lock new file mode 100644 index 000000000..f5b9645f2 --- /dev/null +++ b/mover/yuanchengjiayu/code/task5/swap/Move.lock @@ -0,0 +1,52 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0D42FFB9EAEEAA0EC330F154C821489B66264B72A4AAE069098D5279574CCD3D" +deps_digest = "060AD7E57DFB13104F21BE5F5C3759D03F0553FC3229247D9A7A6B45F50D03A3" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "movecoin", name = "movecoin" }, + { id = "movefaucetcoin", name = "movefaucetcoin" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "movecoin" +source = { local = "..\\..\\task2\\movecoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "movefaucetcoin" +source = { local = "..\\..\\task2\\movefaucetcoin" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0x923395a4a920290c69f4802b9ecc60f2ab8fc58cd94727fe2d85ef22140533f5" +latest-published-id = "0x923395a4a920290c69f4802b9ecc60f2ab8fc58cd94727fe2d85ef22140533f5" +published-version = "1" diff --git a/mover/yuanchengjiayu/code/task5/swap/Move.toml b/mover/yuanchengjiayu/code/task5/swap/Move.toml new file mode 100644 index 000000000..b9ae6e720 --- /dev/null +++ b/mover/yuanchengjiayu/code/task5/swap/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "swap" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } +movecoin = { local = "../../task2/movecoin" } +movefaucetcoin = { local = "../../task2/movefaucetcoin" } +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +swap = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/yuanchengjiayu/code/task5/swap/sources/swap.move b/mover/yuanchengjiayu/code/task5/swap/sources/swap.move new file mode 100644 index 000000000..6a568caa8 --- /dev/null +++ b/mover/yuanchengjiayu/code/task5/swap/sources/swap.move @@ -0,0 +1,72 @@ +module swap::swap; + use movecoin::movecoin::{ MOVECOIN }; + use movefaucetcoin::movefaucetcoin::{ MOVEFAUCETCOIN }; + use sui::balance::{ Self, Balance }; + use sui::transfer::{ transfer, share_object, public_transfer }; + use sui::coin::{ Self, Coin }; + + public struct AdminCap has key { + id: UID + } + + public struct Bank has key { + id: UID, + movecoin: Balance, + movefaucetcoin: Balance, + } + + fun init(ctx: &mut TxContext) { + let bank = Bank { + id: object::new(ctx), + movecoin: balance::zero(), + movefaucetcoin: balance::zero(), + }; + share_object(bank); + + let admin_cap = AdminCap { + id: object::new(ctx), + }; + transfer(admin_cap, ctx.sender()); + } + + public entry fun deposit_movecoin(bank: &mut Bank, movecoin: Coin) { + let movecoin_balance = coin::into_balance(movecoin); + balance::join(&mut bank.movecoin, movecoin_balance); + } + + public entry fun deposit_movefaucetcoin(bank: &mut Bank, movefaucetcoin: Coin) { + let movefaucetcoin_balance = coin::into_balance(movefaucetcoin); + balance::join(&mut bank.movefaucetcoin, movefaucetcoin_balance); + } + + public entry fun withdraw_movecoin(bank: &mut Bank, amount: u64, ctx: &mut TxContext) { + let movecoin_balance = balance::split(&mut bank.movecoin, amount); + let movecoin = coin::from_balance(movecoin_balance, ctx); + public_transfer(movecoin, ctx.sender()); + } + + public entry fun withdraw_movefaucetcoin(bank: &mut Bank, amount: u64, ctx: &mut TxContext) { + let movefaucetcoin_balance = balance::split(&mut bank.movefaucetcoin, amount); + let movefaucetcoin = coin::from_balance(movefaucetcoin_balance, ctx); + public_transfer(movefaucetcoin, ctx.sender()); + } + + public entry fun swap_movecoin_to_movefaucetcoin(bank: &mut Bank, movecoin: Coin, ctx: &mut TxContext) { + let amount = coin::value(&movecoin); + balance::join(&mut bank.movecoin, coin::into_balance(movecoin)); + + let amount_end = amount * 2; + let movefaucetcoin_balance = balance::split(&mut bank.movefaucetcoin, amount_end); + let movefaucetcoin = coin::from_balance(movefaucetcoin_balance, ctx); + public_transfer(movefaucetcoin, ctx.sender()); + } + + public entry fun swap_movefaucetcoin_to_movecoin(bank: &mut Bank, movefaucetcoin: Coin, ctx: &mut TxContext) { + let amount = coin::value(&movefaucetcoin); + balance::join(&mut bank.movefaucetcoin, coin::into_balance(movefaucetcoin)); + + let amount_end = amount / 2; + let movecoin_balance = balance::split(&mut bank.movecoin, amount_end); + let movecoin = coin::from_balance(movecoin_balance, ctx); + public_transfer(movecoin, ctx.sender()); + } \ No newline at end of file diff --git a/mover/yuanchengjiayu/code/task5/swap/tests/swap_tests.move b/mover/yuanchengjiayu/code/task5/swap/tests/swap_tests.move new file mode 100644 index 000000000..81f52899c --- /dev/null +++ b/mover/yuanchengjiayu/code/task5/swap/tests/swap_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module swap::swap_tests; +// uncomment this line to import the module +// use swap::swap; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_swap() { + // pass +} + +#[test, expected_failure(abort_code = ::swap::swap_tests::ENotImplemented)] +fun test_swap_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/README.md b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/README.md new file mode 100644 index 000000000..1d2e227fb --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/README.md @@ -0,0 +1,102 @@ +# Sui dApp Starter Template + +This dApp was created using `@mysten/create-dapp` that sets up a basic React +Client dApp using the following tools: + +- [React](https://react.dev/) as the UI framework +- [TypeScript](https://www.typescriptlang.org/) for type checking +- [Vite](https://vitejs.dev/) for build tooling +- [Radix UI](https://www.radix-ui.com/) for pre-built UI components +- [ESLint](https://eslint.org/) for linting +- [`@mysten/dapp-kit`](https://sdk.mystenlabs.com/dapp-kit) for connecting to + wallets and loading data +- [pnpm](https://pnpm.io/) for package management + +For a full guide on how to build this dApp from scratch, visit this +[guide](http://docs.sui.io/guides/developer/app-examples/e2e-counter#frontend). + +## Deploying your Move code + +### Install Sui cli + +Before deploying your move code, ensure that you have installed the Sui CLI. You +can follow the [Sui installation instruction](https://docs.sui.io/build/install) +to get everything set up. + +This template uses `testnet` by default, so we'll need to set up a testnet +environment in the CLI: + +```bash +sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443 +sui client switch --env testnet +``` + +If you haven't set up an address in the sui client yet, you can use the +following command to get a new address: + +```bash +sui client new-address secp256k1 +``` + +This well generate a new address and recover phrase for you. You can mark a +newly created address as you active address by running the following command +with your new address: + +```bash +sui client switch --address 0xYOUR_ADDRESS... +``` + +We can ensure we have some Sui in our new wallet by requesting Sui from the +faucet (make sure to replace the address with your address): + +```bash +curl --location --request POST 'https://faucet.testnet.sui.io/gas' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "FixedAmountRequest": { + "recipient": "" + } +}' +``` + +### Publishing the move package + +The move code for this template is located in the `move` directory. To publish +it, you can enter the `move` directory, and publish it with the Sui CLI: + +```bash +cd move +sui client publish --gas-budget 100000000 counter +``` + +In the output there will be an object with a `"packageId"` property. You'll want +to save that package ID to the `src/constants.ts` file as `PACKAGE_ID`: + +```ts +export const TESTNET_COUNTER_PACKAGE_ID = ""; +``` + +Now that we have published the move code, and update the package ID, we can +start the app. + +## Starting your dApp + +To install dependencies you can run + +```bash +pnpm install +``` + +To start your dApp in development mode run + +```bash +pnpm dev +``` + +## Building + +To build your app for deployment you can run + +```bash +pnpm build +``` diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/index.html b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/index.html new file mode 100644 index 000000000..bb7f75b16 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/index.html @@ -0,0 +1,59 @@ + + + + + + + Sui dApp Starter + + + + +
+ + + diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/Move.lock b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/Move.lock new file mode 100644 index 000000000..ee3af25f5 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "3700BE3663FD5EAE7AF34BC8B36CFF2AA9C8D280DDEE9324B30BE9F9BFDDD64D" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.36.2" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.devnet] +chain-id = "0fc07bbe" +original-published-id = "0x629948573f268895dedf2ed9a5a1b281e0dccceaeed437db9aad82cfb79758e7" +latest-published-id = "0x629948573f268895dedf2ed9a5a1b281e0dccceaeed437db9aad82cfb79758e7" +published-version = "1" diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/Move.toml b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/Move.toml new file mode 100644 index 000000000..94e850382 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/Move.toml @@ -0,0 +1,10 @@ +[package] +name = "counter" +version = "0.0.1" +edition = "2024.beta" + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +[addresses] +counter = "0x0" diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/sources/counter.move b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/sources/counter.move new file mode 100644 index 000000000..56e4939ad --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/move/counter/sources/counter.move @@ -0,0 +1,36 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// This example demonstrates a basic use of a shared object. +/// Rules: +/// - anyone can create and share a counter +/// - everyone can increment a counter by 1 +/// - the owner of the counter can reset it to any value +module counter::counter { + /// A shared counter. + public struct Counter has key { + id: UID, + owner: address, + value: u64 + } + + /// Create and share a Counter object. + public fun create(ctx: &mut TxContext) { + transfer::share_object(Counter { + id: object::new(ctx), + owner: ctx.sender(), + value: 0 + }) + } + + /// Increment a counter by 1. + public fun increment(counter: &mut Counter) { + counter.value = counter.value + 1; + } + + /// Set value (only runnable by the Counter owner) + public fun set_value(counter: &mut Counter, value: u64, ctx: &TxContext) { + assert!(counter.owner == ctx.sender(), 0); + counter.value = value; + } +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/package-lock.json b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/package-lock.json new file mode 100644 index 000000000..f523d9a10 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/package-lock.json @@ -0,0 +1,6270 @@ +{ + "name": "my-first-sui-dapp", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "my-first-sui-dapp", + "version": "0.0.0", + "dependencies": { + "@mysten/dapp-kit": "0.14.33", + "@mysten/sui": "1.14.3", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "bundler": "^0.8.0", + "navi-sdk": "^1.4.3", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-spinners": "^0.14.1" + }, + "devDependencies": { + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^8.45.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@0no-co/graphql.web/-/graphql.web-1.0.11.tgz", + "integrity": "sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.16", + "resolved": "https://registry.npmmirror.com/@0no-co/graphqlsp/-/graphqlsp-1.12.16.tgz", + "integrity": "sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@digitak/grubber": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/@digitak/grubber/-/grubber-3.1.4.tgz", + "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==" + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/@gql.tada/cli-utils/-/cli-utils-1.6.3.tgz", + "integrity": "sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmmirror.com/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@mysten/bcs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@mysten/bcs/-/bcs-1.1.0.tgz", + "integrity": "sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==", + "dependencies": { + "bs58": "^6.0.0" + } + }, + "node_modules/@mysten/dapp-kit": { + "version": "0.14.33", + "resolved": "https://registry.npmmirror.com/@mysten/dapp-kit/-/dapp-kit-0.14.33.tgz", + "integrity": "sha512-R4gNlfumXuSZb2d8/3StUPaIu+nXmi+KDX507tE8+CD5mric4b6yr6vkTd3zkwsRqnvKHrvu4v6keXK+I6Wdvg==", + "dependencies": { + "@mysten/sui": "1.14.3", + "@mysten/wallet-standard": "0.13.12", + "@mysten/zksend": "0.12.1", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-slot": "^1.1.0", + "@vanilla-extract/css": "^1.15.3", + "@vanilla-extract/dynamic": "^2.1.1", + "@vanilla-extract/recipes": "^0.5.3", + "clsx": "^2.1.1", + "zustand": "^4.5.4" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.0.0", + "react": "*" + } + }, + "node_modules/@mysten/sui": { + "version": "1.14.3", + "resolved": "https://registry.npmmirror.com/@mysten/sui/-/sui-1.14.3.tgz", + "integrity": "sha512-5vhOnbSAT/9daMIDPYOp7q9j+6DXqjPAYEJy7ZbR9viBsyAx4UMChCwaLyjoYcJKvhrkDn4LTdDTJEUvpj7TTg==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "1.1.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@scure/bip32": "^1.4.0", + "@scure/bip39": "^1.3.0", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.8.2", + "graphql": "^16.9.0", + "tweetnacl": "^1.0.3", + "valibot": "^0.36.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mysten/sui.js": { + "version": "0.54.1", + "resolved": "https://registry.npmmirror.com/@mysten/sui.js/-/sui.js-0.54.1.tgz", + "integrity": "sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==", + "deprecated": "This package has been renamed to @mysten/sui, please update to use the renamed package.", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.7.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@mysten/sui.js/node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@mysten/sui.js/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@mysten/sui.js/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@mysten/wallet-standard": { + "version": "0.13.12", + "resolved": "https://registry.npmmirror.com/@mysten/wallet-standard/-/wallet-standard-0.13.12.tgz", + "integrity": "sha512-qFNtgi85Ja4F1dY8MyLIQ+uxzhru+h6TQ6VG2N2AnTutCiFvaQeu2S/akFYeJMfZ0CN/m0v3TNQZN5cxtrLEeg==", + "dependencies": { + "@mysten/sui": "1.14.3", + "@wallet-standard/core": "1.0.3" + } + }, + "node_modules/@mysten/zksend": { + "version": "0.12.1", + "resolved": "https://registry.npmmirror.com/@mysten/zksend/-/zksend-0.12.1.tgz", + "integrity": "sha512-fccvdpK8tRJxIeThqAzmPl/fnVzoklsKp3L/s9AcKXNdCEoABxuix15ttu4haZgEEuXdEcH2El0nlZ9/PTSXKA==", + "dependencies": { + "@mysten/sui": "1.14.3", + "@mysten/wallet-standard": "0.13.12", + "mitt": "^3.0.1", + "nanostores": "^0.10.3", + "valibot": "^0.36.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pythnetwork/price-service-client": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz", + "integrity": "sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==", + "deprecated": "This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead.", + "dependencies": { + "@pythnetwork/price-service-sdk": "*", + "@types/ws": "^8.5.3", + "axios": "^1.5.1", + "axios-retry": "^3.8.0", + "isomorphic-ws": "^4.0.1", + "ts-log": "^2.2.4", + "ws": "^8.6.0" + } + }, + "node_modules/@pythnetwork/price-service-sdk": { + "version": "1.7.1", + "resolved": "https://registry.npmmirror.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz", + "integrity": "sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==", + "dependencies": { + "bn.js": "^5.2.1" + } + }, + "node_modules/@pythnetwork/pyth-sui-js": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@pythnetwork/pyth-sui-js/-/pyth-sui-js-2.1.0.tgz", + "integrity": "sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==", + "dependencies": { + "@mysten/sui": "^1.3.0", + "@pythnetwork/price-service-client": "1.9.0", + "buffer": "^6.0.3" + } + }, + "node_modules/@radix-ui/colors": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/colors/-/colors-3.0.0.tgz", + "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==" + }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.0.tgz", + "integrity": "sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==", + "dependencies": { + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.2.tgz", + "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dialog": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", + "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", + "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", + "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz", + "integrity": "sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.2.tgz", + "integrity": "sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", + "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz", + "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popover/-/react-popover-1.1.2.tgz", + "integrity": "sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-progress/-/react-progress-1.1.0.tgz", + "integrity": "sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==", + "dependencies": { + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", + "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.1.tgz", + "integrity": "sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slider/-/react-slider-1.2.1.tgz", + "integrity": "sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", + "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", + "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", + "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", + "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-toggle": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", + "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" + }, + "node_modules/@radix-ui/themes": { + "version": "3.1.6", + "resolved": "https://registry.npmmirror.com/@radix-ui/themes/-/themes-3.1.6.tgz", + "integrity": "sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==", + "dependencies": { + "@radix-ui/colors": "^3.0.0", + "@radix-ui/primitive": "^1.1.0", + "@radix-ui/react-accessible-icon": "^1.1.0", + "@radix-ui/react-alert-dialog": "^1.1.2", + "@radix-ui/react-aspect-ratio": "^1.1.0", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-compose-refs": "^1.1.0", + "@radix-ui/react-context": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.2", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-direction": "^1.1.0", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-hover-card": "^1.1.2", + "@radix-ui/react-navigation-menu": "^1.2.1", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-portal": "^1.1.2", + "@radix-ui/react-primitive": "^2.0.0", + "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-radio-group": "^1.2.1", + "@radix-ui/react-roving-focus": "^1.1.0", + "@radix-ui/react-scroll-area": "^1.2.1", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-slider": "^1.2.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.1", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-toggle-group": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.4", + "@radix-ui/react-use-callback-ref": "^1.1.0", + "@radix-ui/react-use-controllable-state": "^1.1.0", + "@radix-ui/react-visually-hidden": "^1.1.0", + "classnames": "^2.3.2", + "react-remove-scroll-bar": "^2.3.6" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", + "integrity": "sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.3.tgz", + "integrity": "sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.3.tgz", + "integrity": "sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.3.tgz", + "integrity": "sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.3.tgz", + "integrity": "sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.3.tgz", + "integrity": "sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.3.tgz", + "integrity": "sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.3.tgz", + "integrity": "sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.3.tgz", + "integrity": "sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.3.tgz", + "integrity": "sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.3.tgz", + "integrity": "sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.3.tgz", + "integrity": "sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.3.tgz", + "integrity": "sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.3.tgz", + "integrity": "sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.3.tgz", + "integrity": "sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.3.tgz", + "integrity": "sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.3.tgz", + "integrity": "sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.3.tgz", + "integrity": "sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" + }, + "node_modules/@swc/core": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.9.2.tgz", + "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.15" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.9.2", + "@swc/core-darwin-x64": "1.9.2", + "@swc/core-linux-arm-gnueabihf": "1.9.2", + "@swc/core-linux-arm64-gnu": "1.9.2", + "@swc/core-linux-arm64-musl": "1.9.2", + "@swc/core-linux-x64-gnu": "1.9.2", + "@swc/core-linux-x64-musl": "1.9.2", + "@swc/core-win32-arm64-msvc": "1.9.2", + "@swc/core-win32-ia32-msvc": "1.9.2", + "@swc/core-win32-x64-msvc": "1.9.2" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz", + "integrity": "sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.15.tgz", + "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==", + "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.60.6", + "resolved": "https://registry.npmmirror.com/@tanstack/query-core/-/query-core-5.60.6.tgz", + "integrity": "sha512-tI+k0KyCo1EBJ54vxK1kY24LWj673ujTydCZmzEZKAew4NqZzTaVQJEuaG1qKj2M03kUHN46rchLRd+TxVq/zQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.60.6", + "resolved": "https://registry.npmmirror.com/@tanstack/react-query/-/react-query-5.60.6.tgz", + "integrity": "sha512-FUzSDaiPkuZCmuGqrixfRRXJV9u+nrUh9lAlA5Q3ZFrOw1Js1VeBfxi1NIcJO3ZWJdKceBqKeBJdNcWStCYZnw==", + "dependencies": { + "@tanstack/query-core": "5.60.6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.9.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.9.1.tgz", + "integrity": "sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==", + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==" + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.13", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vanilla-extract/css": { + "version": "1.16.0", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/css/-/css-1.16.0.tgz", + "integrity": "sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@vanilla-extract/private": "^1.0.6", + "css-what": "^6.1.0", + "cssesc": "^3.0.0", + "csstype": "^3.0.7", + "dedent": "^1.5.3", + "deep-object-diff": "^1.1.9", + "deepmerge": "^4.2.2", + "lru-cache": "^10.4.3", + "media-query-parser": "^2.0.2", + "modern-ahocorasick": "^1.0.0", + "picocolors": "^1.0.0" + } + }, + "node_modules/@vanilla-extract/dynamic": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/dynamic/-/dynamic-2.1.2.tgz", + "integrity": "sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==", + "dependencies": { + "@vanilla-extract/private": "^1.0.6" + } + }, + "node_modules/@vanilla-extract/private": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/private/-/private-1.0.6.tgz", + "integrity": "sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==" + }, + "node_modules/@vanilla-extract/recipes": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/@vanilla-extract/recipes/-/recipes-0.5.5.tgz", + "integrity": "sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==", + "peerDependencies": { + "@vanilla-extract/css": "^1.0.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", + "integrity": "sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==", + "dev": true, + "dependencies": { + "@swc/core": "^1.7.26" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "dependencies": { + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dependencies": { + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@wallet-standard/app": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/app/-/app-1.1.0.tgz", + "integrity": "sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/base": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/base/-/base-1.1.0.tgz", + "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/core": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@wallet-standard/core/-/core-1.0.3.tgz", + "integrity": "sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==", + "dependencies": { + "@wallet-standard/app": "^1.0.1", + "@wallet-standard/base": "^1.0.1", + "@wallet-standard/features": "^1.0.3", + "@wallet-standard/wallet": "^1.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/features": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/features/-/features-1.1.0.tgz", + "integrity": "sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/wallet": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/@wallet-standard/wallet/-/wallet-1.1.0.tgz", + "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-retry": { + "version": "3.9.1", + "resolved": "https://registry.npmmirror.com/axios-retry/-/axios-retry-3.9.1.tgz", + "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bundler": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/bundler/-/bundler-0.8.0.tgz", + "integrity": "sha512-vHl3CsqgXtfJnEe61oOYRoevN0Tl3P/Z6e6Z9Sr3xif8oaV6L4bV7m4cYCiOWT1oPvOyl3j9Lten4/GrIeIupA==", + "engines": [ + "node ~0.4.0" + ], + "dependencies": { + "coa": ">= 0.1.1" + }, + "bin": { + "bundler": "bin/bundler" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/coa/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/coa/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deep-object-diff": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.14", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", + "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrun": { + "version": "3.2.26", + "resolved": "https://registry.npmmirror.com/esrun/-/esrun-3.2.26.tgz", + "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "dependencies": { + "@digitak/grubber": "^3.1.4", + "chokidar": "^3.5.1", + "esbuild": "^0.17.4" + }, + "bin": { + "esrun": "bin.js" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/esrun/node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esrun/node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "engines": { + "node": "*" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gql.tada": { + "version": "1.8.10", + "resolved": "https://registry.npmmirror.com/gql.tada/-/gql.tada-1.8.10.tgz", + "integrity": "sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.3", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmmirror.com/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/magic-string": { + "version": "0.30.13", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.13.tgz", + "integrity": "sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/media-query-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/media-query-parser/-/media-query-parser-2.0.2.tgz", + "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==", + "dependencies": { + "@babel/runtime": "^7.12.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mlly": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.3.tgz", + "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^1.1.2", + "pkg-types": "^1.2.1", + "ufo": "^1.5.4" + } + }, + "node_modules/modern-ahocorasick": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz", + "integrity": "sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanostores": { + "version": "0.10.3", + "resolved": "https://registry.npmmirror.com/nanostores/-/nanostores-0.10.3.tgz", + "integrity": "sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/navi-sdk": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/navi-sdk/-/navi-sdk-1.4.3.tgz", + "integrity": "sha512-ZFOpoP4wOLwJGpX00i7sKoBMl4P62KzaKEXS6/goRHVxs7+0RE1t2gDk35ZFyU3V4cmd4yvNW+zbSL3p7OTvhQ==", + "dependencies": { + "@mysten/sui": "^1.14.3", + "@mysten/sui.js": "^0.54.1", + "@pythnetwork/pyth-sui-js": "^2.1.0", + "axios": "^1.7.7", + "esrun": "^3.2.26", + "navi-sdk": "^1.3.10", + "tsconfig-paths": "^4.2.0", + "vitest": "^1.6.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.2.1.tgz", + "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.2", + "pathe": "^1.1.2" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmmirror.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-spinners": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/react-spinners/-/react-spinners-0.14.1.tgz", + "integrity": "sha512-2Izq+qgQ08HTofCVEdcAQCXFEYfqTDdfeDQJeo/HHQiQJD4imOicNLhkfN2eh1NYEWVOX4D9ok2lhuDB0z3Aag==", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.27.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.27.3.tgz", + "integrity": "sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.27.3", + "@rollup/rollup-android-arm64": "4.27.3", + "@rollup/rollup-darwin-arm64": "4.27.3", + "@rollup/rollup-darwin-x64": "4.27.3", + "@rollup/rollup-freebsd-arm64": "4.27.3", + "@rollup/rollup-freebsd-x64": "4.27.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.27.3", + "@rollup/rollup-linux-arm-musleabihf": "4.27.3", + "@rollup/rollup-linux-arm64-gnu": "4.27.3", + "@rollup/rollup-linux-arm64-musl": "4.27.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.27.3", + "@rollup/rollup-linux-riscv64-gnu": "4.27.3", + "@rollup/rollup-linux-s390x-gnu": "4.27.3", + "@rollup/rollup-linux-x64-gnu": "4.27.3", + "@rollup/rollup-linux-x64-musl": "4.27.3", + "@rollup/rollup-win32-arm64-msvc": "4.27.3", + "@rollup/rollup-win32-ia32-msvc": "4.27.3", + "@rollup/rollup-win32-x64-msvc": "4.27.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" + }, + "node_modules/std-env": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dependencies": { + "js-tokens": "^9.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" + }, + "node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-log": { + "version": "2.2.7", + "resolved": "https://registry.npmmirror.com/ts-log/-/ts-log-2.2.7.tgz", + "integrity": "sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==" + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/valibot": { + "version": "0.36.0", + "resolved": "https://registry.npmmirror.com/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==" + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "dependencies": { + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.5", + "resolved": "https://registry.npmmirror.com/zustand/-/zustand-4.5.5.tgz", + "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==", + "dependencies": { + "use-sync-external-store": "1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/package.json b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/package.json new file mode 100644 index 000000000..301e6e747 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/package.json @@ -0,0 +1,38 @@ +{ + "name": "my-first-sui-dapp", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@mysten/dapp-kit": "0.14.33", + "@mysten/sui": "1.14.3", + "@radix-ui/colors": "^3.0.0", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/themes": "^3.1.1", + "@tanstack/react-query": "^5.50.1", + "bundler": "^0.8.0", + "navi-sdk": "^1.4.3", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-spinners": "^0.14.1" + }, + "devDependencies": { + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", + "@vitejs/plugin-react-swc": "^3.7.0", + "eslint": "^8.45.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "prettier": "^3.3.2", + "typescript": "^5.5.3", + "vite": "^5.3.3" + } +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/pnpm-lock.yaml b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/pnpm-lock.yaml new file mode 100644 index 000000000..414531576 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/pnpm-lock.yaml @@ -0,0 +1,3699 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@mysten/dapp-kit': + specifier: 0.14.33 + version: 0.14.33(@tanstack/react-query@5.60.5(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + '@mysten/sui': + specifier: 1.14.3 + version: 1.14.3(typescript@5.6.3) + '@radix-ui/colors': + specifier: ^3.0.0 + version: 3.0.0 + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.2(react@18.3.1) + '@radix-ui/themes': + specifier: ^3.1.1 + version: 3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.50.1 + version: 5.60.5(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-spinners: + specifier: ^0.14.1 + version: 0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@types/react': + specifier: ^18.3.3 + version: 18.3.12 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.1 + '@typescript-eslint/eslint-plugin': + specifier: ^6.1.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^6.1.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.1(vite@5.4.11) + eslint: + specifier: ^8.45.0 + version: 8.57.1 + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.1) + eslint-plugin-react-refresh: + specifier: ^0.4.7 + version: 0.4.14(eslint@8.57.1) + prettier: + specifier: ^3.3.2 + version: 3.3.3 + typescript: + specifier: ^5.5.3 + version: 5.6.3 + vite: + specifier: ^5.3.3 + version: 5.4.11 + +packages: + + '@0no-co/graphql.web@1.0.11': + resolution: {integrity: sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.12.16': + resolution: {integrity: sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@gql.tada/cli-utils@1.6.3': + resolution: {integrity: sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@mysten/bcs@1.1.0': + resolution: {integrity: sha512-yy9/1Y4d0FlRywS1+9ze/T7refCbrvwFwJIOKs9M3QBK1njbcHZp+LkVeLqBvIJA5eZ3ZCzmhQ1Xq4Sed5mEBA==} + + '@mysten/dapp-kit@0.14.33': + resolution: {integrity: sha512-R4gNlfumXuSZb2d8/3StUPaIu+nXmi+KDX507tE8+CD5mric4b6yr6vkTd3zkwsRqnvKHrvu4v6keXK+I6Wdvg==} + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: '*' + + '@mysten/sui@1.14.3': + resolution: {integrity: sha512-5vhOnbSAT/9daMIDPYOp7q9j+6DXqjPAYEJy7ZbR9viBsyAx4UMChCwaLyjoYcJKvhrkDn4LTdDTJEUvpj7TTg==} + engines: {node: '>=18'} + + '@mysten/wallet-standard@0.13.12': + resolution: {integrity: sha512-qFNtgi85Ja4F1dY8MyLIQ+uxzhru+h6TQ6VG2N2AnTutCiFvaQeu2S/akFYeJMfZ0CN/m0v3TNQZN5cxtrLEeg==} + + '@mysten/zksend@0.12.1': + resolution: {integrity: sha512-fccvdpK8tRJxIeThqAzmPl/fnVzoklsKp3L/s9AcKXNdCEoABxuix15ttu4haZgEEuXdEcH2El0nlZ9/PTSXKA==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/number@1.1.0': + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-accessible-icon@1.1.0': + resolution: {integrity: sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.2': + resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.0': + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.0': + resolution: {integrity: sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.1': + resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.1.2': + resolution: {integrity: sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.2': + resolution: {integrity: sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.2': + resolution: {integrity: sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.1': + resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.2': + resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.2': + resolution: {integrity: sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.2': + resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.1': + resolution: {integrity: sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.2': + resolution: {integrity: sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.0': + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.2': + resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.1': + resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.0': + resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.2.1': + resolution: {integrity: sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.0': + resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.1': + resolution: {integrity: sha512-FnM1fHfCtEZ1JkyfH/1oMiTcFBQvHKl4vD9WnpwkLgtF+UmnXMCad6ECPTaAjcDjam+ndOEJWgHyKDGNteWSHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.1.2': + resolution: {integrity: sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.2.1': + resolution: {integrity: sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.1': + resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.1': + resolution: {integrity: sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.0': + resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.0': + resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.1.4': + resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@radix-ui/themes@3.1.6': + resolution: {integrity: sha512-4uaUK0E+3ZRURohKNqnzG8LciTJcpppuBbYxkp7miLyPiaXBwKTrEttdQpExsp/fP6J+ss+JHy5FJhU5lboQkg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@rollup/rollup-android-arm-eabi@4.27.2': + resolution: {integrity: sha512-Tj+j7Pyzd15wAdSJswvs5CJzJNV+qqSUcr/aCD+jpQSBtXvGnV0pnrjoc8zFTe9fcKCatkpFpOO7yAzpO998HA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.27.2': + resolution: {integrity: sha512-xsPeJgh2ThBpUqlLgRfiVYBEf/P1nWlWvReG+aBWfNv3XEBpa6ZCmxSVnxJgLgkNz4IbxpLy64h2gCmAAQLneQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.27.2': + resolution: {integrity: sha512-KnXU4m9MywuZFedL35Z3PuwiTSn/yqRIhrEA9j+7OSkji39NzVkgxuxTYg5F8ryGysq4iFADaU5osSizMXhU2A==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.27.2': + resolution: {integrity: sha512-Hj77A3yTvUeCIx/Vi+4d4IbYhyTwtHj07lVzUgpUq9YpJSEiGJj4vXMKwzJ3w5zp5v3PFvpJNgc/J31smZey6g==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.27.2': + resolution: {integrity: sha512-RjgKf5C3xbn8gxvCm5VgKZ4nn0pRAIe90J0/fdHUsgztd3+Zesb2lm2+r6uX4prV2eUByuxJNdt647/1KPRq5g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.2': + resolution: {integrity: sha512-duq21FoXwQtuws+V9H6UZ+eCBc7fxSpMK1GQINKn3fAyd9DFYKPJNcUhdIKOrMFjLEJgQskoMoiuizMt+dl20g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.2': + resolution: {integrity: sha512-6npqOKEPRZkLrMcvyC/32OzJ2srdPzCylJjiTJT2c0bwwSGm7nz2F9mNQ1WrAqCBZROcQn91Fno+khFhVijmFA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.27.2': + resolution: {integrity: sha512-V9Xg6eXtgBtHq2jnuQwM/jr2mwe2EycnopO8cbOvpzFuySCGtKlPCI3Hj9xup/pJK5Q0388qfZZy2DqV2J8ftw==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.27.2': + resolution: {integrity: sha512-uCFX9gtZJoQl2xDTpRdseYuNqyKkuMDtH6zSrBTA28yTfKyjN9hQ2B04N5ynR8ILCoSDOrG/Eg+J2TtJ1e/CSA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.27.2': + resolution: {integrity: sha512-/PU9P+7Rkz8JFYDHIi+xzHabOu9qEWR07L5nWLIUsvserrxegZExKCi2jhMZRd0ATdboKylu/K5yAXbp7fYFvA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.2': + resolution: {integrity: sha512-eCHmol/dT5odMYi/N0R0HC8V8QE40rEpkyje/ZAXJYNNoSfrObOvG/Mn+s1F/FJyB7co7UQZZf6FuWnN6a7f4g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.27.2': + resolution: {integrity: sha512-DEP3Njr9/ADDln3kNi76PXonLMSSMiCir0VHXxmGSHxCxDfQ70oWjHcJGfiBugzaqmYdTC7Y+8Int6qbnxPBIQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.27.2': + resolution: {integrity: sha512-NHGo5i6IE/PtEPh5m0yw5OmPMpesFnzMIS/lzvN5vknnC1sXM5Z/id5VgcNPgpD+wHmIcuYYgW+Q53v+9s96lQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.27.2': + resolution: {integrity: sha512-PaW2DY5Tan+IFvNJGHDmUrORadbe/Ceh8tQxi8cmdQVCCYsLoQo2cuaSj+AU+YRX8M4ivS2vJ9UGaxfuNN7gmg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.27.2': + resolution: {integrity: sha512-dOlWEMg2gI91Qx5I/HYqOD6iqlJspxLcS4Zlg3vjk1srE67z5T2Uz91yg/qA8sY0XcwQrFzWWiZhMNERylLrpQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-win32-arm64-msvc@4.27.2': + resolution: {integrity: sha512-euMIv/4x5Y2/ImlbGl88mwKNXDsvzbWUlT7DFky76z2keajCtcbAsN9LUdmk31hAoVmJJYSThgdA0EsPeTr1+w==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.27.2': + resolution: {integrity: sha512-RsnE6LQkUHlkC10RKngtHNLxb7scFykEbEwOFDjr3CeCMG+Rr+cKqlkKc2/wJ1u4u990urRHCbjz31x84PBrSQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.27.2': + resolution: {integrity: sha512-foJM5vv+z2KQmn7emYdDLyTbkoO5bkHZE1oth2tWbQNGW7mX32d46Hz6T0MqXdWS2vBZhaEtHqdy9WYwGfiliA==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.5.0': + resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@suchipi/femver@1.0.0': + resolution: {integrity: sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==} + + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.15': + resolution: {integrity: sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==} + + '@tanstack/query-core@5.60.5': + resolution: {integrity: sha512-jiS1aC3XI3BJp83ZiTuDLerTmn9P3U95r6p+6/SNauLJaYxfIC4dMuWygwnBHIZxjn2zJqEpj3nysmPieoxfPQ==} + + '@tanstack/react-query@5.60.5': + resolution: {integrity: sha512-M77bOsPwj1wYE56gk7iJvxGAr4IC12NWdIDhT+Eo8ldkWRHMvIR8I/rufIvT1OXoV/bl7EECwuRuMlxxWtvW2Q==} + peerDependencies: + react: ^18 || ^19 + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/react-dom@18.3.1': + resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vanilla-extract/css@1.16.0': + resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + + '@vanilla-extract/dynamic@2.1.2': + resolution: {integrity: sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==} + + '@vanilla-extract/private@1.0.6': + resolution: {integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==} + + '@vanilla-extract/recipes@0.5.5': + resolution: {integrity: sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@vitejs/plugin-react-swc@3.7.1': + resolution: {integrity: sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==} + peerDependencies: + vite: ^4 || ^5 + + '@wallet-standard/app@1.1.0': + resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} + engines: {node: '>=16'} + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/core@1.0.3': + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + + '@wallet-standard/features@1.1.0': + resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} + engines: {node: '>= 8'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.14: + resolution: {integrity: sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==} + peerDependencies: + eslint: '>=7' + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gql.tada@1.8.10: + resolution: {integrity: sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanostores@0.10.3: + resolution: {integrity: sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-spinners@0.14.1: + resolution: {integrity: sha512-2Izq+qgQ08HTofCVEdcAQCXFEYfqTDdfeDQJeo/HHQiQJD4imOicNLhkfN2eh1NYEWVOX4D9ok2lhuDB0z3Aag==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.27.2: + resolution: {integrity: sha512-KreA+PzWmk2yaFmZVwe6GB2uBD86nXl86OsDkt1bJS9p3vqWuEQ6HnJJ+j/mZi/q0920P99/MVRlB4L3crpF5w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zustand@4.5.5: + resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@0no-co/graphql.web@1.0.11(graphql@16.9.0)': + optionalDependencies: + graphql: 16.9.0 + + '@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.12': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.8': {} + + '@gql.tada/cli-utils@1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + typescript: 5.6.3 + + '@gql.tada/internal@1.0.8(graphql@16.9.0)(typescript@5.6.3)': + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + graphql: 16.9.0 + typescript: 5.6.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': + dependencies: + graphql: 16.9.0 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@mysten/bcs@1.1.0': + dependencies: + bs58: 6.0.0 + + '@mysten/dapp-kit@0.14.33(@tanstack/react-query@5.60.5(react@18.3.1))(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.6.3) + '@mysten/zksend': 0.12.1(typescript@5.6.3) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@tanstack/react-query': 5.60.5(react@18.3.1) + '@vanilla-extract/css': 1.16.0 + '@vanilla-extract/dynamic': 2.1.2 + '@vanilla-extract/recipes': 0.5.5(@vanilla-extract/css@1.16.0) + clsx: 2.1.1 + react: 18.3.1 + zustand: 4.5.5(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + + '@mysten/sui@1.14.3(typescript@5.6.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + '@mysten/bcs': 1.1.0 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + '@suchipi/femver': 1.0.0 + bech32: 2.0.0 + gql.tada: 1.8.10(graphql@16.9.0)(typescript@5.6.3) + graphql: 16.9.0 + tweetnacl: 1.0.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/wallet-standard@0.13.12(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@wallet-standard/core': 1.0.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/zksend@0.12.1(typescript@5.6.3)': + dependencies: + '@mysten/sui': 1.14.3(typescript@5.6.3) + '@mysten/wallet-standard': 0.13.12(typescript@5.6.3) + mitt: 3.0.1 + nanostores: 0.10.3 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/number@1.1.0': {} + + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-accessible-icon@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-aspect-ratio@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-avatar@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-checkbox@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-radio-group@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-scroll-area@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slider@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@radix-ui/rect@1.1.0': {} + + '@radix-ui/themes@3.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/colors': 3.0.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-accessible-icon': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-alert-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-aspect-ratio': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-avatar': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context-menu': 2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dropdown-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-hover-card': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-navigation-menu': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-radio-group': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-scroll-area': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-switch': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + + '@rollup/rollup-android-arm-eabi@4.27.2': + optional: true + + '@rollup/rollup-android-arm64@4.27.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.27.2': + optional: true + + '@rollup/rollup-darwin-x64@4.27.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.27.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.27.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.27.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.27.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.27.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.27.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.27.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.27.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.2': + optional: true + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.5.0': + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@suchipi/femver@1.0.0': {} + + '@swc/core-darwin-arm64@1.9.2': + optional: true + + '@swc/core-darwin-x64@1.9.2': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.2': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.2': + optional: true + + '@swc/core-linux-arm64-musl@1.9.2': + optional: true + + '@swc/core-linux-x64-gnu@1.9.2': + optional: true + + '@swc/core-linux-x64-musl@1.9.2': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.2': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.2': + optional: true + + '@swc/core-win32-x64-msvc@1.9.2': + optional: true + + '@swc/core@1.9.2': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.15 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.15': + dependencies: + '@swc/counter': 0.1.3 + + '@tanstack/query-core@5.60.5': {} + + '@tanstack/react-query@5.60.5(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.60.5 + react: 18.3.1 + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/prop-types@15.7.13': {} + + '@types/react-dom@18.3.1': + dependencies: + '@types/react': 18.3.12 + + '@types/react@18.3.12': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/semver@7.5.8': {} + + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.7 + eslint: 8.57.1 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.3 + ts-api-utils: 1.4.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + eslint: 8.57.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vanilla-extract/css@1.16.0': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.6 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.2': + dependencies: + '@vanilla-extract/private': 1.0.6 + + '@vanilla-extract/private@1.0.6': {} + + '@vanilla-extract/recipes@0.5.5(@vanilla-extract/css@1.16.0)': + dependencies: + '@vanilla-extract/css': 1.16.0 + + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.11)': + dependencies: + '@swc/core': 1.9.2 + vite: 5.4.11 + transitivePeerDependencies: + - '@swc/helpers' + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.0.3': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + array-union@2.1.0: {} + + balanced-match@1.0.2: {} + + base-x@5.0.0: {} + + bech32@2.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + callsites@3.1.0: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + classnames@2.5.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + cross-spawn@7.0.5: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deep-is@0.1.4: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + detect-node-es@1.1.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react-refresh@0.4.14(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.5 + debug: 4.3.7 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.1: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + get-nonce@1.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gql.tada@1.8.10(graphql@16.9.0)(typescript@5.6.3): + dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@16.9.0) + '@0no-co/graphqlsp': 1.12.16(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/cli-utils': 1.6.3(@0no-co/graphqlsp@1.12.16(graphql@16.9.0)(typescript@5.6.3))(graphql@16.9.0)(typescript@5.6.3) + '@gql.tada/internal': 1.0.8(graphql@16.9.0)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graphemer@1.4.0: {} + + graphql@16.9.0: {} + + has-flag@4.0.0: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@10.4.3: {} + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.26.0 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + mitt@3.0.1: {} + + modern-ahocorasick@1.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + nanostores@0.10.3: {} + + natural-compare@1.4.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.3.3: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + + react-spinners@0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + regenerator-runtime@0.14.1: {} + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.27.2: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.27.2 + '@rollup/rollup-android-arm64': 4.27.2 + '@rollup/rollup-darwin-arm64': 4.27.2 + '@rollup/rollup-darwin-x64': 4.27.2 + '@rollup/rollup-freebsd-arm64': 4.27.2 + '@rollup/rollup-freebsd-x64': 4.27.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.2 + '@rollup/rollup-linux-arm-musleabihf': 4.27.2 + '@rollup/rollup-linux-arm64-gnu': 4.27.2 + '@rollup/rollup-linux-arm64-musl': 4.27.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.2 + '@rollup/rollup-linux-riscv64-gnu': 4.27.2 + '@rollup/rollup-linux-s390x-gnu': 4.27.2 + '@rollup/rollup-linux-x64-gnu': 4.27.2 + '@rollup/rollup-linux-x64-musl': 4.27.2 + '@rollup/rollup-win32-arm64-msvc': 4.27.2 + '@rollup/rollup-win32-ia32-msvc': 4.27.2 + '@rollup/rollup-win32-x64-msvc': 4.27.2 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + text-table@0.2.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@1.4.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + tslib@2.8.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + typescript@5.6.3: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + + valibot@0.36.0: {} + + vite@5.4.11: + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.27.2 + optionalDependencies: + fsevents: 2.3.3 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + yocto-queue@0.1.0: {} + + zustand@4.5.5(@types/react@18.3.12)(react@18.3.1): + dependencies: + use-sync-external-store: 1.2.2(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react: 18.3.1 diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/prettier.config.cjs b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/prettier.config.cjs new file mode 100644 index 000000000..c07541106 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/prettier.config.cjs @@ -0,0 +1,4 @@ +// eslint-disable-next-line no-undef +module.exports = { + proseWrap: "always", +}; diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/App.tsx b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/App.tsx new file mode 100644 index 000000000..95eca2e35 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/App.tsx @@ -0,0 +1,63 @@ +import { ConnectButton, useCurrentAccount } from "@mysten/dapp-kit"; +import { isValidSuiObjectId } from "@mysten/sui/utils"; +import { Box, Container, Flex, Heading } from "@radix-ui/themes"; +import { useState } from "react"; +import { Counter } from "./Counter"; +import { CreateCounter } from "./CreateCounter"; +import Task from "./task"; + +function App() { + const currentAccount = useCurrentAccount(); + const [counterId, setCounter] = useState(() => { + const hash = window.location.hash.slice(1); + return isValidSuiObjectId(hash) ? hash : null; + }); + + return ( + <> + + + dApp Starter Template + + + + + + + + + {currentAccount ? ( + counterId ? ( + + ) : ( + { + window.location.hash = id; + setCounter(id); + }} + /> + ) + ) : ( + Please connect your wallet + )} + + + + + ); +} + +export default App; diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/Counter.tsx b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/Counter.tsx new file mode 100644 index 000000000..3ad530d86 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/Counter.tsx @@ -0,0 +1,106 @@ +import { + useCurrentAccount, + useSignAndExecuteTransaction, + useSuiClient, + useSuiClientQuery, +} from "@mysten/dapp-kit"; +import type { SuiObjectData } from "@mysten/sui/client"; +import { Transaction } from "@mysten/sui/transactions"; +import { Button, Flex, Heading, Text } from "@radix-ui/themes"; +import { useNetworkVariable } from "./networkConfig"; +import { useState } from "react"; +import ClipLoader from "react-spinners/ClipLoader"; + +export function Counter({ id }: { id: string }) { + const counterPackageId = useNetworkVariable("counterPackageId"); + const suiClient = useSuiClient(); + const currentAccount = useCurrentAccount(); + const { mutate: signAndExecute } = useSignAndExecuteTransaction(); + const { data, isPending, error, refetch } = useSuiClientQuery("getObject", { + id, + options: { + showContent: true, + showOwner: true, + }, + }); + + const [waitingForTxn, setWaitingForTxn] = useState(""); + + const executeMoveCall = (method: "increment" | "reset") => { + setWaitingForTxn(method); + + const tx = new Transaction(); + + if (method === "reset") { + tx.moveCall({ + arguments: [tx.object(id), tx.pure.u64(0)], + target: `${counterPackageId}::counter::set_value`, + }); + } else { + tx.moveCall({ + arguments: [tx.object(id)], + target: `${counterPackageId}::counter::increment`, + }); + } + + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: (tx) => { + suiClient.waitForTransaction({ digest: tx.digest }).then(async () => { + await refetch(); + setWaitingForTxn(""); + }); + }, + }, + ); + }; + + if (isPending) return Loading...; + + if (error) return Error: {error.message}; + + if (!data.data) return Not found; + + const ownedByCurrentAccount = + getCounterFields(data.data)?.owner === currentAccount?.address; + + return ( + <> + Counter {id} + + + Count: {getCounterFields(data.data)?.value} + + + {ownedByCurrentAccount ? ( + + ) : null} + + + + ); +} +function getCounterFields(data: SuiObjectData) { + if (data.content?.dataType !== "moveObject") { + return null; + } + + return data.content.fields as { value: number; owner: string }; +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/CreateCounter.tsx b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/CreateCounter.tsx new file mode 100644 index 000000000..32d8aafa2 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/CreateCounter.tsx @@ -0,0 +1,60 @@ +import { Transaction } from "@mysten/sui/transactions"; +import { Button, Container } from "@radix-ui/themes"; +import { useSignAndExecuteTransaction, useSuiClient } from "@mysten/dapp-kit"; +import { useNetworkVariable } from "./networkConfig"; +import ClipLoader from "react-spinners/ClipLoader"; + +export function CreateCounter({ + onCreated, +}: { + onCreated: (id: string) => void; +}) { + const counterPackageId = useNetworkVariable("counterPackageId"); + const suiClient = useSuiClient(); + const { + mutate: signAndExecute, + isSuccess, + isPending, + } = useSignAndExecuteTransaction(); + + function create() { + const tx = new Transaction(); + + tx.moveCall({ + arguments: [], + target: `${counterPackageId}::counter::create`, + }); + + signAndExecute( + { + transaction: tx, + }, + { + onSuccess: async ({ digest }) => { + const { effects } = await suiClient.waitForTransaction({ + digest: digest, + options: { + showEffects: true, + }, + }); + + onCreated(effects?.created?.[0]?.reference?.objectId!); + }, + }, + ); + } + + return ( + + + + ); +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/constants.ts b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/constants.ts new file mode 100644 index 000000000..0ffffc297 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/constants.ts @@ -0,0 +1,3 @@ +export const DEVNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const TESTNET_COUNTER_PACKAGE_ID = "0xTODO"; +export const MAINNET_COUNTER_PACKAGE_ID = "0xTODO"; diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/main.tsx b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/main.tsx new file mode 100644 index 000000000..db3a81acc --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/main.tsx @@ -0,0 +1,26 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "@mysten/dapp-kit/dist/index.css"; +import "@radix-ui/themes/styles.css"; + +import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { Theme } from "@radix-ui/themes"; +import App from "./App.tsx"; +import { networkConfig } from "./networkConfig.ts"; + +const queryClient = new QueryClient(); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + + + + + + , +); diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/networkConfig.ts b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/networkConfig.ts new file mode 100644 index 000000000..7b6f8b73d --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/networkConfig.ts @@ -0,0 +1,31 @@ +import { getFullnodeUrl } from "@mysten/sui/client"; +import { + DEVNET_COUNTER_PACKAGE_ID, + TESTNET_COUNTER_PACKAGE_ID, + MAINNET_COUNTER_PACKAGE_ID, +} from "./constants.ts"; +import { createNetworkConfig } from "@mysten/dapp-kit"; + +const { networkConfig, useNetworkVariable, useNetworkVariables } = + createNetworkConfig({ + devnet: { + url: getFullnodeUrl("devnet"), + variables: { + counterPackageId: DEVNET_COUNTER_PACKAGE_ID, + }, + }, + testnet: { + url: getFullnodeUrl("testnet"), + variables: { + counterPackageId: TESTNET_COUNTER_PACKAGE_ID, + }, + }, + mainnet: { + url: getFullnodeUrl("mainnet"), + variables: { + counterPackageId: MAINNET_COUNTER_PACKAGE_ID, + }, + }, + }); + +export { useNetworkVariable, useNetworkVariables, networkConfig }; diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/task.tsx b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/task.tsx new file mode 100644 index 000000000..a0b469dec --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/task.tsx @@ -0,0 +1,78 @@ +import { Button, Container, Flex, Text} from "@radix-ui/themes"; +import {useCurrentAccount,useSignAndExecuteTransaction} from "@mysten/dapp-kit"; +import { Transaction } from "@mysten/sui/transactions"; + +import {Pool, PoolConfig} from "navi-sdk/dist/types"; +import {pool, Sui, wUSDC} from "navi-sdk/dist/address"; +import {borrowCoin, depositCoin} from "navi-sdk/dist/libs/PTB"; +import {useState} from "react"; + + +// 1.[存入Navi Protocol 1 SUI] +// 2.[借出当前日期的USDC 0.[月][天][小时] 的 USDC ] +// 3.[然后在存入等额的USDC] +export function Task(){ + //当前连接钱包账户 + const account = useCurrentAccount(); + + + + const {mutate :signAndExecuteTransaction} = useSignAndExecuteTransaction(); + const [digest, setDigest] = useState(''); + const [message, setMessage] = useState(''); + + const deposit_borrow_Sui = async ()=>{ + + const date = new Date() + const month = date.getMonth() + 1; // getMonth() returns 0-11 + const day = date.getDate(); + const hour = date.getHours(); + + // 确保每个数字都是两位数 + const borrow_amount = parseFloat(`0.${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}${hour.toString().padStart(2, '0')}`) * (10 ** wUSDC.decimal); + + const tx = new Transaction(); + tx.setSender(account!.address); + + //存入1Sui + // 获取Sui池子配置 + // @ts-ignore + const suiPool: PoolConfig = pool[Sui.symbol as keyof Pool]; + const [suiCoin] = tx.splitCoins(tx.gas, [1_000_000_000]); // 1 SUI = 10^9 MIST + await depositCoin(tx, suiPool, suiCoin, 1_000_000_000); + console.log('deposit_amount count', suiCoin.NestedResult); + + + // 借出USDC + console.log('borrow count', borrow_amount); + const wusdcPool: PoolConfig = pool[wUSDC.symbol as keyof Pool]; + const [toBorrowCoin] = await borrowCoin(tx, wusdcPool, borrow_amount); + + + // 存入USDC + await depositCoin(tx, wusdcPool,toBorrowCoin, borrow_amount); + + // 提交交易 + console.log('signAndExecuteTransaction'); + + await signAndExecuteTransaction({transaction:tx,chain:'sui:mainnet'},{onSuccess:(result)=>{ + console.log('executed transaction success',result); + setDigest(result.digest); + },onError:(error)=>{ + console.log('executed transaction error',error); + setMessage(error.message); + } }); + + } + return( + + + + {digest ? `Transaction submitted: ${digest}` : message} + + + ) + +} + +export default Task; \ No newline at end of file diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/vite-env.d.ts b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/tsconfig.json b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/tsconfig.json new file mode 100644 index 000000000..a7fc6fbf2 --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/tsconfig.node.json b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/vite.config.ts b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/vite.config.ts new file mode 100644 index 000000000..d366e8c8d --- /dev/null +++ b/mover/yuanchengjiayu/code/task6/my-first-sui-dapp/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/mover/yuanchengjiayu/images/task7.png b/mover/yuanchengjiayu/images/task7.png new file mode 100644 index 000000000..6b28da546 Binary files /dev/null and b/mover/yuanchengjiayu/images/task7.png differ diff --git a/mover/yuanchengjiayu/readme.md b/mover/yuanchengjiayu/readme.md index e4646655d..9ad788b12 100644 --- a/mover/yuanchengjiayu/readme.md +++ b/mover/yuanchengjiayu/readme.md @@ -36,17 +36,17 @@ - [x] play game hash: DUxCLkRBk1D1BtXP9vYd4PM3PFffVZT9uREJ8waQgSJt ## 05 Move Swap -- [] swap package id : -- [] call swap CoinA-> CoinB hash : -- [] call swap CoinB-> CoinA hash : +- [x] swap package id : 0x923395a4a920290c69f4802b9ecc60f2ab8fc58cd94727fe2d85ef22140533f5 +- [x] call swap CoinA-> CoinB hash : 6sy61XHY4bqaj9RY5ohL5E6StqSLi7gDoZGpReCsvyVk +- [x] call swap CoinB-> CoinA hash : 8Sz5ZmnAUxVZVEduy1dzXwoBmoP2q47JkGKCnFUb8Soo ## 06 Dapp-kit SDK PTB -- [] save hash : +- [x] save hash :3ZxKWcNqq48stYusqcq4zTYxLHxFDswzE5eVEwWqjFJj ## 07 Move CTF Check In -- [] CLI call 截图 : ![截图](./images/你的图片地址) -- [] flag hash : +- [x] CLI call 截图 : ![截图](./images/task7.png) +- [x] flag hash : CPmXTrA8Wk3H8jQ38HJ8WcLoC8QVQ1juAhhxSBnxK7G3 ## 08 Move CTF Lets Move -- [] proof : -- [] flag hash : +- [x] proof : [115,180,2,0,0,0,0,0] +- [x] flag hash : 66yHxkMna3MJV7L6YYUfXJAAjNte2DSit8g8sD2zbsBD diff --git a/mover/z0yuan/code/task4/Move.lock b/mover/z0yuan/code/task4/Move.lock new file mode 100644 index 000000000..75ced7ef6 --- /dev/null +++ b/mover/z0yuan/code/task4/Move.lock @@ -0,0 +1,43 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "DAC3A8A8378D8A82FB0B9535F438803157F46A9C2BC92CF167C4E95F565A368A" +deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600" +dependencies = [ + { id = "Sui", name = "Sui" }, + { id = "faucet", name = "faucet" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[[move.package]] +id = "faucet" +source = { local = "../faucet" } + +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.mainnet] +chain-id = "35834a8a" +original-published-id = "0xbce4d4ae01a013e40000a2e82fd158529e16c88f52416b0f8b0d2fb3cedba22e" +latest-published-id = "0xbce4d4ae01a013e40000a2e82fd158529e16c88f52416b0f8b0d2fb3cedba22e" +published-version = "1" diff --git a/mover/z0yuan/code/task4/Move.toml b/mover/z0yuan/code/task4/Move.toml new file mode 100644 index 000000000..396e259df --- /dev/null +++ b/mover/z0yuan/code/task4/Move.toml @@ -0,0 +1,38 @@ +[package] +name = "my_game" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } +faucet = { local = "../faucet"} + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_game = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/z0yuan/code/task4/sources/my_game.move b/mover/z0yuan/code/task4/sources/my_game.move new file mode 100644 index 000000000..181fcf459 --- /dev/null +++ b/mover/z0yuan/code/task4/sources/my_game.move @@ -0,0 +1,65 @@ +#[allow(unused_use, duplicate_alias,lint(public_random))] +module my_game::my_game{ + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::balance::{Self, Balance}; + use sui::random::{Self, Random, new_generator}; + use faucet::mycoin::{MYCOIN}; + use 0x1::bcs::{}; + + const BalanceValuesmall: u64 = 1000; + + //奖金池 + public struct Reward_pool has key,store{ + id: UID, + balance: Balance, + } + //拥有者 + public struct Owner has key{ + id: UID, + } + + fun init(ctx: &mut TxContext) { + let reward_poll = Reward_pool {id: object::new(ctx) ,balance: balance::zero(), }; + transfer::share_object(reward_poll); + + let owner = Owner { id: object::new(ctx) }; + transfer::transfer(owner,tx_context::sender(ctx)); + } + //存款 + public entry fun Deposit(reward: &mut Reward_pool,coin: &mut Coin,amount: u64){ + + //判断用户余额是否大于存款金额,如果小于直接回退 + assert!(coin::value(coin) >= amount,BalanceValuesmall); + + let split_balance = balance::split(coin::balance_mut(coin), amount); + balance::join(&mut reward.balance,split_balance); + } + //取款 + entry fun Withdraw(reward: &mut Reward_pool,amount: u64,_: &mut Owner,ctx: &mut TxContext){ + //判断奖金池余额是否大于要提取的金额 + assert!(reward.balance.value() >= amount,BalanceValuesmall); + + let recv_balance = coin::take(&mut reward.balance, amount, ctx); + transfer::public_transfer(recv_balance, tx_context::sender(ctx)); + } + //游戏逻辑 + public entry fun game(reward_poll: &mut Reward_pool,coin: &mut Coin,amount: u64,guess: bool,rand: &Random,ctx: &mut TxContext){ + //判断用户余额是否大于押注余额 + assert!(coin::value(coin) >= amount,BalanceValuesmall); + + let mut generator = new_generator(rand, ctx); + let result = random::generate_u8_in_range(&mut generator, 0, 1); + + let flag: bool = result == 1; + //如果猜测正确 + if (flag == guess) { + let reward = coin::take(&mut reward_poll.balance, amount, ctx); + coin::join(coin, reward); + } + else{ + Deposit(reward_poll, coin, amount); + } + } + +} + diff --git a/mover/z0yuan/code/task4/tests/my_game_tests.move b/mover/z0yuan/code/task4/tests/my_game_tests.move new file mode 100644 index 000000000..a86dc77ed --- /dev/null +++ b/mover/z0yuan/code/task4/tests/my_game_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_game::my_game_tests; +// uncomment this line to import the module +// use my_game::my_game; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_game() { + // pass +} + +#[test, expected_failure(abort_code = ::my_game::my_game_tests::ENotImplemented)] +fun test_my_game_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/z0yuan/readme.md b/mover/z0yuan/readme.md index 1c2798eb3..4ea760d9b 100755 --- a/mover/z0yuan/readme.md +++ b/mover/z0yuan/readme.md @@ -32,10 +32,10 @@ - [x] scan上的NFT截图:![Scan截图](./images/nft.png) ## 04 Move Game -- [] game package id : -- [] deposit Coin hash: -- [] withdraw `Coin` hash: -- [] play game hash: +- [x] game package id :0xbce4d4ae01a013e40000a2e82fd158529e16c88f52416b0f8b0d2fb3cedba22e +- [x] deposit Coin hash:GWL6dmLEFhgAgHjmjPF8vQnW62qJXUnnRrCmBuyB522Y +- [x] withdraw `Coin` hash:GtKW22GhaheeArUcYEY7bQVBYrSJRqb7LWUmqTFq1qPB +- [x] play game hash:GtKW22GhaheeArUcYEY7bQVBYrSJRqb7LWUmqTFq1qPB ## 05 Move Swap - [] swap package id : @@ -47,5 +47,5 @@ ## 07 Move CTF Check In -- [] CLI call 截图 : -- [] flag hash : +- [] CLI call 截图 : +- [] flag hash : diff --git a/mover/zacarx/assets/image-20241114170946321.png b/mover/zacarx/assets/image-20241114170946321.png new file mode 100644 index 000000000..c81388e77 Binary files /dev/null and b/mover/zacarx/assets/image-20241114170946321.png differ diff --git a/mover/zacarx/co-learn-2411/assets/image-20241114230736922.png b/mover/zacarx/co-learn-2411/assets/image-20241114230736922.png new file mode 100644 index 000000000..d69d431fd Binary files /dev/null and b/mover/zacarx/co-learn-2411/assets/image-20241114230736922.png differ diff --git a/mover/zacarx/co-learn-2411/assets/image-20241114230857279.png b/mover/zacarx/co-learn-2411/assets/image-20241114230857279.png new file mode 100644 index 000000000..d561b9177 Binary files /dev/null and b/mover/zacarx/co-learn-2411/assets/image-20241114230857279.png differ diff --git a/mover/zacarx/co-learn-2411/assets/image-20241114231107464.png b/mover/zacarx/co-learn-2411/assets/image-20241114231107464.png new file mode 100644 index 000000000..f394662d4 Binary files /dev/null and b/mover/zacarx/co-learn-2411/assets/image-20241114231107464.png differ diff --git a/mover/zacarx/co-learn-2411/images/readme.md b/mover/zacarx/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/zacarx/co-learn-2411/project/readme.md b/mover/zacarx/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/zacarx/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/zacarx/co-learn-2411/readme.md b/mover/zacarx/co-learn-2411/readme.md new file mode 100644 index 000000000..a63eff3b1 --- /dev/null +++ b/mover/zacarx/co-learn-2411/readme.md @@ -0,0 +1,60 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [x] b站,推特关注截图: + +![image-20241114230736922](./assets/image-20241114230736922.png) + +![image-20241114230857279](./assets/image-20241114230857279.png) + + + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [x] 宣传截图: +- [x] ![image-20241114231107464](./assets/image-20241114231107464.png) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + diff --git a/mover/zacarx/code/task2_coin/faucet_coin/Move.lock b/mover/zacarx/code/task2_coin/faucet_coin/Move.lock new file mode 100644 index 000000000..9c8728bb1 --- /dev/null +++ b/mover/zacarx/code/task2_coin/faucet_coin/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "8D3EEF09FF2AD6B4D80AC40E366B5FB930DD591FB36370A977E0847B34F30996" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/devnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/devnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.main-env] +chain-id = "35834a8a" +original-published-id = "0xed033d020f7796449b1c845cdde8bca79e2d0a77329f03d014b2daa7896709ae" +latest-published-id = "0xed033d020f7796449b1c845cdde8bca79e2d0a77329f03d014b2daa7896709ae" +published-version = "1" diff --git a/mover/zacarx/code/task2_coin/faucet_coin/Move.toml b/mover/zacarx/code/task2_coin/faucet_coin/Move.toml new file mode 100644 index 000000000..d54a49200 --- /dev/null +++ b/mover/zacarx/code/task2_coin/faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/devnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/zacarx/code/task2_coin/faucet_coin/sources/faucet_coin.move b/mover/zacarx/code/task2_coin/faucet_coin/sources/faucet_coin.move new file mode 100644 index 000000000..30fa0b948 --- /dev/null +++ b/mover/zacarx/code/task2_coin/faucet_coin/sources/faucet_coin.move @@ -0,0 +1,18 @@ +module faucet_coin::zacarxfaucet; + +use sui::coin::{create_currency, mint_and_transfer}; +use sui::url; +use std::option; + +public struct ZACARXFAUCET has drop {} + +fun init(zacarxfaucet: ZACARXFAUCET, ctx: &mut TxContext) { + let url = url::new_unsafe_from_bytes(b"https://aggregator.walrus-testnet.walrus.space/v1/3om0zV4j9AHvC5KSrcg3iyMU8zOavKhg3uT8q1rwap0"); + let yes = option::some(url); // 使用 option::some 函数 + let (treasury, coinmetadata) = create_currency(zacarxfaucet, 8, b"ZACARXFAUCET", b"zacarxfaucet", b"we love zacarxfaucet'coin", yes, ctx); + + sui::transfer::public_freeze_object(coinmetadata); + sui::transfer::public_share_object(treasury); + + // mint_and_transfer() +} diff --git a/mover/zacarx/code/task2_coin/faucet_coin/tests/faucet_coin_tests.move b/mover/zacarx/code/task2_coin/faucet_coin/tests/faucet_coin_tests.move new file mode 100644 index 000000000..74b01751a --- /dev/null +++ b/mover/zacarx/code/task2_coin/faucet_coin/tests/faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucet_coin::faucet_coin_tests; +// uncomment this line to import the module +// use faucet_coin::faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucet_coin::faucet_coin_tests::ENotImplemented)] +fun test_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zacarx/code/task2_coin/my_coin/Move.lock b/mover/zacarx/code/task2_coin/my_coin/Move.lock new file mode 100644 index 000000000..c2c8ca29d --- /dev/null +++ b/mover/zacarx/code/task2_coin/my_coin/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "6784F87564F47856350582ED7D17417E9E132E3258C1448EF81E23BFD57D0FF2" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/devnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/devnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.devnet] +chain-id = "0fc07bbe" +original-published-id = "0x5ab5bd498a6affa955df12b98a8b67578825e1c6a24ba79240e61178c988dac1" +latest-published-id = "0x5ab5bd498a6affa955df12b98a8b67578825e1c6a24ba79240e61178c988dac1" +published-version = "1" + +[env.main-env] +chain-id = "35834a8a" +original-published-id = "0xfb935e0ef8cb76d207ad2cdfe15bca9130e90d783f5d5dd51a865551655c48ba" +latest-published-id = "0xfb935e0ef8cb76d207ad2cdfe15bca9130e90d783f5d5dd51a865551655c48ba" +published-version = "1" diff --git a/mover/zacarx/code/task2_coin/my_coin/Move.toml b/mover/zacarx/code/task2_coin/my_coin/Move.toml new file mode 100644 index 000000000..a674d54e9 --- /dev/null +++ b/mover/zacarx/code/task2_coin/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/devnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/zacarx/code/task2_coin/my_coin/sources/usd.move b/mover/zacarx/code/task2_coin/my_coin/sources/usd.move new file mode 100644 index 000000000..d8a1bbe1f --- /dev/null +++ b/mover/zacarx/code/task2_coin/my_coin/sources/usd.move @@ -0,0 +1,18 @@ +module my_coin::zacarxcoin; + +use sui::coin::{create_currency, mint_and_transfer}; +use sui::url; +use std::option; + +public struct ZACARXCOIN has drop {} + +fun init(zacarxcoin: ZACARXCOIN, ctx: &mut TxContext) { + let url = url::new_unsafe_from_bytes(b"https://aggregator.walrus-testnet.walrus.space/v1/3om0zV4j9AHvC5KSrcg3iyMU8zOavKhg3uT8q1rwap0"); + let yes = option::some(url); // 使用 option::some 函数 + let (treasury, coinmetadata) = create_currency(zacarxcoin, 8, b"ZACARXCOIN", b"zacarxcoin", b"we love zacarx'coin", yes, ctx); + + sui::transfer::public_freeze_object(coinmetadata); + sui::transfer::public_transfer(treasury, ctx.sender()) + + // mint_and_transfer() +} diff --git a/mover/zacarx/code/task2_coin/my_coin/tests/my_coin_tests.move b/mover/zacarx/code/task2_coin/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/zacarx/code/task2_coin/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zacarx/code/task3_my_nft/Move.lock b/mover/zacarx/code/task3_my_nft/Move.lock new file mode 100644 index 000000000..f8d957b19 --- /dev/null +++ b/mover/zacarx/code/task3_my_nft/Move.lock @@ -0,0 +1,40 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "52D56DDA7B81D6C8D4E8149AE4D0DA217890CA30BB40D805DE9A9A3C84AAB9FF" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/mainnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.devnet] +chain-id = "0fc07bbe" +original-published-id = "0x16496de6ed690667e7d3116c98b3396f12b8785e3b687f4d3c1e85c9d9936b6f" +latest-published-id = "0x16496de6ed690667e7d3116c98b3396f12b8785e3b687f4d3c1e85c9d9936b6f" +published-version = "1" + +[env.main-env] +chain-id = "35834a8a" +original-published-id = "0x9c9e730a675be48bebf1fce89d305dec7e1a46c1adb8a07b8af61153ce696778" +latest-published-id = "0x9c9e730a675be48bebf1fce89d305dec7e1a46c1adb8a07b8af61153ce696778" +published-version = "1" diff --git a/mover/zacarx/code/task3_my_nft/Move.toml b/mover/zacarx/code/task3_my_nft/Move.toml new file mode 100644 index 000000000..245fdf912 --- /dev/null +++ b/mover/zacarx/code/task3_my_nft/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_nft" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_nft = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/zacarx/code/task3_my_nft/sources/my_nft.move b/mover/zacarx/code/task3_my_nft/sources/my_nft.move new file mode 100644 index 000000000..d8002245d --- /dev/null +++ b/mover/zacarx/code/task3_my_nft/sources/my_nft.move @@ -0,0 +1,64 @@ +module my_nft::my_nft; + +use std::string; +use std::string::String; +use sui::package; +use sui::display; +use sui::tx_context::sender; + +public struct NFT has key,store { + id: UID, + name: String, + image_url: String, +} +public struct MY_NFT has drop {} + +fun init(otw:MY_NFT,ctx: &mut TxContext){ + let keys = vector[ + b"id".to_string(), + b"name".to_string(), + b"image_url".to_string(), + ]; + + let values = vector[ + b"{id}".to_string(), + b"{name}".to_string(), + b"{image_url}".to_string(), + ]; + + // Claim the `Publisher` for the package! + let publisher = package::claim(otw, ctx); + + // Get a new `Display` object for the `NFT` type. + let mut display = display::new_with_fields( + &publisher, keys, values, ctx + ); + + // Commit first version of `Display` to apply changes. + display.update_version(); + + transfer::public_transfer(publisher, ctx.sender()); + transfer::public_transfer(display, ctx.sender()); + + let mynft = NFT{ + id:object::new(ctx), + name:string::utf8(b"zacarx nft"), + image_url:string::utf8(b"https://aggregator.walrus-testnet.walrus.space/v1/3om0zV4j9AHvC5KSrcg3iyMU8zOavKhg3uT8q1rwap0"), + }; + + transfer::public_transfer(mynft,ctx.sender()); +} + + +public entry fun mint(name: String, image_url: String, ctx: &mut TxContext) { + let mint_nft = NFT { + id: object::new(ctx), + name, + image_url + }; + transfer::public_transfer(mint_nft,ctx.sender()); +} + +public entry fun transfer_nft(nft: NFT, to: address) { + transfer::public_transfer(nft, to); +} diff --git a/mover/zacarx/code/task3_my_nft/tests/my_nft_tests.move b/mover/zacarx/code/task3_my_nft/tests/my_nft_tests.move new file mode 100644 index 000000000..4f30419a2 --- /dev/null +++ b/mover/zacarx/code/task3_my_nft/tests/my_nft_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_nft::my_nft_tests; +// uncomment this line to import the module +// use my_nft::my_nft; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_nft() { + // pass +} + +#[test, expected_failure(abort_code = ::my_nft::my_nft_tests::ENotImplemented)] +fun test_my_nft_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zacarx/readme.md b/mover/zacarx/readme.md index 5ca8ebf5e..7bf795707 100644 --- a/mover/zacarx/readme.md +++ b/mover/zacarx/readme.md @@ -1,10 +1,10 @@ ## 基本信息 -- Sui钱包地址: `0xaaaf8ef32c022f5f1a7a0af13cea9e063ad502f6f3d0e4a854cc919718431ed5` +- Sui钱包地址: `0xdd3ef4a5f244874b6649519092e92482c262e7abcd6e1d84f435004ced85022d` > 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 - github: `Zacarx` ## 个人简介 -- 工作经验: 0年 +- 工作经验: 1年 - 技术栈: `golang` `Python` > 重要提示 请认真写自己的简介 - CTFer,web手,对Move特别感兴趣,想通过Move入门区块链学习提升自己,开阔眼界 @@ -27,17 +27,22 @@ ![image-20240512172410027](./img/image-20240512172410027.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0xfb935e0ef8cb76d207ad2cdfe15bca9130e90d783f5d5dd51a865551655c48ba +- [x] Faucet package id : 0xed033d020f7796449b1c845cdde8bca79e2d0a77329f03d014b2daa7896709ae +- [x] 转账 `My Coin` hash: 9bSsBeyv1gfm3BMULPjDKy6dFkALaWKwis6MmEVoqocT +- [x] `Faucet Coin` address1 mint hash: 9vWSqxLEW8mRriqVcY1F6FUX2KperUjputgx3MLuXW7b +- [x] `Faucet Coin` address2 mint hash:8JyJBcnimsZBFJpnYFFiV6gfvnrqLBQH7AbAeMWnSJNy ## 03 move NFT -- [] nft package id : -- [] nft object id : -- [] 转账 nft hash: -- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) +- [x] nft package id :0x9c9e730a675be48bebf1fce89d305dec7e1a46c1adb8a07b8af61153ce696778 + +- [x] nft object id : 0x9c9e730a675be48bebf1fce89d305dec7e1a46c1adb8a07b8af61153ce696778 + +- [x] 转账 nft hash:CknAVhVVDDDPVKoz8Va5haxqv4PmVpL7pkLVLLccfmTN + +- [x] scan上的NFT截图: + + ![image-20241114170946321](./assets/image-20241114170946321.png) ## 04 Move Game - [] game package id : diff --git a/mover/zhaojune1/code/task2/faucet_coin/Move.lock b/mover/zhaojune1/code/task2/faucet_coin/Move.lock new file mode 100644 index 000000000..fb415ae94 --- /dev/null +++ b/mover/zhaojune1/code/task2/faucet_coin/Move.lock @@ -0,0 +1,26 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "F8CFCF256E2F1BB7CD401C27799A09C40777C5C100F0DFA253E86DD7F0D4ED1B" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" diff --git a/mover/zhaojune1/code/task2/faucet_coin/Move.toml b/mover/zhaojune1/code/task2/faucet_coin/Move.toml new file mode 100644 index 000000000..1b517a2be --- /dev/null +++ b/mover/zhaojune1/code/task2/faucet_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "faucet_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +faucet_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/zhaojune1/code/task2/faucet_coin/sources/faucet_coin.move b/mover/zhaojune1/code/task2/faucet_coin/sources/faucet_coin.move new file mode 100644 index 000000000..bf8958812 --- /dev/null +++ b/mover/zhaojune1/code/task2/faucet_coin/sources/faucet_coin.move @@ -0,0 +1,30 @@ +module faucet_coin::faucet_coin { + use sui::coin::{Self, TreasuryCap, Coin}; + + public struct FAUCET_COIN has drop {} + + const FAUCET_AMOUNT: u64 = 10; + + fun init(witness: FAUCET_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency( + witness, + 9, + b"faucet_coin", + b"faucet_coin", + b"zhaojune1's faucet_coin", + option::none(), + ctx); + + transfer::public_freeze_object(metadata); + transfer::public_transfer(treasury, ctx.sender()); + } + + public fun mint( + treasury_cap: &mut TreasuryCap, + recipient: address, + ctx: &mut TxContext + ) { + let coin = coin::mint(treasury_cap, FAUCET_AMOUNT, ctx); + transfer::public_transfer(coin, recipient); + } +} diff --git a/mover/zhaojune1/code/task2/faucet_coin/tests/faucet_coin_tests.move b/mover/zhaojune1/code/task2/faucet_coin/tests/faucet_coin_tests.move new file mode 100644 index 000000000..74b01751a --- /dev/null +++ b/mover/zhaojune1/code/task2/faucet_coin/tests/faucet_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module faucet_coin::faucet_coin_tests; +// uncomment this line to import the module +// use faucet_coin::faucet_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_faucet_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::faucet_coin::faucet_coin_tests::ENotImplemented)] +fun test_faucet_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zhaojune1/code/task2/my_coin/Move.lock b/mover/zhaojune1/code/task2/my_coin/Move.lock new file mode 100644 index 000000000..d3c0e11dd --- /dev/null +++ b/mover/zhaojune1/code/task2/my_coin/Move.lock @@ -0,0 +1,26 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "0A4652D38CF3C3FDB79EC6C1C98FCFF7B2E933E12B84A1DA267DB28F66AFECE3" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates\\sui-framework\\packages\\move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.3" +edition = "2024.beta" +flavor = "sui" diff --git a/mover/zhaojune1/code/task2/my_coin/Move.toml b/mover/zhaojune1/code/task2/my_coin/Move.toml new file mode 100644 index 000000000..b9ca003f8 --- /dev/null +++ b/mover/zhaojune1/code/task2/my_coin/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "my_coin" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +my_coin = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/zhaojune1/code/task2/my_coin/sources/my_coin.move b/mover/zhaojune1/code/task2/my_coin/sources/my_coin.move new file mode 100644 index 000000000..4e18f5f33 --- /dev/null +++ b/mover/zhaojune1/code/task2/my_coin/sources/my_coin.move @@ -0,0 +1,34 @@ +module my_coin::my_coin { + use sui::coin::{Self, TreasuryCap}; + + //OTW + public struct MY_COIN has drop {} + + //初始化 + fun init(witness: MY_COIN, ctx: &mut TxContext) { + let (treasury, metadata) = coin::create_currency(witness, + 9, + b"my_coin", + b"my_coin", + b"zhaojune1's coin", + option::none(), + ctx); + + //冻结 + transfer::public_freeze_object(metadata); + //将管理权限转给sender + transfer::public_transfer(treasury, ctx.sender()); + } + + //铸币并转账 + public fun mint_and_tansfer( + treasury_cap: &mut TreasuryCap, + amount: u64, + recipient: address, + ctx: &mut TxContext + ) { + let coin = coin::mint(treasury_cap, amount, ctx); + transfer::public_transfer(coin, recipient); + } + +} \ No newline at end of file diff --git a/mover/zhaojune1/code/task2/my_coin/tests/my_coin_tests.move b/mover/zhaojune1/code/task2/my_coin/tests/my_coin_tests.move new file mode 100644 index 000000000..cd5b36060 --- /dev/null +++ b/mover/zhaojune1/code/task2/my_coin/tests/my_coin_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module my_coin::my_coin_tests; +// uncomment this line to import the module +// use my_coin::my_coin; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_my_coin() { + // pass +} + +#[test, expected_failure(abort_code = ::my_coin::my_coin_tests::ENotImplemented)] +fun test_my_coin_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zhaojune1/readme.md b/mover/zhaojune1/readme.md index 13cbd5b67..0ed98ee63 100644 --- a/mover/zhaojune1/readme.md +++ b/mover/zhaojune1/readme.md @@ -19,11 +19,11 @@ - [x] package id 在 scan上的查看截图:![Scan截图](./images/Scan.png) ## 02 move coin -- [] My Coin package id : -- [] Faucet package id : -- [] 转账 `My Coin` hash: -- [] `Faucet Coin` address1 mint hash: -- [] `Faucet Coin` address2 mint hash: +- [x] My Coin package id : 0xfbf7f26698915c0bf3e97a31fcdbc6bffcbb95d1ca8fdd4e43db333353df4cac +- [x] Faucet package id : 0xf15f8bed24e795ae72d87a5de55beb55bebbe4c5df4db77a6286b71724505f9d +- [x] 转账 `My Coin` hash: 8CmjbtYFed7AsfZY3bDB1DN8RHk5fGw9u6wvn1EHtuFm +- [x] `Faucet Coin` address1 mint hash: HpSEvZAR9DaVAHEdfZ65Gjz3dNSH2CmDH1E3eZHECR48 +- [x] `Faucet Coin` address2 mint hash: BJJkiQLexSC1egJPiyy8UudrYMMKSH4ntkf5CnKEnpuo ## 03 move NFT - [x] nft package id : 0x5a5dbfca8a0ba4f6813de47c0e4b84f9927214625f400079f0dfc3b41c6f1a44 diff --git a/mover/zrr1999/code/task6/package-lock.json b/mover/zrr1999/code/task6/package-lock.json new file mode 100644 index 000000000..82cfb07f4 --- /dev/null +++ b/mover/zrr1999/code/task6/package-lock.json @@ -0,0 +1,2628 @@ +{ + "name": "task6", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "task6", + "dependencies": { + "navi-sdk": "^1.1.15", + "task6": "file:" + }, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.8.tgz", + "integrity": "sha512-8BG6woLtDMvXB9Ajb/uE+Zr/U7y4qJ3upXi0JQHZmsKUJa7HjF/gFvmL2f3/mSmfZoQGRr9VoY97LCX2uaFMzA==", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.14.tgz", + "integrity": "sha512-0FoG2EkXxTY+++dKggmBkwY/skAE5dW2yqt4abHF0zrbCId4WreoFfhoTQT82FeD6gbkYe5FGrcn1x9SjnO77g==", + "dependencies": { + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@digitak/grubber": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", + "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gql.tada/cli-utils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.6.2.tgz", + "integrity": "sha512-P4bOOayf6zR/uRWHmVyRz8auiuOzNmq8C0YFQbhj5TGGgHr5kkVI2ZIrplWsJqCBTYzpZEYzaxa9iGP6vuKA9Q==", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/internal": "1.0.8", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/svelte-support": "1.0.1", + "@gql.tada/vue-support": "1.0.1", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@gql.tada/svelte-support": { + "optional": true + }, + "@gql.tada/vue-support": { + "optional": true + } + } + }, + "node_modules/@gql.tada/internal": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@mysten/bcs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-1.0.4.tgz", + "integrity": "sha512-6JoQi59GN/dVEBCNq8Rj4uOR0niDrJqDx/2gNQWXANwJakHIGH0AMniHrXP41B2dF+mZ3HVmh9Hi3otiEVQTrQ==", + "dependencies": { + "bs58": "^6.0.0" + } + }, + "node_modules/@mysten/sui": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@mysten/sui/-/sui-1.9.0.tgz", + "integrity": "sha512-AcnwVK7ro8+GWAp/vz0V35naS1/PD1FkYlH6rglupKWvVIpnmEBgjr+XE7U4LvtAyoXPiE4uj/MhXLIx5rZuzw==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "1.0.4", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@scure/bip32": "^1.4.0", + "@scure/bip39": "^1.3.0", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.8.2", + "graphql": "^16.9.0", + "tweetnacl": "^1.0.3", + "valibot": "^0.36.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@mysten/sui.js": { + "version": "0.54.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.54.1.tgz", + "integrity": "sha512-TSmGIX7U9O/uS9EKIQdv7/S69KTbBhMJVelXCafJE6IJw8iB9cN9uLu0+uklkBSDrbRmLSEY70jMr3uRFjReIg==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.7.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@mysten/sui.js/node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@mysten/sui.js/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@mysten/sui.js/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@pythnetwork/price-service-client": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz", + "integrity": "sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==", + "deprecated": "This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead.", + "dependencies": { + "@pythnetwork/price-service-sdk": "*", + "@types/ws": "^8.5.3", + "axios": "^1.5.1", + "axios-retry": "^3.8.0", + "isomorphic-ws": "^4.0.1", + "ts-log": "^2.2.4", + "ws": "^8.6.0" + } + }, + "node_modules/@pythnetwork/price-service-sdk": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz", + "integrity": "sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ==", + "dependencies": { + "bn.js": "^5.2.1" + } + }, + "node_modules/@pythnetwork/pyth-sui-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/pyth-sui-js/-/pyth-sui-js-2.1.0.tgz", + "integrity": "sha512-oSfpqtLATTEVaac/YbaRQBvOI7DM+Qds5O0GJjEcky7UQRtz/tlU9tjQ6VRn3vm8IXw8P1mKzJcaTIO134X9Sw==", + "dependencies": { + "@mysten/sui": "^1.3.0", + "@pythnetwork/price-service-client": "1.9.0", + "buffer": "^6.0.3" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", + "integrity": "sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", + "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", + "dependencies": { + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.8" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@suchipi/femver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" + }, + "node_modules/@types/bun": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.1.9.tgz", + "integrity": "sha512-SXJRejXpmAc3qxyN/YS4/JGWEzLf4dDBa5fLtRDipQXHqNccuMU4EUYCooXNTsylG0DmwFQsGgEDHxZF+3DqRw==", + "dev": true, + "dependencies": { + "bun-types": "1.1.27" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/node": { + "version": "20.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz", + "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "dependencies": { + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dependencies": { + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-retry": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.9.1.tgz", + "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bun-types": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.27.tgz", + "integrity": "sha512-rHXAiIDefeMS/fleNM1rRDYqolJGNRdch3+AuCRwcZWaqTa1vjGBNsahH/HVV7Y82frllYhJomCVSEiHzLzkgg==", + "dev": true, + "dependencies": { + "@types/node": "~20.12.8", + "@types/ws": "~8.5.10" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/esrun": { + "version": "3.2.26", + "resolved": "https://registry.npmjs.org/esrun/-/esrun-3.2.26.tgz", + "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "dependencies": { + "@digitak/grubber": "^3.1.4", + "chokidar": "^3.5.1", + "esbuild": "^0.17.4" + }, + "bin": { + "esrun": "bin.js" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gql.tada": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.7.tgz", + "integrity": "sha512-ixqMvH5jRs5wxe5liNoaG1TA9NfA+kAz8QzfT0xrzcKARJOVC7MednVhxyhY1RDgZH8mNfChK3ti8cIcd9cuuw==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@0no-co/graphqlsp": "^1.12.13", + "@gql.tada/cli-utils": "1.6.2", + "@gql.tada/internal": "1.0.8" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/navi-sdk": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/navi-sdk/-/navi-sdk-1.3.2.tgz", + "integrity": "sha512-ODsJS6BOcgVT3vjDAnbMLPorcG4mljFRVOGB30ZjRPow/3shLpmiQ+jGfaEKu7b6xd4ojYRyykYLpAF7/QLzUg==", + "dependencies": { + "@mysten/sui": "^1.8.0", + "@mysten/sui.js": "^0.54.1", + "@pythnetwork/pyth-sui-js": "^2.1.0", + "axios": "^1.7.7", + "esrun": "^3.2.26", + "tsconfig-paths": "^4.2.0", + "vitest": "^1.6.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dependencies": { + "js-tokens": "^9.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/task6": { + "resolved": "", + "link": true + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-log": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", + "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==" + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/valibot": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==" + }, + "node_modules/vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitest": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "dependencies": { + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/mover/zrr1999/code/task6/package.json b/mover/zrr1999/code/task6/package.json index 6b84eb292..95e7e2e0c 100644 --- a/mover/zrr1999/code/task6/package.json +++ b/mover/zrr1999/code/task6/package.json @@ -9,6 +9,7 @@ "typescript": "^5.0.0" }, "dependencies": { - "navi-sdk": "^1.1.15" + "navi-sdk": "^1.1.15", + "task6": "file:" } -} \ No newline at end of file +} diff --git a/mover/zyf1000001001/co-learn-2411/images/readme.md b/mover/zyf1000001001/co-learn-2411/images/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/zyf1000001001/co-learn-2411/project/readme.md b/mover/zyf1000001001/co-learn-2411/project/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/zyf1000001001/co-learn-2411/project/readme.md @@ -0,0 +1 @@ + diff --git a/mover/zyf1000001001/co-learn-2411/readme.md b/mover/zyf1000001001/co-learn-2411/readme.md new file mode 100644 index 000000000..9b3eccb1d --- /dev/null +++ b/mover/zyf1000001001/co-learn-2411/readme.md @@ -0,0 +1,54 @@ +# 这个模板是2024年11月份的共学营才需要的 + +## b站,推特关注 + +- [] b站,推特关注截图: ![关注截图](./images/你的图片地址) + +## 为共学营宣传(在朋友圈或者群聊中转发海报/文章) + +- [] 宣传截图:![宣传截图](./images/你的图片地址) + +## 每周课程学习 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 参加直播答疑 + +- [] 第一周:![学习记录截图](./images/你的图片地址) +- [] 第二周:![学习记录截图](./images/你的图片地址) +- [] 第三周:![学习记录截图](./images/你的图片地址) +- [] 第四周:![学习记录截图](./images/你的图片地址) + +## 群里分享学习笔记 + +- [] 第一篇笔记 +- [] 第二篇笔记 +- [] 第三篇笔记 +- [] 第四篇笔记 + +## 对外输出学习笔记 + +- [] 第一篇笔记【学习笔记链接】 +- [] 第二篇笔记【学习笔记链接】 +- [] 第三篇笔记【学习笔记链接】 +- [] 第四篇笔记【学习笔记链接】 + +## 在HOH社区公众号发布自己的技术文章 + +- [] 第一篇笔记【公众号文章链接】 +- [] 第二篇笔记【公众号文章链接】 +- [] 第三篇笔记【公众号文章链接】 +- [] 第四篇笔记【公众号文章链接】 + +## 直播分享学习技巧/工具推荐 + +- [] 会议截图:![会议记录截图](./images/你的图片地址) + +## 提交项目 + +- [] 项目提交![项目截图](./images/你的图片地址) + + diff --git a/mover/zyf1000001001/code/readme.md b/mover/zyf1000001001/code/readme.md new file mode 100644 index 000000000..e69de29bb diff --git a/mover/zyf1000001001/code/task1/hollo_move/Move.lock b/mover/zyf1000001001/code/task1/hollo_move/Move.lock new file mode 100644 index 000000000..e4c8cfd7a --- /dev/null +++ b/mover/zyf1000001001/code/task1/hollo_move/Move.lock @@ -0,0 +1,34 @@ +# @generated by Move, please check-in and do not edit manually. + +[move] +version = 3 +manifest_digest = "E96DF8A05A54F68F56989B297A41D0E1369A865B82DFC39D7C315144D92EE097" +deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082" +dependencies = [ + { id = "Sui", name = "Sui" }, +] + +[[move.package]] +id = "MoveStdlib" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" } + +[[move.package]] +id = "Sui" +source = { git = "https://gitee.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" } + +dependencies = [ + { id = "MoveStdlib", name = "MoveStdlib" }, +] + +[move.toolchain-version] +compiler-version = "1.37.1" +edition = "2024.beta" +flavor = "sui" + +[env] + +[env.testnet] +chain-id = "4c78adac" +original-published-id = "0xa2a3c33da333c2a0ab65cc6651854c5daf6456077ad6908d2d781577b5d14f90" +latest-published-id = "0xa2a3c33da333c2a0ab65cc6651854c5daf6456077ad6908d2d781577b5d14f90" +published-version = "1" diff --git a/mover/zyf1000001001/code/task1/hollo_move/Move.toml b/mover/zyf1000001001/code/task1/hollo_move/Move.toml new file mode 100644 index 000000000..b3b957bd2 --- /dev/null +++ b/mover/zyf1000001001/code/task1/hollo_move/Move.toml @@ -0,0 +1,37 @@ +[package] +name = "hollo_move" +edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move +# license = "" # e.g., "MIT", "GPL", "Apache 2.0" +# authors = ["..."] # e.g., ["Joe Smith (joesmith@noemail.com)", "John Snow (johnsnow@noemail.com)"] + +[dependencies] +Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + +# For remote import, use the `{ git = "...", subdir = "...", rev = "..." }`. +# Revision can be a branch, a tag, and a commit hash. +# MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" } + +# For local dependencies use `local = path`. Path is relative to the package root +# Local = { local = "../path/to" } + +# To resolve a version conflict and force a specific version for dependency +# override use `override = true` +# Override = { local = "../conflicting/version", override = true } + +[addresses] +hollo_move = "0x0" + +# Named addresses will be accessible in Move as `@name`. They're also exported: +# for example, `std = "0x1"` is exported by the Standard Library. +# alice = "0xA11CE" + +[dev-dependencies] +# The dev-dependencies section allows overriding dependencies for `--test` and +# `--dev` modes. You can introduce test-only dependencies here. +# Local = { local = "../path/to/dev-build" } + +[dev-addresses] +# The dev-addresses section allows overwriting named addresses for the `--test` +# and `--dev` modes. +# alice = "0xB0B" + diff --git a/mover/zyf1000001001/code/task1/hollo_move/sources/hollo_move.move b/mover/zyf1000001001/code/task1/hollo_move/sources/hollo_move.move new file mode 100644 index 000000000..6036719f7 --- /dev/null +++ b/mover/zyf1000001001/code/task1/hollo_move/sources/hollo_move.move @@ -0,0 +1,19 @@ +module hollo_move::hello ; + +use std::ascii::{String, string}; +use sui::object::{Self, UID}; +use sui::transfer::transfer; +use sui::tx_context::{TxContext}; + +public struct Hello has key { + id: UID, + say: String +} + +fun init(ctx: &mut TxContext) { + let hello_move = Hello { + id: object::new(ctx), + say: string(b"zyf1000001001"), + }; + transfer(hello_move, ctx.sender()); +} \ No newline at end of file diff --git a/mover/zyf1000001001/code/task1/hollo_move/tests/hollo_move_tests.move b/mover/zyf1000001001/code/task1/hollo_move/tests/hollo_move_tests.move new file mode 100644 index 000000000..f4e75ed03 --- /dev/null +++ b/mover/zyf1000001001/code/task1/hollo_move/tests/hollo_move_tests.move @@ -0,0 +1,18 @@ +/* +#[test_only] +module hollo_move::hollo_move_tests; +// uncomment this line to import the module +// use hollo_move::hollo_move; + +const ENotImplemented: u64 = 0; + +#[test] +fun test_hollo_move() { + // pass +} + +#[test, expected_failure(abort_code = ::hollo_move::hollo_move_tests::ENotImplemented)] +fun test_hollo_move_fail() { + abort ENotImplemented +} +*/ diff --git a/mover/zyf1000001001/images/WX20241106-194534.png b/mover/zyf1000001001/images/WX20241106-194534.png new file mode 100644 index 000000000..b736bfc66 Binary files /dev/null and b/mover/zyf1000001001/images/WX20241106-194534.png differ diff --git a/mover/zyf1000001001/images/WX20241106-195347.png b/mover/zyf1000001001/images/WX20241106-195347.png new file mode 100644 index 000000000..306b6ec29 Binary files /dev/null and b/mover/zyf1000001001/images/WX20241106-195347.png differ diff --git a/mover/zyf1000001001/notes/readme.md b/mover/zyf1000001001/notes/readme.md new file mode 100644 index 000000000..35f753590 --- /dev/null +++ b/mover/zyf1000001001/notes/readme.md @@ -0,0 +1,12 @@ +## move 学习 +### 第一课 +1. 了解 move 的特性和 sui 环境安装,创建 sui 钱包 +2. 初始化sui 本地的 move 项目 +3. 学习 hellomove的编译并发布到 sui 的测试网 + - 初始化项目 sui move new 项目名 + - sources 目录下是代码 + - Move.toml中的name = "hollo_move" 需要与代码中的module hollo_move 保持一致 + - 发布使用 sui move publish 如果下载失败可能是 git 仓库问题可以换成 gitee 的 [dependencies] + Sui = { git = "https://gitee.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" } + - 发布成功后 可以在 sui 测试网上看到相关的区块信息 +4. 疑问? 编译之后生成了 Move.lock 文件,这个文件是啥? \ No newline at end of file diff --git a/mover/zyf1000001001/readme.md b/mover/zyf1000001001/readme.md new file mode 100644 index 000000000..304f61c60 --- /dev/null +++ b/mover/zyf1000001001/readme.md @@ -0,0 +1,54 @@ +## 基本信息 +- Sui钱包地址: `0x5f0a5bd4bfa12c31fdb379e7b2be921822786a129e12369a8b45f31c11ba4671` +> 首次参与需要完成第一个任务注册好钱包地址才被合并,并且后续学习奖励会打入这个地址 +- github: `zyf1000001001` + +## 个人简介 +- 工作经验: 5年+ +- 技术栈: `java` +> 重要提示 请认真写自己的简介 +- 多年 java 开发经验,前段时间在学习 solidity,公司刚好也有web3的方向,了解到 move,想学习下 move继续了解区块链知识,然后投入 dapp开发 +- 联系方式: tel: `18137102303` + +## 任务 + +## 01 hello move +- [x] Sui cli version: sui 1.37.1-homebrew +- [x] Sui钱包截图: ![Sui钱包截图](./images/WX20241106-194534.png)) +- [x] package id: 0xa2a3c33da333c2a0ab65cc6651854c5daf6456077ad6908d2d781577b5d14f90 +- [x] package id 在 scan上的查看截图:![Scan截图](./images/WX20241106-195347.png)) + +## 02 move coin +- [] My Coin package id : +- [] Faucet package id : +- [] 转账 `My Coin` hash: +- [] `Faucet Coin` address1 mint hash: +- [] `Faucet Coin` address2 mint hash: + +## 03 move NFT +- [] nft package id : +- [] nft object id : +- [] 转账 nft hash: +- [] scan上的NFT截图:![Scan截图](./images/你的图片地址) + +## 04 Move Game +- [] game package id : +- [] deposit Coin hash: +- [] withdraw `Coin` hash: +- [] play game hash: + +## 05 Move Swap +- [] swap package id : +- [] call swap CoinA-> CoinB hash : +- [] call swap CoinB-> CoinA hash : + +## 06 Dapp-kit SDK PTB +- [] save hash : + +## 07 Move CTF Check In +- [] CLI call 截图 : ![截图](./images/你的图片地址) +- [] flag hash : + +## 08 Move CTF Lets Move +- [] proof : +- [] flag hash : diff --git a/mover/zyf1000001001/scan/readme.md b/mover/zyf1000001001/scan/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/mover/zyf1000001001/scan/readme.md @@ -0,0 +1 @@ +