From 31cfaf68c3b517852bbd88d629cbf7c8d49eed45 Mon Sep 17 00:00:00 2001 From: GM-11 Date: Mon, 9 Sep 2024 06:06:37 +0000 Subject: [PATCH 1/4] chore: forge init --- crowdfunding-dapp/.github/workflows/test.yml | 45 +++++++++++++ crowdfunding-dapp/.gitignore | 14 +++++ crowdfunding-dapp/README.md | 66 ++++++++++++++++++++ crowdfunding-dapp/foundry.toml | 6 ++ crowdfunding-dapp/script/Counter.s.sol | 19 ++++++ crowdfunding-dapp/src/Counter.sol | 14 +++++ crowdfunding-dapp/test/Counter.t.sol | 24 +++++++ 7 files changed, 188 insertions(+) create mode 100644 crowdfunding-dapp/.github/workflows/test.yml create mode 100644 crowdfunding-dapp/.gitignore create mode 100644 crowdfunding-dapp/README.md create mode 100644 crowdfunding-dapp/foundry.toml create mode 100644 crowdfunding-dapp/script/Counter.s.sol create mode 100644 crowdfunding-dapp/src/Counter.sol create mode 100644 crowdfunding-dapp/test/Counter.t.sol diff --git a/crowdfunding-dapp/.github/workflows/test.yml b/crowdfunding-dapp/.github/workflows/test.yml new file mode 100644 index 00000000..762a2966 --- /dev/null +++ b/crowdfunding-dapp/.github/workflows/test.yml @@ -0,0 +1,45 @@ +name: CI + +on: + push: + pull_request: + workflow_dispatch: + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Show Forge version + run: | + forge --version + + - name: Run Forge fmt + run: | + forge fmt --check + id: fmt + + - name: Run Forge build + run: | + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test diff --git a/crowdfunding-dapp/.gitignore b/crowdfunding-dapp/.gitignore new file mode 100644 index 00000000..85198aaa --- /dev/null +++ b/crowdfunding-dapp/.gitignore @@ -0,0 +1,14 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env diff --git a/crowdfunding-dapp/README.md b/crowdfunding-dapp/README.md new file mode 100644 index 00000000..9265b455 --- /dev/null +++ b/crowdfunding-dapp/README.md @@ -0,0 +1,66 @@ +## Foundry + +**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** + +Foundry consists of: + +- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). +- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. +- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. +- **Chisel**: Fast, utilitarian, and verbose solidity REPL. + +## Documentation + +https://book.getfoundry.sh/ + +## Usage + +### Build + +```shell +$ forge build +``` + +### Test + +```shell +$ forge test +``` + +### Format + +```shell +$ forge fmt +``` + +### Gas Snapshots + +```shell +$ forge snapshot +``` + +### Anvil + +```shell +$ anvil +``` + +### Deploy + +```shell +$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +``` + +### Cast + +```shell +$ cast +``` + +### Help + +```shell +$ forge --help +$ anvil --help +$ cast --help +``` diff --git a/crowdfunding-dapp/foundry.toml b/crowdfunding-dapp/foundry.toml new file mode 100644 index 00000000..25b918f9 --- /dev/null +++ b/crowdfunding-dapp/foundry.toml @@ -0,0 +1,6 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/crowdfunding-dapp/script/Counter.s.sol b/crowdfunding-dapp/script/Counter.s.sol new file mode 100644 index 00000000..cdc1fe9a --- /dev/null +++ b/crowdfunding-dapp/script/Counter.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console} from "forge-std/Script.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterScript is Script { + Counter public counter; + + function setUp() public {} + + function run() public { + vm.startBroadcast(); + + counter = new Counter(); + + vm.stopBroadcast(); + } +} diff --git a/crowdfunding-dapp/src/Counter.sol b/crowdfunding-dapp/src/Counter.sol new file mode 100644 index 00000000..aded7997 --- /dev/null +++ b/crowdfunding-dapp/src/Counter.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +contract Counter { + uint256 public number; + + function setNumber(uint256 newNumber) public { + number = newNumber; + } + + function increment() public { + number++; + } +} diff --git a/crowdfunding-dapp/test/Counter.t.sol b/crowdfunding-dapp/test/Counter.t.sol new file mode 100644 index 00000000..54b724f7 --- /dev/null +++ b/crowdfunding-dapp/test/Counter.t.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Test, console} from "forge-std/Test.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterTest is Test { + Counter public counter; + + function setUp() public { + counter = new Counter(); + counter.setNumber(0); + } + + function test_Increment() public { + counter.increment(); + assertEq(counter.number(), 1); + } + + function testFuzz_SetNumber(uint256 x) public { + counter.setNumber(x); + assertEq(counter.number(), x); + } +} From 4e9f26521e93bf6ac8eb1485095cab2e724dae7d Mon Sep 17 00:00:00 2001 From: GM-11 Date: Mon, 9 Sep 2024 06:06:39 +0000 Subject: [PATCH 2/4] forge install: forge-std v1.9.2 --- .gitmodules | 3 +++ crowdfunding-dapp/lib/forge-std | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 crowdfunding-dapp/lib/forge-std diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..936ebb4f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "crowdfunding-dapp/lib/forge-std"] + path = crowdfunding-dapp/lib/forge-std + url = https://github.com/foundry-rs/forge-std diff --git a/crowdfunding-dapp/lib/forge-std b/crowdfunding-dapp/lib/forge-std new file mode 160000 index 00000000..1714bee7 --- /dev/null +++ b/crowdfunding-dapp/lib/forge-std @@ -0,0 +1 @@ +Subproject commit 1714bee72e286e73f76e320d110e0eaf5c4e649d From c575569421937ae3496c2f2a2ff1c75763685004 Mon Sep 17 00:00:00 2001 From: GM-11 Date: Mon, 16 Sep 2024 06:33:21 +0000 Subject: [PATCH 3/4] added tutorial 8 --- 07-NFT Minitng dApp on Core/README.md | 2 +- .../.github/workflows/test.yml | 0 .../.gitignore | 0 08-Crowdfunding dApp on Core/README.md | 406 +++++ 08-Crowdfunding dApp on Core/deploy.sh | 1 + .../foundry.toml | 0 .../frontend/.gitignore | 24 + .../frontend/README.md | 50 + .../frontend/index.html | 13 + .../frontend/package.json | 31 + .../frontend/public/vite.svg | 1 + .../frontend/src/App.tsx | 117 ++ .../frontend/src/Campaign.tsx | 77 + .../frontend/src/abis/Campaign.json | 207 +++ .../frontend/src/abis/CampaignFactory.json | 176 ++ .../frontend/src/assets/react.svg | 1 + .../frontend/src/index.css | 0 .../frontend/src/index.d.ts | 7 + .../frontend/src/main.tsx | 20 + .../frontend/src/vite-env.d.ts | 1 + .../frontend/tsconfig.app.json | 24 + .../frontend/tsconfig.json | 7 + .../frontend/tsconfig.node.json | 22 + .../frontend/vite.config.ts | 7 + .../frontend/yarn.lock | 1613 +++++++++++++++++ .../images/campaign-lists.PNG | Bin 0 -> 21546 bytes .../images/connect-wallet.PNG | Bin 0 -> 22929 bytes .../images/create-frontend.PNG | Bin 0 -> 33848 bytes .../images/create-new-campaign.PNG | Bin 0 -> 47474 bytes .../images/deploy.PNG | Bin 0 -> 18997 bytes .../images/donating-to-campaign.PNG | Bin 0 -> 40772 bytes .../images/folder-sructure.PNG | Bin 0 -> 3949 bytes .../images/forge-build.PNG | Bin 0 -> 14948 bytes .../images/forge-init.PNG | Bin 0 -> 35841 bytes .../images/forge-test.PNG | Bin 0 -> 27392 bytes .../images/foundryup.PNG | Bin 0 -> 48927 bytes .../images/home-after-connect-wallet.PNG | Bin 0 -> 24378 bytes .../images/withdraw-received.PNG | Bin 0 -> 15990 bytes .../lib/forge-std | 0 08-Crowdfunding dApp on Core/src/Campaign.sol | 25 + .../src/CampaignFactory.sol | 20 + .../src/Counter.sol | 0 .../test/CampaignFactory.t.sol | 35 + crowdfunding-dapp/README.md | 66 - crowdfunding-dapp/script/Counter.s.sol | 19 - crowdfunding-dapp/test/Counter.t.sol | 24 - 46 files changed, 2886 insertions(+), 110 deletions(-) rename {crowdfunding-dapp => 08-Crowdfunding dApp on Core}/.github/workflows/test.yml (100%) rename {crowdfunding-dapp => 08-Crowdfunding dApp on Core}/.gitignore (100%) create mode 100644 08-Crowdfunding dApp on Core/README.md create mode 100755 08-Crowdfunding dApp on Core/deploy.sh rename {crowdfunding-dapp => 08-Crowdfunding dApp on Core}/foundry.toml (100%) create mode 100644 08-Crowdfunding dApp on Core/frontend/.gitignore create mode 100644 08-Crowdfunding dApp on Core/frontend/README.md create mode 100644 08-Crowdfunding dApp on Core/frontend/index.html create mode 100644 08-Crowdfunding dApp on Core/frontend/package.json create mode 100644 08-Crowdfunding dApp on Core/frontend/public/vite.svg create mode 100644 08-Crowdfunding dApp on Core/frontend/src/App.tsx create mode 100644 08-Crowdfunding dApp on Core/frontend/src/Campaign.tsx create mode 100644 08-Crowdfunding dApp on Core/frontend/src/abis/Campaign.json create mode 100644 08-Crowdfunding dApp on Core/frontend/src/abis/CampaignFactory.json create mode 100644 08-Crowdfunding dApp on Core/frontend/src/assets/react.svg create mode 100644 08-Crowdfunding dApp on Core/frontend/src/index.css create mode 100644 08-Crowdfunding dApp on Core/frontend/src/index.d.ts create mode 100644 08-Crowdfunding dApp on Core/frontend/src/main.tsx create mode 100644 08-Crowdfunding dApp on Core/frontend/src/vite-env.d.ts create mode 100644 08-Crowdfunding dApp on Core/frontend/tsconfig.app.json create mode 100644 08-Crowdfunding dApp on Core/frontend/tsconfig.json create mode 100644 08-Crowdfunding dApp on Core/frontend/tsconfig.node.json create mode 100644 08-Crowdfunding dApp on Core/frontend/vite.config.ts create mode 100644 08-Crowdfunding dApp on Core/frontend/yarn.lock create mode 100644 08-Crowdfunding dApp on Core/images/campaign-lists.PNG create mode 100644 08-Crowdfunding dApp on Core/images/connect-wallet.PNG create mode 100644 08-Crowdfunding dApp on Core/images/create-frontend.PNG create mode 100644 08-Crowdfunding dApp on Core/images/create-new-campaign.PNG create mode 100644 08-Crowdfunding dApp on Core/images/deploy.PNG create mode 100644 08-Crowdfunding dApp on Core/images/donating-to-campaign.PNG create mode 100644 08-Crowdfunding dApp on Core/images/folder-sructure.PNG create mode 100644 08-Crowdfunding dApp on Core/images/forge-build.PNG create mode 100644 08-Crowdfunding dApp on Core/images/forge-init.PNG create mode 100644 08-Crowdfunding dApp on Core/images/forge-test.PNG create mode 100644 08-Crowdfunding dApp on Core/images/foundryup.PNG create mode 100644 08-Crowdfunding dApp on Core/images/home-after-connect-wallet.PNG create mode 100644 08-Crowdfunding dApp on Core/images/withdraw-received.PNG rename {crowdfunding-dapp => 08-Crowdfunding dApp on Core}/lib/forge-std (100%) create mode 100644 08-Crowdfunding dApp on Core/src/Campaign.sol create mode 100644 08-Crowdfunding dApp on Core/src/CampaignFactory.sol rename {crowdfunding-dapp => 08-Crowdfunding dApp on Core}/src/Counter.sol (100%) create mode 100644 08-Crowdfunding dApp on Core/test/CampaignFactory.t.sol delete mode 100644 crowdfunding-dapp/README.md delete mode 100644 crowdfunding-dapp/script/Counter.s.sol delete mode 100644 crowdfunding-dapp/test/Counter.t.sol diff --git a/07-NFT Minitng dApp on Core/README.md b/07-NFT Minitng dApp on Core/README.md index 7dd42c62..fe727692 100644 --- a/07-NFT Minitng dApp on Core/README.md +++ b/07-NFT Minitng dApp on Core/README.md @@ -384,7 +384,7 @@ But wait, why can't we see it?๐Ÿค” ![img](./assets/pic10.png) -Well since this NFT is on the testnet, metamask automatically does not detect them. We need to import our NFT into our wallet. +Well since this NFT is on the testnet, metamask automatically does not detect them. We need to import our NFT into our wallet.a Cick on `Import NFT` at the bottom. Add your contract address in the **Address** input field and 0 in the **Token Id** input field and click on **Import**. diff --git a/crowdfunding-dapp/.github/workflows/test.yml b/08-Crowdfunding dApp on Core/.github/workflows/test.yml similarity index 100% rename from crowdfunding-dapp/.github/workflows/test.yml rename to 08-Crowdfunding dApp on Core/.github/workflows/test.yml diff --git a/crowdfunding-dapp/.gitignore b/08-Crowdfunding dApp on Core/.gitignore similarity index 100% rename from crowdfunding-dapp/.gitignore rename to 08-Crowdfunding dApp on Core/.gitignore diff --git a/08-Crowdfunding dApp on Core/README.md b/08-Crowdfunding dApp on Core/README.md new file mode 100644 index 00000000..b011c8ea --- /dev/null +++ b/08-Crowdfunding dApp on Core/README.md @@ -0,0 +1,406 @@ +# Building Crowdfunding DApp on Core + +Welcome to this tutorial where we will build a simple Crowdfunding DApp on Core Blockchain from scratch. We will make a basic DApp where you will be able to create campaigns and contribute to them. By the end of the tutorial, we will have a functional dapp that interacts with smart contracts on the Core Blockchain Testnet. Letโ€™s start๐Ÿ™Œ + +## Learning Takeaways + +- Smart Contract Development in Solidity programming language +- Building frontend using React.js +- Using Ethers.js library for interaction of frontend with smart contracts +- Integrating Metamask wallet for secure user transactions +- Read and write data to/from smart contracts + +## Software Prerequisites + +- [Git](https://git-scm.com/) +- [Node.js](https://nodejs.org/en) v20.13.1 +- [Yarn](https://yarnpkg.com/) v1.22.21 +- [Foundry](https://book.getfoundry.sh/getting-started/installation) +- [Metamask Wallet](https://metamask.io/download/) +- **Core Testnet Configuration**: Configure MetaMask to connect to the Core Testnet. Refer here for more details. + - **Network Name**: Core Testnet + - **New RPC URL**: [https://rpc.test.btcs.network](https://rpc.test.btcs.network) + - **Chain ID**: 1115 + - **Currency Symbol**: CORE +- **Core Faucet**: To get test CORE tokens for transactions, visit the Core Faucet, refer [here](https://docs.coredao.org/docs/Dev-Guide/core-faucet) for more details. + +## Setting up Dev Environment + +### 1. Initialize project + +We will create a new project with the name `crowdfunding-dapp`. + +```bash +forge init crowdfunding-dapp +``` + +![img](./images/forge-init.png) + +### 2. Writing Smart Contracts + +Now navigate to the project directory and create a new Solidity file called `Campaign.sol` in the `src` directory. + +```js +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +contract Campaign { + address public owner; + string public title; + string public description; + + constructor(string memory _title, string memory _description) { + owner = msg.sender; + title = _title; + description = _description; + } + + function contribute() public payable { + require(msg.value > 0, "Contribution must be greater than 0"); + (bool success, ) = payable(address(this)).call{value: msg.value}(""); + require(success, "Failed to send funds"); + } + + function withdraw() public payable { + require(msg.sender == owner, "Only owner can withdraw funds"); + payable(msg.sender).transfer(address(this).balance); + } +} + +``` + +In this contract, we: + +- Define a contract named `Campaign` +- Declare state variables for the campaign's owner, title, and description +- Implement a constructor to initialize the campaign with a title and description +- Implement a `contribute` function that allows users to contribute to the campaign by sending ETH +- Implement a `withdraw` function that allows the campaign owner to withdraw the funds raised + +Now create another file called `CampaignFactory.sol` in the `src` directory. + +```js +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import "./Campaign.sol"; + +contract CampaignFactory { + address[] public campaigns; + + function createCampaign(string memory title, string memory description) public { + Campaign newCampaign = new Campaign(title, description); + campaigns.push(address(newCampaign)); + } + + function getCampaigns() public view returns (address[] memory) { + return campaigns; + } +} +``` + +In this contract, we: + +- Define a contract named `CampaignFactory` +- Implement a `createCampaign` function that creates a new `Campaign` contract and adds its address to the `campaigns` array +- Implement a `getCampaigns` function that returns all the addresses of the created campaigns. + +Now let's build our smart contracts to make sure there are no errors. + +![img](./images/forge-build.png) + +We can also test our smart contracts using Foundry. Create a new file called `CampaignFactory.t.sol` in the `test` directory. + +```js +/// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import {Test, console} from "../forge-std/Test.sol"; + +contract CampaignFactoryTest is Test { + CampaignFactory public campaignFactory; + + function setUp() public { + campaignFactory = new CampaignFactory(); + } + + function test_CreateCampaign() public { + campaignFactory.createCampaign( + "Test Campaign", + "This is a test campaign" + ); + } + + function test_GetCampaigns() public { + campaignFactory.createCampaign( + "Test Campaign", + "This is a test campaign" + ); + campaignFactory.createCampaign( + "Test Campaign", + "This is a test campaign" + ); + + address[] memory campaigns = campaignFactory.getCampaigns(); + assertEq(campaigns.length, 2); + assertEq(campaigns[0], address(campaigns[0])); + assertEq(campaigns[1], address(campaigns[1])); + } +} +``` + +![img](./images/forge-test.png) + +Perfect, our smart contracts are working perfectly. Now let's deploy them to the Core Testnet. + +```bash +forge create --rpc-url https://rpc.test.btcs.network --legacy ./src/CampaignFactory.sol:CampaignFactory --private-key +``` + +![img](./images/forge-deploy.png) + +### 3. Writing Frontend + +Perfect, our smart contract are working perfectly. Now let's build our frontend. +Run the `yarn create vite frontend` command and select `React` and `Typescript` for the project. + +![img](./images/create-frontend.PNG) + +And then run these commands to install the dependencies. + +```bash +cd frontend +yarn add ethers react-router-dom +``` + +Now let's write code to connect our metamask wallet in the `App.tsx` file. + +```js +import { ethers } from 'ethers' +import { useState, useEffect } from 'react' + +const contractAddress = "0x5FbDB2315678afecb367f032d93F642f64180aa3"; // replace your contract address + +function App() { + const [walletAddress, setWalletAddress] = useState(""); + + + async function connectWallet() { + const { ethereum } = window; + if (!ethereum) { + alert("Please install MetaMask!"); + return; + } + + try { + const [account] = await ethereum.request({ + method: "eth_requestAccounts", + }); + setWalletAddress(account); + } catch (error) { + console.log("Error fetching network:", error); + } + } + useEffect(() => { + connectWallet(); + }, []); + + + return ( +
+ { + walletAddress ? ( +

+ Connected Address: {walletAddress} + +

+ ) : ( +

Please connect your wallet

+ ) + } +
+ ) +} + +export default App + +``` + +Now run `yarn dev` command in the frontend directory, open the app in your browser on `http://localhost:5173`. You should see your metamaks wallet prompt you to connect to the website. + +![img](./images/connect-wallet.PNG) + +Now add the input fields to create a new campaign. + +```js + +async function createCampaign() { + try { + const provider = new ethers.BrowserProvider(window.ethereum); + const signer = await provider.getSigner(); + const contract = new ethers.Contract(contractAddress, CampaignFactory.abi, signer); + const tx = await contract.createCampaign(title, description); + await tx.wait(); + getAllCampaigns(); + + } catch (error) { + console.log("Error creating campaign:", error); + } + } + + // rest of code + +

Create new campaign

+ setTitle(e.target.value)} /> + setDescription(e.target.value)} /> + +

Connected Address: {walletAddress}

+ +``` + +Now lets create a new campaign and see if it is added to the list of campaigns. + +![img](./images/create-campaign.PNG) + +Now you can see the list of campaigns created. + +![img](./images/campaigns-list.PNG) + +Now create new react component `Campaign.tsx`, and edit the `main.tsx` file to add this page to the routes. + +`main.tsx` + +```js +const router = createBrowserRouter([ + { + path: '/', + element: , + }, + { + path: '/campaign/:campaignAddress', + element: , + }, +]) + +createRoot(document.getElementById('root')!).render( + +) + +``` + +`Campaign.tsx` + +```js +import { useParams } from 'react-router-dom' +import { useState, useEffect } from 'react' +import Campaign from "./abis/Campaign.json" +import ethers from 'ethers' + +function CampaignPage() { + const { campaignAddress } = useParams() + + const [title, setTitle] = useState('') + const [description, setDescription] = useState('') + const [funds, setFunds] = useState() + const [owner, setOwner] = useState('') + + const [fundingAmount, setFundingAmount] = useState(0) + + useEffect(() => { + async function fetchCampaign() { + if (!campaignAddress) return + const provider = new ethers.BrowserProvider(window.ethereum) + const campaignContract = new ethers.Contract(campaignAddress, Campaign.abi, provider) + setTitle(await campaignContract.title()) + setDescription(await campaignContract.description()) + setOwner(await campaignContract.owner()) + setFunds(Number(await provider.getBalance(campaignAddress)) / (10 ** 18)) + } + fetchCampaign() + }, []) + + + async function fundCampaign() { + if (!campaignAddress) return + try { + const provider = new ethers.BrowserProvider(window.ethereum) + const signer = await provider.getSigner() + const campaignContract = new ethers.Contract(campaignAddress, Campaign.abi, signer) + const tx = await campaignContract.fund({ value: ethers.parseEther(fundingAmount.toString()) }) + await tx.wait() + } catch (error) { + console.error(error) + } + } + + return ( +
+

{title}

+

{description}

+

Funds: {funds}

+

Owner: {owner}

+

Campaign Address: {campaignAddress}

+ + setFundingAmount(Number(e.target.value))} /> + +
+ ) +} + +export default CampaignPage + +``` + +Edit the `App.tsx` file to add a link to the campaign page. + +```js + + +``` + +Now lets navigate to the campaign page and try funding the campaign with another wallet. + +![img](./images/donating-to-campaign.PNG) + +Nice, our campaign is successfully funded. Now lets add a withdraw function to the campaign page. +For this we need to check if the campaign owner is the one withdrawing the funds. + +```js + async function withdrawFunds() { + if (!campaignAddress) return + try { + const provider = new ethers.BrowserProvider(window.ethereum) + const signer = await provider.getSigner() + + if ((await signer.getAddress()).toLowerCase() !== owner.toLowerCase()) { + alert("You are not the owner of this campaign") + return + } + const campaignContract = new ethers.Contract(campaignAddress, Campaign.abi, signer) + const tx = await campaignContract.withdraw() + await tx.wait() + } catch (error) { + console.error(error) + } + } + +``` + +Now lets add a button to the campaign page to withdraw the funds. + +```js + +``` + +Now when we click the withdraw button, it will ask us to sign the transaction, after successful transaction the funds will be transferred back to the owner. +We can confirm this by checking the transaction in the core explorer. + +![img](./images/withdraw-received.PNG) + +## Conclusion + +Wooho๐Ÿ™Œ๐ŸŽ‰ We have successfully built a simple crowdfunding DApp on Core Blockchain. + +Now of course, the UI is very basic and we can add many more features to it. We can also use a more sophisticated frontend framework like Next.js for a better user experience. + +Till then, Happy coding and keep building ๐Ÿš€๐Ÿค˜ diff --git a/08-Crowdfunding dApp on Core/deploy.sh b/08-Crowdfunding dApp on Core/deploy.sh new file mode 100755 index 00000000..07015fd1 --- /dev/null +++ b/08-Crowdfunding dApp on Core/deploy.sh @@ -0,0 +1 @@ +forge create --rpc-url https://rpc.test.btcs.network --legacy ./src/CampaignFactory.sol:CampaignFactory --private-key 7f3ed3d4b4d6dca6127fca65f465c94cd541938faf126d6c481fe9b8800e502b \ No newline at end of file diff --git a/crowdfunding-dapp/foundry.toml b/08-Crowdfunding dApp on Core/foundry.toml similarity index 100% rename from crowdfunding-dapp/foundry.toml rename to 08-Crowdfunding dApp on Core/foundry.toml diff --git a/08-Crowdfunding dApp on Core/frontend/.gitignore b/08-Crowdfunding dApp on Core/frontend/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/08-Crowdfunding dApp on Core/frontend/README.md b/08-Crowdfunding dApp on Core/frontend/README.md new file mode 100644 index 00000000..74872fd4 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/README.md @@ -0,0 +1,50 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/08-Crowdfunding dApp on Core/frontend/index.html b/08-Crowdfunding dApp on Core/frontend/index.html new file mode 100644 index 00000000..e4b78eae --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/08-Crowdfunding dApp on Core/frontend/package.json b/08-Crowdfunding dApp on Core/frontend/package.json new file mode 100644 index 00000000..7e5fc9f3 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/package.json @@ -0,0 +1,31 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "ethers": "^6.13.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.2" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" + } +} diff --git a/08-Crowdfunding dApp on Core/frontend/public/vite.svg b/08-Crowdfunding dApp on Core/frontend/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/frontend/src/App.tsx b/08-Crowdfunding dApp on Core/frontend/src/App.tsx new file mode 100644 index 00000000..7cf7ed24 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/App.tsx @@ -0,0 +1,117 @@ +import { ethers } from 'ethers' +import { useState, useEffect } from 'react' +import CampaignFactory from "./abis/CampaignFactory.json" +import Campaign from "./abis/Campaign.json" +import { Link } from 'react-router-dom' + +type Campaign = { + title: string + description: string + owner: string + fund: number + campaignAddress: string +} + +const contractAddress = "0x6732D0158D83da10fC3cd49708edA26f339a944a"; // replace with your contract address + +function App() { + const [allCampaigns, setAllCampaigns] = useState([]); + const [walletAddress, setWalletAddress] = useState(""); + const [title, setTitle] = useState(""); + const [description, setDescription] = useState(""); + + async function getAllCampaigns() { + const provider = new ethers.BrowserProvider(window.ethereum); + + const contract = new ethers.Contract(contractAddress, CampaignFactory.abi, provider); + + console.log(contract) + const _campaigns = await contract.getCampaigns(); + console.log(_campaigns) + let campaigns: Campaign[] = []; + + for (let i = 0; i < _campaigns.length; i++) { + const campaign = _campaigns[i]; + console.log(campaign) + const campaignContract = new ethers.Contract(campaign, Campaign.abi, provider); + console.log(campaignContract) + campaigns.push({ + title: await campaignContract.title(), + description: await campaignContract.description(), + owner: await campaignContract.owner(), + fund: Number(await provider.getBalance(campaign)) / (10 ** 18), + campaignAddress: campaign + }); + } + setAllCampaigns(campaigns); + } + + async function connectWallet() { + const { ethereum } = window; + if (!ethereum) { + alert("Please install MetaMask!"); + return; + } + + try { + const [account] = await ethereum.request({ + method: "eth_requestAccounts", + }); + setWalletAddress(account); + } catch (error) { + console.log("Error fetching network:", error); + } + } + useEffect(() => { + connectWallet(); + getAllCampaigns(); + }, []); + + async function createCampaign() { + try { + const provider = new ethers.BrowserProvider(window.ethereum); + const signer = await provider.getSigner(); + const contract = new ethers.Contract(contractAddress, CampaignFactory.abi, signer); + const tx = await contract.createCampaign(title, description); + await tx.wait(); + getAllCampaigns(); + + } catch (error) { + console.log("Error creating campaign:", error); + } + } + + + return ( +
+ { + walletAddress ? ( + <> +

Create new campaign

+ setTitle(e.target.value)} /> + setDescription(e.target.value)} /> + +

+ Connected Address: {walletAddress} + { + allCampaigns.map((campaign, index) => ( + +

{campaign.title}

+

{campaign.description}

+

Owner: {campaign.owner}

+

Fund: {campaign.fund}

+ + )) + } +

+ ) : ( +

Please connect your wallet

+ ) + } + + +
+ ) +} + +export default App diff --git a/08-Crowdfunding dApp on Core/frontend/src/Campaign.tsx b/08-Crowdfunding dApp on Core/frontend/src/Campaign.tsx new file mode 100644 index 00000000..c381272c --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/Campaign.tsx @@ -0,0 +1,77 @@ +import { useParams } from 'react-router-dom' +import { useState, useEffect } from 'react' +import Campaign from "./abis/Campaign.json" +import { ethers } from 'ethers' + +export default function CampaignPage() { + const { campaignAddress } = useParams() + + const [title, setTitle] = useState('') + const [description, setDescription] = useState('') + const [funds, setFunds] = useState() + const [owner, setOwner] = useState('') + + const [fundingAmount, setFundingAmount] = useState(0) + + useEffect(() => { + async function fetchCampaign() { + if (!campaignAddress) return + const provider = new ethers.BrowserProvider(window.ethereum) + const campaignContract = new ethers.Contract(campaignAddress, Campaign.abi, provider) + setTitle(await campaignContract.title()) + setDescription(await campaignContract.description()) + setOwner(await campaignContract.owner()) + setFunds(Number(await provider.getBalance(campaignAddress)) / (10 ** 18)) + } + fetchCampaign() + }, []) + + async function withdrawFunds() { + if (!campaignAddress) return + try { + const provider = new ethers.BrowserProvider(window.ethereum) + const signer = await provider.getSigner() + + if ((await signer.getAddress()).toLowerCase() !== owner.toLowerCase()) { + alert("You are not the owner of this campaign") + return + } + const campaignContract = new ethers.Contract(campaignAddress, Campaign.abi, signer) + const tx = await campaignContract.withdraw() + await tx.wait() + } catch (error) { + console.error(error) + } + } + + + + async function fundCampaign() { + if (!campaignAddress) return + try { + const provider = new ethers.BrowserProvider(window.ethereum) + const signer = await provider.getSigner() + const campaignContract = new ethers.Contract(campaignAddress, Campaign.abi, signer) + const tx = await campaignContract.fund({ value: ethers.parseEther(fundingAmount.toString()) }) + await tx.wait() + } catch (error) { + console.error(error) + } + } + + return ( +
+

{title}

+

{description}

+

Funds: {funds}

+

Owner: {owner}

+

Campaign Address: {campaignAddress}

+ + setFundingAmount(Number(e.target.value))} /> + + +
+ ) +} + + diff --git a/08-Crowdfunding dApp on Core/frontend/src/abis/Campaign.json b/08-Crowdfunding dApp on Core/frontend/src/abis/Campaign.json new file mode 100644 index 00000000..2ff56e16 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/abis/Campaign.json @@ -0,0 +1,207 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "_title", + "type": "string", + "internalType": "string" + }, + { + "name": "_description", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "contribute", + "inputs": [], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "description", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "title", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b5060405161068738038061068783398101604081905261002f9161011b565b600080546001600160a01b03191633179055600161004d838261020d565b50600261005a828261020d565b5050506102cb565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261008957600080fd5b81516001600160401b038111156100a2576100a2610062565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d0576100d0610062565b6040528181528382016020018510156100e857600080fd5b60005b82811015610107576020818601810151838301820152016100eb565b506000918101602001919091529392505050565b6000806040838503121561012e57600080fd5b82516001600160401b0381111561014457600080fd5b61015085828601610078565b602085015190935090506001600160401b0381111561016e57600080fd5b61017a85828601610078565b9150509250929050565b600181811c9082168061019857607f821691505b6020821081036101b857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561020857806000526020600020601f840160051c810160208510156101e55750805b601f840160051c820191505b8181101561020557600081556001016101f1565b50505b505050565b81516001600160401b0381111561022657610226610062565b61023a816102348454610184565b846101be565b6020601f82116001811461026e57600083156102565750848201515b600019600385901b1c1916600184901b178455610205565b600084815260208120601f198516915b8281101561029e578785015182556020948501946001909201910161027e565b50848210156102bc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ad806102da6000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100665780637284e416146100915780638da5cb5b146100a6578063d7bb99ba146100de575b600080fd5b34801561005b57600080fd5b506100646100e6565b005b34801561007257600080fd5b5061007b6101e3565b60405161008891906102ef565b60405180910390f35b34801561009d57600080fd5b5061007b610271565b3480156100b257600080fd5b506000546100c6906001600160a01b031681565b6040516001600160a01b039091168152602001610088565b61006461027e565b6000546001600160a01b031633146101455760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b6000336001600160a01b0316476040515b60006040518083038185875af1925050503d8060008114610193576040519150601f19603f3d011682016040523d82523d6000602084013e610198565b606091505b50509050806101e05760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161013c565b50565b600180546101f09061033d565b80601f016020809104026020016040519081016040528092919081815260200182805461021c9061033d565b80156102695780601f1061023e57610100808354040283529160200191610269565b820191906000526020600020905b81548152906001019060200180831161024c57829003601f168201915b505050505081565b600280546101f09061033d565b600034116102da5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161013c565b6000306001600160a01b031634604051610156565b602081526000825180602084015260005b8181101561031d5760208186018101516040868401015201610300565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061035157607f821691505b60208210810361037157634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212201fb4a52834fac6a115bdc75420344fc9a4307154bae2b25d860a332e9db609cb64736f6c634300081a0033", + "sourceMap": "58:785:23:-:0;;;165:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;237:5;:18;;-1:-1:-1;;;;;;237:18:23;245:10;237:18;;;;265:14;273:6;237:18;265:14;:::i;:::-;-1:-1:-1;289:11:23;:26;303:12;289:11;:26;:::i;:::-;;165:157;;58:785;;14:127:28;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:28;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:28;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:28;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:28;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:28;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:28:o;985:557::-;1084:6;1092;1145:2;1133:9;1124:7;1120:23;1116:32;1113:52;;;1161:1;1158;1151:12;1113:52;1188:16;;-1:-1:-1;;;;;1216:30:28;;1213:50;;;1259:1;1256;1249:12;1213:50;1282:61;1335:7;1326:6;1315:9;1311:22;1282:61;:::i;:::-;1389:2;1374:18;;1368:25;1272:71;;-1:-1:-1;1368:25:28;-1:-1:-1;;;;;;1405:32:28;;1402:52;;;1450:1;1447;1440:12;1402:52;1473:63;1528:7;1517:8;1506:9;1502:24;1473:63;:::i;:::-;1463:73;;;985:557;;;;;:::o;1547:380::-;1626:1;1622:12;;;;1669;;;1690:61;;1744:4;1736:6;1732:17;1722:27;;1690:61;1797:2;1789:6;1786:14;1766:18;1763:38;1760:161;;1843:10;1838:3;1834:20;1831:1;1824:31;1878:4;1875:1;1868:15;1906:4;1903:1;1896:15;1760:161;;1547:380;;;:::o;2058:518::-;2160:2;2155:3;2152:11;2149:421;;;2196:5;2193:1;2186:16;2240:4;2237:1;2227:18;2310:2;2298:10;2294:19;2291:1;2287:27;2281:4;2277:38;2346:4;2334:10;2331:20;2328:47;;;-1:-1:-1;2369:4:28;2328:47;2424:2;2419:3;2415:12;2412:1;2408:20;2402:4;2398:31;2388:41;;2479:81;2497:2;2490:5;2487:13;2479:81;;;2556:1;2542:16;;2523:1;2512:13;2479:81;;;2483:3;;2149:421;2058:518;;;:::o;2752:1299::-;2872:10;;-1:-1:-1;;;;;2894:30:28;;2891:56;;;2927:18;;:::i;:::-;2956:97;3046:6;3006:38;3038:4;3032:11;3006:38;:::i;:::-;3000:4;2956:97;:::i;:::-;3102:4;3133:2;3122:14;;3150:1;3145:649;;;;3838:1;3855:6;3852:89;;;-1:-1:-1;3907:19:28;;;3901:26;3852:89;-1:-1:-1;;2709:1:28;2705:11;;;2701:24;2697:29;2687:40;2733:1;2729:11;;;2684:57;3954:81;;3115:930;;3145:649;2005:1;1998:14;;;2042:4;2029:18;;-1:-1:-1;;3181:20:28;;;3299:222;3313:7;3310:1;3307:14;3299:222;;;3395:19;;;3389:26;3374:42;;3502:4;3487:20;;;;3455:1;3443:14;;;;3329:12;3299:222;;;3303:3;3549:6;3540:7;3537:19;3534:201;;;3610:19;;;3604:26;-1:-1:-1;;3693:1:28;3689:14;;;3705:3;3685:24;3681:37;3677:42;3662:58;3647:74;;3534:201;-1:-1:-1;;;;3781:1:28;3765:14;;;3761:22;3748:36;;-1:-1:-1;2752:1299:28:o;:::-;58:785:23;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100665780637284e416146100915780638da5cb5b146100a6578063d7bb99ba146100de575b600080fd5b34801561005b57600080fd5b506100646100e6565b005b34801561007257600080fd5b5061007b6101e3565b60405161008891906102ef565b60405180910390f35b34801561009d57600080fd5b5061007b610271565b3480156100b257600080fd5b506000546100c6906001600160a01b031681565b6040516001600160a01b039091168152602001610088565b61006461027e565b6000546001600160a01b031633146101455760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b6000336001600160a01b0316476040515b60006040518083038185875af1925050503d8060008114610193576040519150601f19603f3d011682016040523d82523d6000602084013e610198565b606091505b50509050806101e05760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161013c565b50565b600180546101f09061033d565b80601f016020809104026020016040519081016040528092919081815260200182805461021c9061033d565b80156102695780601f1061023e57610100808354040283529160200191610269565b820191906000526020600020905b81548152906001019060200180831161024c57829003601f168201915b505050505081565b600280546101f09061033d565b600034116102da5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161013c565b6000306001600160a01b031634604051610156565b602081526000825180602084015260005b8181101561031d5760208186018101516040868401015201610300565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061035157607f821691505b60208210810361037157634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212201fb4a52834fac6a115bdc75420344fc9a4307154bae2b25d860a332e9db609cb64736f6c634300081a0033", + "sourceMap": "58:785:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;577:264;;;;;;;;;;;;;:::i;:::-;;108:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;133:25;;;;;;;;;;;;;:::i;82:20::-;;;;;;;;;;-1:-1:-1;82:20:23;;;;-1:-1:-1;;;;;82:20:23;;;;;;-1:-1:-1;;;;;710:32:28;;;692:51;;680:2;665:18;82:20:23;546:203:28;328:243:23;;;:::i;577:264::-;636:5;;-1:-1:-1;;;;;636:5:23;622:10;:19;614:61;;;;-1:-1:-1;;;614:61:23;;956:2:28;614:61:23;;;938:21:28;995:2;975:18;;;968:30;1034:31;1014:18;;;1007:59;1083:18;;614:61:23;;;;;;;;;686:12;712:10;-1:-1:-1;;;;;704:24:23;749:21;704:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;685:99;;;802:7;794:40;;;;-1:-1:-1;;;794:40:23;;1524:2:28;794:40:23;;;1506:21:28;1563:2;1543:18;;;1536:30;-1:-1:-1;;;1582:18:28;;;1575:50;1642:18;;794:40:23;1322:344:28;794:40:23;604:237;577:264::o;108:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;133:25::-;;;;;;;:::i;328:243::-;395:1;383:9;:13;375:61;;;;-1:-1:-1;;;375:61:23;;2258:2:28;375:61:23;;;2240:21:28;2297:2;2277:18;;;2270:30;2336:34;2316:18;;;2309:62;-1:-1:-1;;;2387:18:28;;;2380:33;2430:19;;375:61:23;2056:399:28;375:61:23;447:12;481:4;-1:-1:-1;;;;;465:27:23;500:9;465:49;;;1112:205:28;14:527;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;1671:380::-;1750:1;1746:12;;;;1793;;;1814:61;;1868:4;1860:6;1856:17;1846:27;;1814:61;1921:2;1913:6;1910:14;1890:18;1887:38;1884:161;;1967:10;1962:3;1958:20;1955:1;1948:31;2002:4;1999:1;1992:15;2030:4;2027:1;2020:15;1884:161;;1671:380;;;:::o", + "linkReferences": {} + }, + "methodIdentifiers": { + "contribute()": "d7bb99ba", + "description()": "7284e416", + "owner()": "8da5cb5b", + "title()": "4a79d50c", + "withdraw()": "3ccfd60b" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_description\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"contribute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"title\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Campaign.sol\":\"Campaign\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/Campaign.sol\":{\"keccak256\":\"0x3861d65d56e3c88bf4f84e86eea35d7ece6d9ab3b4d913153e5a395fd1afb144\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc60c005694ee5dae2e1d901838961ac8d777a43e27af7c376240502ccc21a6d\",\"dweb:/ipfs/QmSrXpFRYGuQaSmQszyYqgeK1R8m4SEtxB3PpQkWDdM6wA\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.26+commit.8a97fa7a" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_title", + "type": "string" + }, + { + "internalType": "string", + "name": "_description", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "stateMutability": "payable", + "type": "function", + "name": "contribute" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "description", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "title", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "forge-std/=lib/forge-std/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/Campaign.sol": "Campaign" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "src/Campaign.sol": { + "keccak256": "0x3861d65d56e3c88bf4f84e86eea35d7ece6d9ab3b4d913153e5a395fd1afb144", + "urls": [ + "bzz-raw://dc60c005694ee5dae2e1d901838961ac8d777a43e27af7c376240502ccc21a6d", + "dweb:/ipfs/QmSrXpFRYGuQaSmQszyYqgeK1R8m4SEtxB3PpQkWDdM6wA" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 23 +} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/frontend/src/abis/CampaignFactory.json b/08-Crowdfunding dApp on Core/frontend/src/abis/CampaignFactory.json new file mode 100644 index 00000000..feb74e03 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/abis/CampaignFactory.json @@ -0,0 +1,176 @@ +{ + "abi": [ + { + "type": "function", + "name": "campaigns", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createCampaign", + "inputs": [ + { + "name": "title", + "type": "string", + "internalType": "string" + }, + { + "name": "description", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCampaigns", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + } + ], + "bytecode": { + "object": "0x6080604052348015600f57600080fd5b50610a678061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063141961bc14610046578063a6b0363314610076578063fce3f6ac1461008b575b600080fd5b6100596100543660046101c3565b6100a0565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100ca565b60405161006d91906101dc565b61009e6100993660046102cd565b61012c565b005b600081815481106100b057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600080548060200260200160405190810160405280929190818152602001828054801561012257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610104575b5050505050905090565b6000828260405161013c906101b6565b61014792919061037c565b604051809103906000f080158015610163573d6000803e3d6000fd5b50600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b0392909216919091179055505050565b610687806103ab83390190565b6000602082840312156101d557600080fd5b5035919050565b602080825282518282018190526000918401906040840190835b8181101561021d5783516001600160a01b03168352602093840193909201916001016101f6565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261024f57600080fd5b813567ffffffffffffffff81111561026957610269610228565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561029857610298610228565b6040528181528382016020018510156102b057600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156102e057600080fd5b823567ffffffffffffffff8111156102f757600080fd5b6103038582860161023e565b925050602083013567ffffffffffffffff81111561032057600080fd5b61032c8582860161023e565b9150509250929050565b6000815180845260005b8181101561035c57602081850181015186830182015201610340565b506000602082860101526020601f19601f83011685010191505092915050565b60408152600061038f6040830185610336565b82810360208401526103a18185610336565b9594505050505056fe608060405234801561001057600080fd5b5060405161068738038061068783398101604081905261002f9161011b565b600080546001600160a01b03191633179055600161004d838261020d565b50600261005a828261020d565b5050506102cb565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261008957600080fd5b81516001600160401b038111156100a2576100a2610062565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d0576100d0610062565b6040528181528382016020018510156100e857600080fd5b60005b82811015610107576020818601810151838301820152016100eb565b506000918101602001919091529392505050565b6000806040838503121561012e57600080fd5b82516001600160401b0381111561014457600080fd5b61015085828601610078565b602085015190935090506001600160401b0381111561016e57600080fd5b61017a85828601610078565b9150509250929050565b600181811c9082168061019857607f821691505b6020821081036101b857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561020857806000526020600020601f840160051c810160208510156101e55750805b601f840160051c820191505b8181101561020557600081556001016101f1565b50505b505050565b81516001600160401b0381111561022657610226610062565b61023a816102348454610184565b846101be565b6020601f82116001811461026e57600083156102565750848201515b600019600385901b1c1916600184901b178455610205565b600084815260208120601f198516915b8281101561029e578785015182556020948501946001909201910161027e565b50848210156102bc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ad806102da6000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100665780637284e416146100915780638da5cb5b146100a6578063d7bb99ba146100de575b600080fd5b34801561005b57600080fd5b506100646100e6565b005b34801561007257600080fd5b5061007b6101e3565b60405161008891906102ef565b60405180910390f35b34801561009d57600080fd5b5061007b610271565b3480156100b257600080fd5b506000546100c6906001600160a01b031681565b6040516001600160a01b039091168152602001610088565b61006461027e565b6000546001600160a01b031633146101455760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b6000336001600160a01b0316476040515b60006040518083038185875af1925050503d8060008114610193576040519150601f19603f3d011682016040523d82523d6000602084013e610198565b606091505b50509050806101e05760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161013c565b50565b600180546101f09061033d565b80601f016020809104026020016040519081016040528092919081815260200182805461021c9061033d565b80156102695780601f1061023e57610100808354040283529160200191610269565b820191906000526020600020905b81548152906001019060200180831161024c57829003601f168201915b505050505081565b600280546101f09061033d565b600034116102da5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161013c565b6000306001600160a01b031634604051610156565b602081526000825180602084015260005b8181101561031d5760208186018101516040868401015201610300565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061035157607f821691505b60208210810361037157634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212201fb4a52834fac6a115bdc75420344fc9a4307154bae2b25d860a332e9db609cb64736f6c634300081a0033a2646970667358221220e69865dfd5ee1e0087c5f667a957fa4cb0d9645e2be8b161c5d9704a2a838a5064736f6c634300081a0033", + "sourceMap": "84:387:24:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063141961bc14610046578063a6b0363314610076578063fce3f6ac1461008b575b600080fd5b6100596100543660046101c3565b6100a0565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100ca565b60405161006d91906101dc565b61009e6100993660046102cd565b61012c565b005b600081815481106100b057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600080548060200260200160405190810160405280929190818152602001828054801561012257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610104575b5050505050905090565b6000828260405161013c906101b6565b61014792919061037c565b604051809103906000f080158015610163573d6000803e3d6000fd5b50600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b0392909216919091179055505050565b610687806103ab83390190565b6000602082840312156101d557600080fd5b5035919050565b602080825282518282018190526000918401906040840190835b8181101561021d5783516001600160a01b03168352602093840193909201916001016101f6565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261024f57600080fd5b813567ffffffffffffffff81111561026957610269610228565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561029857610298610228565b6040528181528382016020018510156102b057600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156102e057600080fd5b823567ffffffffffffffff8111156102f757600080fd5b6103038582860161023e565b925050602083013567ffffffffffffffff81111561032057600080fd5b61032c8582860161023e565b9150509250929050565b6000815180845260005b8181101561035c57602081850181015186830182015201610340565b506000602082860101526020601f19601f83011685010191505092915050565b60408152600061038f6040830185610336565b82810360208401526103a18185610336565b9594505050505056fe608060405234801561001057600080fd5b5060405161068738038061068783398101604081905261002f9161011b565b600080546001600160a01b03191633179055600161004d838261020d565b50600261005a828261020d565b5050506102cb565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261008957600080fd5b81516001600160401b038111156100a2576100a2610062565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d0576100d0610062565b6040528181528382016020018510156100e857600080fd5b60005b82811015610107576020818601810151838301820152016100eb565b506000918101602001919091529392505050565b6000806040838503121561012e57600080fd5b82516001600160401b0381111561014457600080fd5b61015085828601610078565b602085015190935090506001600160401b0381111561016e57600080fd5b61017a85828601610078565b9150509250929050565b600181811c9082168061019857607f821691505b6020821081036101b857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561020857806000526020600020601f840160051c810160208510156101e55750805b601f840160051c820191505b8181101561020557600081556001016101f1565b50505b505050565b81516001600160401b0381111561022657610226610062565b61023a816102348454610184565b846101be565b6020601f82116001811461026e57600083156102565750848201515b600019600385901b1c1916600184901b178455610205565b600084815260208120601f198516915b8281101561029e578785015182556020948501946001909201910161027e565b50848210156102bc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ad806102da6000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100665780637284e416146100915780638da5cb5b146100a6578063d7bb99ba146100de575b600080fd5b34801561005b57600080fd5b506100646100e6565b005b34801561007257600080fd5b5061007b6101e3565b60405161008891906102ef565b60405180910390f35b34801561009d57600080fd5b5061007b610271565b3480156100b257600080fd5b506000546100c6906001600160a01b031681565b6040516001600160a01b039091168152602001610088565b61006461027e565b6000546001600160a01b031633146101455760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b6000336001600160a01b0316476040515b60006040518083038185875af1925050503d8060008114610193576040519150601f19603f3d011682016040523d82523d6000602084013e610198565b606091505b50509050806101e05760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161013c565b50565b600180546101f09061033d565b80601f016020809104026020016040519081016040528092919081815260200182805461021c9061033d565b80156102695780601f1061023e57610100808354040283529160200191610269565b820191906000526020600020905b81548152906001019060200180831161024c57829003601f168201915b505050505081565b600280546101f09061033d565b600034116102da5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161013c565b6000306001600160a01b031634604051610156565b602081526000825180602084015260005b8181101561031d5760208186018101516040868401015201610300565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061035157607f821691505b60208210810361037157634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212201fb4a52834fac6a115bdc75420344fc9a4307154bae2b25d860a332e9db609cb64736f6c634300081a0033a2646970667358221220e69865dfd5ee1e0087c5f667a957fa4cb0d9645e2be8b161c5d9704a2a838a5064736f6c634300081a0033", + "sourceMap": "84:387:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;115:26;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;363:32:28;;;345:51;;333:2;318:18;115:26:24;;;;;;;;373:96;;;:::i;:::-;;;;;;;:::i;148:219::-;;;;;;:::i;:::-;;:::i;:::-;;115:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;115:26:24;;-1:-1:-1;115:26:24;:::o;373:96::-;418:16;453:9;446:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;446:16:24;;;;;;;;;;;;;;;;;;;;;;;373:96;:::o;148:219::-;259:20;295:5;302:11;282:32;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;324:9:24;:36;;;;;;;;;;;;;;-1:-1:-1;;;;;;324:36:24;-1:-1:-1;;;;;324:36:24;;;;;;;;;;-1:-1:-1;;;148:219:24:o;-1:-1:-1:-;;;;;;;;:::o;14:180:28:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:28;;14:180;-1:-1:-1;14:180:28:o;407:637::-;597:2;609:21;;;679:13;;582:18;;;701:22;;;549:4;;780:15;;;754:2;739:18;;;549:4;823:195;837:6;834:1;831:13;823:195;;;902:13;;-1:-1:-1;;;;;898:39:28;886:52;;967:2;993:15;;;;958:12;;;;934:1;852:9;823:195;;;-1:-1:-1;1035:3:28;;407:637;-1:-1:-1;;;;;407:637:28:o;1049:127::-;1110:10;1105:3;1101:20;1098:1;1091:31;1141:4;1138:1;1131:15;1165:4;1162:1;1155:15;1181:726;1224:5;1277:3;1270:4;1262:6;1258:17;1254:27;1244:55;;1295:1;1292;1285:12;1244:55;1335:6;1322:20;1365:18;1357:6;1354:30;1351:56;;;1387:18;;:::i;:::-;1436:2;1430:9;1528:2;1490:17;;-1:-1:-1;;1486:31:28;;;1519:2;1482:40;1478:54;1466:67;;1563:18;1548:34;;1584:22;;;1545:62;1542:88;;;1610:18;;:::i;:::-;1646:2;1639:22;1670;;;1711:19;;;1732:4;1707:30;1704:39;-1:-1:-1;1701:59:28;;;1756:1;1753;1746:12;1701:59;1820:6;1813:4;1805:6;1801:17;1794:4;1786:6;1782:17;1769:58;1875:1;1847:19;;;1868:4;1843:30;1836:41;;;;1851:6;1181:726;-1:-1:-1;;;1181:726:28:o;1912:538::-;2000:6;2008;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2117:9;2104:23;2150:18;2142:6;2139:30;2136:50;;;2182:1;2179;2172:12;2136:50;2205;2247:7;2238:6;2227:9;2223:22;2205:50;:::i;:::-;2195:60;;;2308:2;2297:9;2293:18;2280:32;2337:18;2327:8;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2392;2436:7;2425:8;2414:9;2410:24;2392:52;:::i;:::-;2382:62;;;1912:538;;;;;:::o;2455:400::-;2497:3;2535:5;2529:12;2562:6;2557:3;2550:19;2587:1;2597:139;2611:6;2608:1;2605:13;2597:139;;;2719:4;2704:13;;;2700:24;;2694:31;2674:11;;;2670:22;;2663:63;2626:12;2597:139;;;2601:3;2781:1;2774:4;2765:6;2760:3;2756:16;2752:27;2745:38;2844:4;2837:2;2833:7;2828:2;2820:6;2816:15;2812:29;2807:3;2803:39;2799:50;2792:57;;;2455:400;;;;:::o;2860:383::-;3057:2;3046:9;3039:21;3020:4;3083:45;3124:2;3113:9;3109:18;3101:6;3083:45;:::i;:::-;3176:9;3168:6;3164:22;3159:2;3148:9;3144:18;3137:50;3204:33;3230:6;3222;3204:33;:::i;:::-;3196:41;2860:383;-1:-1:-1;;;;;2860:383:28:o", + "linkReferences": {} + }, + "methodIdentifiers": { + "campaigns(uint256)": "141961bc", + "createCampaign(string,string)": "fce3f6ac", + "getCampaigns()": "a6b03633" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"campaigns\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"createCampaign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCampaigns\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CampaignFactory.sol\":\"CampaignFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/Campaign.sol\":{\"keccak256\":\"0x3861d65d56e3c88bf4f84e86eea35d7ece6d9ab3b4d913153e5a395fd1afb144\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc60c005694ee5dae2e1d901838961ac8d777a43e27af7c376240502ccc21a6d\",\"dweb:/ipfs/QmSrXpFRYGuQaSmQszyYqgeK1R8m4SEtxB3PpQkWDdM6wA\"]},\"src/CampaignFactory.sol\":{\"keccak256\":\"0xde81f08c511d4008b6c070955c485d59d5dbb09af5b84b873f7c9674e1ea476f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://542398c38491d4e1e70fcbe588dfcd70d66276b619452a78479e5a5f447091c7\",\"dweb:/ipfs/QmbT7iXKBCfWNTWc5mR5B34qsPqcdChLJUWFe7X8Sv6Fpn\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.26+commit.8a97fa7a" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "campaigns", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "string", + "name": "title", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "createCampaign" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getCampaigns", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "forge-std/=lib/forge-std/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/CampaignFactory.sol": "CampaignFactory" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "src/Campaign.sol": { + "keccak256": "0x3861d65d56e3c88bf4f84e86eea35d7ece6d9ab3b4d913153e5a395fd1afb144", + "urls": [ + "bzz-raw://dc60c005694ee5dae2e1d901838961ac8d777a43e27af7c376240502ccc21a6d", + "dweb:/ipfs/QmSrXpFRYGuQaSmQszyYqgeK1R8m4SEtxB3PpQkWDdM6wA" + ], + "license": "MIT" + }, + "src/CampaignFactory.sol": { + "keccak256": "0xde81f08c511d4008b6c070955c485d59d5dbb09af5b84b873f7c9674e1ea476f", + "urls": [ + "bzz-raw://542398c38491d4e1e70fcbe588dfcd70d66276b619452a78479e5a5f447091c7", + "dweb:/ipfs/QmbT7iXKBCfWNTWc5mR5B34qsPqcdChLJUWFe7X8Sv6Fpn" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 24 +} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/frontend/src/assets/react.svg b/08-Crowdfunding dApp on Core/frontend/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/frontend/src/index.css b/08-Crowdfunding dApp on Core/frontend/src/index.css new file mode 100644 index 00000000..e69de29b diff --git a/08-Crowdfunding dApp on Core/frontend/src/index.d.ts b/08-Crowdfunding dApp on Core/frontend/src/index.d.ts new file mode 100644 index 00000000..4f78a389 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/index.d.ts @@ -0,0 +1,7 @@ +import { ethers } from 'ethers' + +declare global { + interface Window { + ethereum: ethers.Eip6963Provider + } +} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/frontend/src/main.tsx b/08-Crowdfunding dApp on Core/frontend/src/main.tsx new file mode 100644 index 00000000..8716a50c --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/main.tsx @@ -0,0 +1,20 @@ +import { createRoot } from 'react-dom/client' +import { createBrowserRouter, RouterProvider } from 'react-router-dom' +import App from './App.tsx' +import Campaign from './Campaign.tsx' +import './index.css' + +const router = createBrowserRouter([ + { + path: '/', + element: , + }, + { + path: '/campaign/:campaignAddress', + element: , + }, +]) + +createRoot(document.getElementById('root')!).render( + +) diff --git a/08-Crowdfunding dApp on Core/frontend/src/vite-env.d.ts b/08-Crowdfunding dApp on Core/frontend/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/08-Crowdfunding dApp on Core/frontend/tsconfig.app.json b/08-Crowdfunding dApp on Core/frontend/tsconfig.app.json new file mode 100644 index 00000000..f0a23505 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/08-Crowdfunding dApp on Core/frontend/tsconfig.json b/08-Crowdfunding dApp on Core/frontend/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/08-Crowdfunding dApp on Core/frontend/tsconfig.node.json b/08-Crowdfunding dApp on Core/frontend/tsconfig.node.json new file mode 100644 index 00000000..0d3d7144 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/08-Crowdfunding dApp on Core/frontend/vite.config.ts b/08-Crowdfunding dApp on Core/frontend/vite.config.ts new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/08-Crowdfunding dApp on Core/frontend/yarn.lock b/08-Crowdfunding dApp on Core/frontend/yarn.lock new file mode 100644 index 00000000..0f3b25df --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/yarn.lock @@ -0,0 +1,1613 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + +"@babel/compat-data@^7.25.2": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== + +"@babel/core@^7.24.5": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== + dependencies: + "@babel/types" "^7.25.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-plugin-utils@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helpers@^7.25.0": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" + integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" + +"@babel/plugin-transform-react-jsx-self@^7.24.5": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" + integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-react-jsx-source@^7.24.1": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" + integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + +"@eslint/config-array@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" + integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== + dependencies: + "@eslint/object-schema" "^2.1.4" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== + 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" + +"@eslint/js@9.10.0", "@eslint/js@^9.9.0": + version "9.10.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.10.0.tgz#eaa3cb0baec497970bb29e43a153d0d5650143c6" + integrity sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g== + +"@eslint/object-schema@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" + integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== + +"@eslint/plugin-kit@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz#809b95a0227ee79c3195adfb562eb94352e77974" + integrity sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ== + dependencies: + levn "^0.4.1" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/retry@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" + integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@remix-run/router@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.2.tgz#0c896535473291cb41f152c180bedd5680a3b273" + integrity sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA== + +"@rollup/rollup-android-arm-eabi@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz#155c7d82c1b36c3ad84d9adf9b3cd520cba81a0f" + integrity sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg== + +"@rollup/rollup-android-arm64@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz#b94b6fa002bd94a9cbd8f9e47e23b25e5bd113ba" + integrity sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g== + +"@rollup/rollup-darwin-arm64@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz#0934126cf9cbeadfe0eb7471ab5d1517e8cd8dcc" + integrity sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ== + +"@rollup/rollup-darwin-x64@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz#0ce8e1e0f349778938c7c90e4bdc730640e0a13e" + integrity sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA== + +"@rollup/rollup-linux-arm-gnueabihf@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz#5669d34775ad5d71e4f29ade99d0ff4df523afb6" + integrity sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g== + +"@rollup/rollup-linux-arm-musleabihf@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz#f6d1a0e1da4061370cb2f4244fbdd727c806dd88" + integrity sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA== + +"@rollup/rollup-linux-arm64-gnu@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz#ed96a05e99743dee4d23cc4913fc6e01a0089c88" + integrity sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw== + +"@rollup/rollup-linux-arm64-musl@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz#057ea26eaa7e537a06ded617d23d57eab3cecb58" + integrity sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ== + +"@rollup/rollup-linux-powerpc64le-gnu@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz#6e6e1f9404c9bf3fbd7d51cd11cd288a9a2843aa" + integrity sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw== + +"@rollup/rollup-linux-riscv64-gnu@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz#eef1536a53f6e6658a2a778130e6b1a4a41cb439" + integrity sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ== + +"@rollup/rollup-linux-s390x-gnu@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz#2b28fb89ca084efaf8086f435025d96b4a966957" + integrity sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg== + +"@rollup/rollup-linux-x64-gnu@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz#5226cde6c6b495b04a3392c1d2c572844e42f06b" + integrity sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g== + +"@rollup/rollup-linux-x64-musl@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz#2c2412982e6c2a00a2ecac6d548ebb02f0aa6ca4" + integrity sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg== + +"@rollup/rollup-win32-arm64-msvc@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz#fbb6ef5379199e2ec0103ef32877b0985c773a55" + integrity sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q== + +"@rollup/rollup-win32-ia32-msvc@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz#d50e2082e147e24d87fe34abbf6246525ec3845a" + integrity sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA== + +"@rollup/rollup-win32-x64-msvc@4.21.3": + version "4.21.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz#4115233aa1bd5a2060214f96d8511f6247093212" + integrity sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA== + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + dependencies: + "@babel/types" "^7.20.7" + +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== + +"@types/prop-types@*": + version "15.7.12" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + +"@types/react-dom@^18.3.0": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.3.3": + version "18.3.5" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.5.tgz#5f524c2ad2089c0ff372bbdabc77ca2c4dbadf8f" + integrity sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@typescript-eslint/eslint-plugin@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz#7c1863693a98371703686e1c0fac64ffc576cdb1" + integrity sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.5.0" + "@typescript-eslint/type-utils" "8.5.0" + "@typescript-eslint/utils" "8.5.0" + "@typescript-eslint/visitor-keys" "8.5.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.5.0.tgz#d590e1ef9f31f26d423999ad3f687723247e6bcc" + integrity sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw== + dependencies: + "@typescript-eslint/scope-manager" "8.5.0" + "@typescript-eslint/types" "8.5.0" + "@typescript-eslint/typescript-estree" "8.5.0" + "@typescript-eslint/visitor-keys" "8.5.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz#385341de65b976f02b295b8aca54bb4ffd6b5f07" + integrity sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg== + dependencies: + "@typescript-eslint/types" "8.5.0" + "@typescript-eslint/visitor-keys" "8.5.0" + +"@typescript-eslint/type-utils@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz#6215b23aa39dbbd8dde0a4ef9ee0f745410c29b1" + integrity sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA== + dependencies: + "@typescript-eslint/typescript-estree" "8.5.0" + "@typescript-eslint/utils" "8.5.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.5.0.tgz#4465d99331d1276f8fb2030e4f9c73fe01a05bf9" + integrity sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw== + +"@typescript-eslint/typescript-estree@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz#6e5758cf2f63aa86e9ddfa4e284e2e0b81b87557" + integrity sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q== + dependencies: + "@typescript-eslint/types" "8.5.0" + "@typescript-eslint/visitor-keys" "8.5.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.5.0.tgz#4d4ffed96d0654546a37faa5b84bdce16d951634" + integrity sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.5.0" + "@typescript-eslint/types" "8.5.0" + "@typescript-eslint/typescript-estree" "8.5.0" + +"@typescript-eslint/visitor-keys@8.5.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz#13028df3b866d2e3e2e2cc4193cf2c1e0e04c4bf" + integrity sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw== + dependencies: + "@typescript-eslint/types" "8.5.0" + eslint-visitor-keys "^3.4.3" + +"@vitejs/plugin-react@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz#d0be6594051ded8957df555ff07a991fb618b48e" + integrity sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg== + dependencies: + "@babel/core" "^7.24.5" + "@babel/plugin-transform-react-jsx-self" "^7.24.5" + "@babel/plugin-transform-react-jsx-source" "^7.24.1" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.2" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.12.0: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.23.1: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001646: + version "1.0.30001660" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz#31218de3463fabb44d0b7607b652e56edf2e2355" + integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + 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" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +electron-to-chromium@^1.5.4: + version "1.5.23" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.23.tgz#6dabd8f7fec5cbf618b732ff4c42950dcc7a3be5" + integrity sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA== + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + 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" + +escalade@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-plugin-react-hooks@^5.1.0-rc.0: + version "5.1.0-rc-fb9a90fa48-20240614" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz#206a7ec005f0b286aaf7091f4e566083d310b189" + integrity sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w== + +eslint-plugin-react-refresh@^0.4.9: + version "0.4.12" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz#73d61c7fcbe3f7280edb6579380b4350d2f547ed" + integrity sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg== + +eslint-scope@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" + integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" + integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== + +eslint@^9.9.0: + version "9.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.10.0.tgz#0bd74d7fe4db77565d0e7f57c7df6d2b04756806" + integrity sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.18.0" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.10.0" + "@eslint/plugin-kit" "^0.1.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.3.0" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.0.2" + eslint-visitor-keys "^4.0.0" + espree "^10.1.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" + is-path-inside "^3.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.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^10.0.1, espree@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" + integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.0.0" + +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethers@^6.13.2: + version "6.13.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.2.tgz#4b67d4b49e69b59893931a032560999e5e4419fe" + integrity sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.17.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + 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" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.9.0: + version "15.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.9.0.tgz#e9de01771091ffbc37db5714dab484f9f69ff399" + integrity sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^5.2.0, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + 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" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-dom@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react-refresh@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== + +react-router-dom@^6.26.2: + version "6.26.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.2.tgz#a6e3b0cbd6bfd508e42b9342099d015a0ac59680" + integrity sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ== + dependencies: + "@remix-run/router" "1.19.2" + react-router "6.26.2" + +react-router@6.26.2: + version "6.26.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.2.tgz#2f0a68999168954431cdc29dd36cec3b6fa44a7e" + integrity sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A== + dependencies: + "@remix-run/router" "1.19.2" + +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^4.20.0: + version "4.21.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.3.tgz#c64ba119e6aeb913798a6f7eef2780a0df5a0821" + integrity sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA== + dependencies: + "@types/estree" "1.0.5" + 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" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +typescript-eslint@^8.0.1: + version "8.5.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.5.0.tgz#041f6c302d0e9a8e116a33d60b0bb19f34036dd7" + integrity sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q== + dependencies: + "@typescript-eslint/eslint-plugin" "8.5.0" + "@typescript-eslint/parser" "8.5.0" + "@typescript-eslint/utils" "8.5.0" + +typescript@^5.5.3: + version "5.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== + +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +vite@^5.4.1: + version "5.4.5" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.5.tgz#e4ab27709de46ff29bd8db52b0c51606acba893b" + integrity sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/08-Crowdfunding dApp on Core/images/campaign-lists.PNG b/08-Crowdfunding dApp on Core/images/campaign-lists.PNG new file mode 100644 index 0000000000000000000000000000000000000000..563d8c29d40b02964c6113cdb262b966c04729db GIT binary patch literal 21546 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
  • 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 A(f|Me literal 0 HcmV?d00001 diff --git a/08-Crowdfunding dApp on Core/images/create-frontend.PNG b/08-Crowdfunding dApp on Core/images/create-frontend.PNG new file mode 100644 index 0000000000000000000000000000000000000000..189ba97fc9640e70acc7d2375bc332cf51e60d6c GIT binary patch literal 33848 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

    (7uWS{fy?*vo>fb# z$rvM9tz^s@LbV_wMM!9uB{5;fn*eCJr5b-@XZ+A&1VxkXZMt*a4I+k}Vsn!4I)M4a zy57K^7DCa$GAn#^9LmKmbM(ay`B;DCd-1bhq09>;PZei-Pmy5=1IuAVOa;U ztX{H>;ktf<0)^CVw?jxAjhA5KL72N0RNM2^i?>mmN89(3SYr4S66^T>Ah&{AkROWJ zND&3(rx_*ol-RIBPATHC%hh<(q%}#LqceVI@OuJR78cUJffehmA7D96xIS0 zhv*K$4y&WL1KC=J>xX9nxNz%>k~Qzsk6H^DG&GiNi9l;x&=L1wt#HI*_|^x$>T`wWp~9_IuKZH%{r|)o{#XhH0(7d1w{ZZQ()% zpTE!%(S197E)Fl8=LOXBFPhJK=;wU+M)v|Ox1$iq5cv?DaV>P+6rJFi`-~jm$Ii~q zGj&J89|tFP^(>?SnPD>Q5X1!3x*P%)^8JIH)5RBou2+_CeXvVA z<6l2l!M~kM)uO+fC}@+VJWCvgpZDuV5B{NLy$X2(IjZ1@wsL@>bC!SK|L$?j@JnON z3#x3M2yR=c8g7f3Zf(gxh}9wx0~>}d3A@mKImmf4YdLDK_g;f(TxOAH>$L;i& z++PtzQaRP+WozfxKSJ?KIS>={39Gx0|mc*}ZkvZSkCo2T>9mJINHgqG#EAEnj44lmGS9KkHbz zUQ;OmN!P2L^PF?Mb0XE=76{P&p(+bh0mT}-EqD|lx*_a-3xcc~R_9i$dPg9yUA)o$ zDkio@qtIh}cw+eE&0p-D%q2mo)1SZSP+)fI$g`MXWA*00$_>BNv*d?sWB9 z0fD@HH6Hg@^w7tk6te~rT&qeqgX?4W-}|o59q|y+Z&LOle`y$Sb<9E&`*4dfFYTOs z$Ked*y$-&-c_4+Zgs;oz*;SvWveMh=mYKP^fqJ|3xhr4Ooj zHGVREKsuipzif59zk7AWtpF6$K30+CZ&R?U65zLzOt6nI88E5*0=?%_0m|2gMZ84n;#72z`+;XD_Z{+}!y za0CF{wd{yG+{wW|c(>}`Z+7dHZ`xtVc#rOy*<^%5RTIxoQS~(}+Ms zko^r^OgLj-Fy`6BoMI;{ja+pex{6lv*X9)!rMf-wTh7#3cf^AHry7#4231w2-r#pe zrzwWCQ6D9JEI*S-xvRVGg)w5Id#q==rB0Tn9g4`m7?|%iKkq;fz-`pu`PL@`56sX39)9q(p|lf_D;VE!@amoiwNskr>-$) zD{4FuDJr_LWGvM6ZLZcBO}jYFyPv#B(v)6U-|!JGLE*)F0nqA`V800eM<46xJr`Lj zib%uyX=FZJckoQ`D1<;a5{h;BaXeq@pD5+Dl!Q}Mu;Udzn;fo`i=D(Pc7x)=F4ScL ztvpTgROGq`Y~@i1wtlpyQev5b^Sj}xmLZ94^>(2X)=C_ok3fVE#1HvcR!1Kg{_!r$ z)--GhPED{ZH(vT!jM8xS`ykQfV=7D)A|M4wjvB=!K1v^MkW|XN%jWh-_a%foW=467 zkQc)!ie7mBgFiZCpty=YI6sT;MX&Z3zhm#oct(7*Pu%iPJ#q`p(Yofgr%jd`m=apq zxpn&lDDKQw^MgnX+nvc_e5Qw{?XA3e6koU$MAT9ha%Cjdw1g|DEl`E3kvydH8p>3m z8YCa-nub@`a8xG`2}D79b&BsrW-t3`yVusx_K>bjBU^;gD5~cd zwl(7E9O}s+;YU_y>c;(d0lBCE8}YCRw8j>yMKy9aNnb;cYBAh2c)SbPhtT4yqO>|; zotvSET*%mL}(5)kX-bs|}AB^2{xb=g0v063z;?02#D$ z$(V=tIrtJdA^;qZdLb3~O9N0h&luUB*iz0jH*U=;<=Xmjjc0G>#OZPP*xTiF*?dPV zhhWL>zl(!m&tAs;y7i>FqTR^crsiWh?7wA#0y!KU$(rGbcwv!5@J~DVa4@vG#!0pu zEJre)OVIi(k-v3dc|^HN8BYb3+X?)=#RL9+j1SRxa0zd?3>4dID4k9@6-vF{hpjy)`Y!ERCSvf7Q(oEvexw)iYp*dDy?POf;?1esB$`w0{#HM z_J&#ZF!5?5O2<-W?#rNFyxFS7uT4f4aBaQ1hL?eAp+Ff7K^;;BA8(riVr@wbn+Qgr z1(1Eo0DAUA$O)i2Q@7uWTyheo*3{JtPgev zj)NHd!2+2;La`;G_&T8&MnFjH{i`DkAwQrM$dCK8cix2YC0Z<*OAuEDj*9W~B-$^> zoPh)d2gg+faD%f+1L1ILBEdZoKGS(Yi8_tGeaXj`xiK#4=<>l0lf>T zvxRHZ%wxSPb(f&^G39~XI5CGQDJnJO72_A-J2k=3y9CK;viV@EG5ZOP8K=ld4_`?X zYIVT`#248vOWO0Jfhon+sle@O)1&Hmmy1c@k700E_$wtK{&s!g%KfJ09yEE};w7rB z2yS&QwJH@d|Hlk5V3{}=>y-T~j!}J-qbO5rDM>5#TyYJBzz`C^Ns^IvsHreg5_NG7 ziDOz&g?i}s&siew1EJn=FkBpoKv^Z@paTAp3;r;~%8l3Bo5=r3;vPZfduloiGDIeh&O`|#6onb+aN>RP#m6nNx@@_vJfbN(!l5yAlok!lX*|sqxU+1 zo`EVyU{XPyLol9K#YfGuH)lO)X1vp|dcm8sHC%Qs)Oy*5`cBi|4~62vy>!@`M5Rq~ zy!pf1;1UT#Es=xR6DUm}yN!V|+n(5nxMy9z_B_qC=QZpBqy9UAzh^8T@Yl}C-UC{u z1b&Ld1A^q43~dGcb3-EqD~YYIjceY=yy_W3!cY-mq-RuBd59N*(!5WL+_un0+MvI| zz1<$n-Kn*#XB}Uo_|py{i6y%Pa}?6?Qjq)2jF%dC6^zV>E8O8Sz2t2S-m~PkOVs=5 ztw|hVzuWWT#K}loR8uB_#E1utEGhnzy_!M2^yV)}^i;sMJB=Wy!*M6%%QiAEyS>?m z@1T%ay`XMWONZW1SsN}LBaRgC3`JB5rNw>T9u+aU zEwPO&7E8?7pisAh;CQXd-sjDi(Rbss1?#}DoL1*Q-C9h5!W>HF3Ixww*|q8VaZRlh z#tH0ixNovqmG(%k`nJsbbrK;|`=WXtfY;V;?_bcelc z<7aYwtg@dkk=MkTknOi7HZlZ^artp1N(lvZ9m&2CTz@dKjq)Y*%Q61bk#@VXbX#66 z{UUnDapF=s=|$U2jKW3-nosGX2G%coi;@=G#MwFEy$#Z3Ubk+WzQsMc_2v0_9Ze2+ zBc<^R^45Gw(UOn_+NDX;ORt3Dd!4p+=g^zdaleYr6*jgG(re=%Gn(I|!9jC^;FNHP zI1;ghGI5M9w9|PzyB`e_^guO7JO=`Q$}m>u^M>bAbPGX6oEMVRcz#M%n9WG!;4uBY zH*`E@WE(BLcbgAK=`i+UWG~Y7%2bI^r!V{8_ZP%A`ov2}Okw3K4@yvR1MbMyZBm7ilts7E6{^9@|W*$dY*^#x{lw zS};*#8^)NiFO9Lzn8iCi?>X=L*YAD)egF8}*SYR-esLYh&T@e%dl3{1OA^||U z^$$ckLf>Bl0MHhD8!NXvz6&FB&t=I99pNyJ=4O0tzzeenFTbZsH6-}x7s^>4eHH&z zUGYGoTH#w)8-MS}!-d+rAzs9n+Z;;nT*q&f+3S9!BVuW-58Ei zNnnruP*we+XuK-Yn;zeiE@!~#S3`#RY{}*eL}+9QoO~2Oqu0bOc}c~sju@G)u)10d zLdtj1CBA6BX7Z>ae#k2lfces`rW4hVoA^lMI8IlepMtUbp}T|F#C23iaUY)Qkzn9mRw!?#M_U~ko`Y33t3~GZ9Vl6uJ=G;nOSp&azP$I;B@ewRAZQnTuDP)`qUVvRh2#kyC1Dxi}k1glU9J}`A zOf(euqPxnPt3b01hfp;A+_1r|(dGcr!<{8+IkO)L*s1*sgbjprQV}zqN&y?8zqdJF zu6;2JA*9}2RcsC!H6-4*y3-Cmav_DpOSdIa%aXv^CVpZ51*(5ZZu{o&53#R)3?k}k z8MJm&^Igyv*$){rrJ3FVfv%;4}!VCo)Fi;}v=;3WI61Il2OGGUjg~@5RvGZ|1x4{PMbvv%9 zs)s>rf{Lg)!39@%m*$7B?H`2m+H%0(9F|xe`S@%pUoGpYtZ;v^T+@=rIj`+(I&Eh$ zoa(as%7!AG6`G8&MH@Y?RL*yjG{xPGXB`%c#k^jvLcCvOuZl|2la`(dIaJqVeQK?d zQz7iWC-y}(FdUAoR%M-vJ^T-g16L^ZDugw;=FJeygc%CW?&3Et+(&Fr7WNRxV7AZW z*Yr5Vr^W)>v(fr1Ws`V{y6@TRV7>)M;K_TJIwDv9Wyxq0)>mcA^H}!j) ziiGiAU_ARr3=(xd(^?wv9;oSn4p=Yydim)v+Itm93ve`f9Yg7d&&W|Wo`=5=W&t3# z`v2i;_0>xZAxby+9=4$3E^@CEa_#I8e-IkjlJRh58j&}hE1x%RH0+t+Hw%fZLs|aN zT3>7h-488xCxYZ49JYTqH7E%h!%hFRJPq04zD_@OeePIpRWJk}UH-Tzq`)~(IAE~0+>DQH{ z&Ci-yd|}y{MGbiXM#y|li~hk3LhYiM`D|W{Zk9xR11wZJ%bYXz^V8d)z{L%8Kl3HU z+i2o!bmKO}nlHmqPji+SgADuMm%&?_fSoH|FFTg2C<8r+yNDhkPvAY*exc!k(|`9oT@cyd zA3^skeB8O*DkM6^%18Pav?VC-QoUqzB55)EwOip#%>1 zd>2?xE?v-vYb5rUObBa31T+JSh!bGn$)rjR#o@>roWmNc>)ZJ-iIYMDpr2ou3lecsOMpcTryO=Cob^k5lr?92UWE$BE)`psd zF|T(RY>ioLZQ#@6U%}S6SMp-kRz*)Al{)%+?UdL*Tlxb#47IC?okI}^=-PQ~y*#r_ z_qd2B?y4vDqb6%a;@RIck-#BcB8YbAKj6Jv2W%t?Og18D@&nujhZ}%Dyh0~Q+<^Jg z%)t3sjboE8h{0gsl}SnJX1-dwTNT^h6nn#9mCrii0MO6!{xY-*& zIB$wvyFOfQ3|1P@FRX>HAgqTwl3cQH8OkSUpO@RTjR|?f%G=cPX`CS(vWC(NT_n-*vCk$q-Ja}0f$2*Ib z?Ofhi_*Z1XW38Ijx_NOO$9rfcxUa$7KGM~W-V}CvMU1Mp?Hv%^GFMJH<-uKgZ-l2 z#NP6*#UP(^(^Xqys;lkRgO{hore{s&(`CB#cFhN+!Q-57lC zwA{(W*sp4f_!nUsSqKp?8FBdaAa_5gNzmwiH*Q)5Av1#lAx*7Q?eOkBO4xK#Cfg^g ziH&Ej8VHoYh4ox%@wwUG&@-)*)xEF2`tp-ao_BMp(U$U~N; zbop%7ah%22<}(+*&dpogL~$2tS$LQm=K zP8F^WOG=$s%iZ9Su6pYaz++gK(iC*Qvp6zP+5Hz;loc3Lg`Z?TZ#3bw^?jSSOx>mu+kjVbJaYY(Di|-I~vd%J;KS(;B>T z4Jp@u&mHEsmVWYJ_MqnFTWbTek`_)YaSf8JQ>Smz!Qnq2ouMUOB7N9{>ahcB95Fq2 zdWFLub|I%M;G)7>j&g5YHR^ym`*>;2xn=@NEG-pHdQ#diBJ_8t-C%QM$z_4KnR{~1 z!47sN6vn%0j`PWi(;#(nt7cB4se34~9%>)xwDYdKtB%ak7det9CU=tKR{Pu6X3u`+ zdMASo&hOc5QzH0_Vw-Ag>3u0m_lG^z%#a~Blr{ZqrP>;=?)tb;Mo1dctpA|s;_D@= zOpyOLo5N`>xdLwAS8}@2vdDEDJ3TeqPrpuQvPqj%>^%X?FuZR|)jb6y*uctzv(IOW~uT zX)pvVifG=)=`fjZCf`NW zv2$I?Q`Y`zhs=;J878NqT@^aJPWr?2qbu$|_QrxOueO6@M|CRgd>><~S%z2{=(ds+ z*e=xDpBX3f?hwXXiF(;3fPwxrF(KiE|15VSd){m9c#S+|S|WLRDuo!Det5KOnr$8d zJB~I!T_d`~MC&3;N)$q{cmCNWrk6~Z))0hA;Pe1uc0F5+Wz1;L!OiFXpTeF$vq>%gcI828y6{^J0QR=dHWk)> GiT?#+fB<&@ literal 0 HcmV?d00001 diff --git a/08-Crowdfunding dApp on Core/images/forge-build.PNG b/08-Crowdfunding dApp on Core/images/forge-build.PNG new file mode 100644 index 0000000000000000000000000000000000000000..23c06b8f81a116a86878ac64474cb9530adabb0b GIT binary patch literal 14948 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 O!aXem%?b^>m;Vc%=MUWg literal 0 HcmV?d00001 diff --git a/08-Crowdfunding dApp on Core/images/forge-init.PNG b/08-Crowdfunding dApp on Core/images/forge-init.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5ee42e2c7419c839fb3f50abf1d9f169f1033f7a GIT binary patch literal 35841 zcmb5V2{=^!|2N)FsU$@uCQF2vl9F|9A|#}gvP~gN_GBM(S}3w5p%PQ}D3g6Rt=5?A zyTM?xjA6zYvz_w{-S_W%|NhVOyZ+BJ*JZ|;GuP*w^ZqRF_iOn?T{1J=wd2r^4I4J> zGB(n`ykWyuN#6gX{M&f%Uju)P^FB8ET{hI)P}qKWhIg>VMb}h!!-k@G0nV+hyyNXY zMmPL6Y}oy6?QdhFcb?OR4bjQQ`nr}u_T)N(yG-*d3Ku-Oi{f+E+a2E-)*jmbD(M8d z!K*Y`XlN*=@oU)d3%;uP^WUD@-)N0F9beGqqR@HZLYN52+CB;+Hr=+Ee6%@0dvqG0{sWP27AyQH$6GP@s z9AsbN$PwOM{@1HXAoAIN9cqaN3m+bocr=OFyNy${c z-U%tja;bzF!wBP&y1uG;I$ms*beDQFex)4w((|8Y3sv_>eo30N!EppxPXMMg*R|h+ z;;$UarELS7qilwjGm-T5qH8T50jd@BMp0D1*HHC^0-Vcye7OtM8#p7!MqW-DI*SC1ajUcG#qpi+ z+PSB*OC;4ZbQd%$KK@%kJW}fl6Ik5Ls$BYsN4&A00yusMTwwaor=bNnuB2V)O7L+c z4Bl1)=nAeVT7$P)tIcX(nNNbwo0p@PFiBE9dx0r~svEA(&Physe1%-^CsCt5{igAc@J$;NgoO^;tzhJZmTovEJ2PBn znwR{TkPYE>fca$pFJb4@5$Jh(Gz2|w02I1Rgs2DG1VTTrz9@yV-jSe)3&(ub*thj4v5H*#WqxOJSm z6+;?h9{>AF2ijC-nd7xjQn(X1tBc#~cH3qv0KHngH3*K^W=2=VE*-%t(=Z?_P;V!5 zvP(X*PHa;CZki#NHl4xUEJWq3(&8aIk62h}$oZq!5Q+RuSK_WZH2wL)VgzSJpjrq0 zS!7vGm2gdFPQV(0KBt-FcIZ(0p5cR)H&5oJR9=vZDpDf#Lv;%#{0<~R)b6zq{o21t zi24ZD>3Ed$5v^?^SpWQC!k+ixL6+~3^FTAmeuG|`gZ;v5C3syv-|H*17)^?Atm+k_`Ujtzc-dwRkzO`!qb{gbdY7XSoxqhWKd6>C zVUiRkG5!_(8xb>j0AStXSjPyut;)wYu{MVRf7O8PGGPVFe6Odaw!6?`&>sNv#k7Nm zSlN3m4rBwMco?u6`hbfAg}JMWx7o9V-!?E4$)BR(88bLmAWKo38wd(=+YklC>K`~o zF#MJP3~Cmh*>gQ@0TK(VmZ!Wzvw-JahI5p!Qy7Q@o56xEm1x0wsOv~wE2Og>Y_>%2 zxuL#11MAiXvX-`E0owr0^domBx?bT2v>!K_nflzzbz!*7L$0cs80?b*=q#bID|gsy zkEBca)$T*crf6@y_72X9WRl@G#z2BpcS!TixzxAsW3S|&s)>9)gvjVLI&x_QsgvCo zyIBE_F=8(r^t@Vnth(M!!5bq#B>z!a{QQ5sMZqqYxz!Hx*pJ@f;23=Y0-sbIkeAT7@@V%2KRXPTSDuLI_%iVaUwDD^j96X+a3FIvDh zD~=^!1#y?A?4tS4D?`;S_(5P{Y3lP7EE#aKDUenK(5eS8_S|XY)?mvrR@HnkaRn2G z*7RLPK+Lstvtff4N~kk_(j9dk1NKHcbr~2*Of{nU3nITEgFC_%G`v=$SdU-st#C+q zCc-9v+|gQcQE+r>#dp8w>e03Z+8pZSVbQ8ujo^gv03qt*eI1n>7+p;ww{)LDWOu^b zlS2O2-^I&iGLA+)Yo^cT^S@_XGEeS{`aMNoP@CbyP3a-e?xha2yDW!u8O>N|SXr;3 zGn7a)IRsq-aTLB$mz)&?))Q$~-bpjHh}bDEW7Zy{ZtbxMW1uu&pt*jmf}>TY%P?>% z293f*C!AUi3m{X#aZD+jH~z58YMlCPV3!><4ZqF86}04iG!NfH47;*;j@1iwlW~a- zEjUixW5{wadyx)Pt@|!r4~_|_r#DSaK{HpBxYM|vb6GFUf=_?YLV$VfQwze zBKh)Qz1vF@u6Dvqys8~{b8N|S;)OljNk@67LEi8q!p;MDzGy;S=({w^1c1KKpOdh`*1M^i%Po%H? zw?FY&PJ_0PibsXimh8$6pO?brB&AesEG4Fd?)q6yJUmCd|5QQH4UtWcP#4m*y6$R` zrtOkH3)5VDJv$uV@-!kr80&Yk@|#`o9M0CSdpu8!7m7hld8tP)65e=XNy7E>=RehCK<+FBi#!nV`YHF3+!OvaK`gl zWD4{FBuTXwq;vzG&n|qh^S>4sc|T1nOQWW}D|+c&wkVk~_$mX+j=U`@=?Ru4V{+3Ae&)H?Q&P`GW@Iya?+IOg zdROm+*0c~nNXodZ?{RUjq-TJ<-i2G{Pwh}Oey`9+!@mXSH}Ma00jg7j=(XT21ndf6 zhB#nFFkGhgxxJjj7>6%cD5h38#w(^a=HhFQ=_REz=hGMQqN*$3kLW$l`{j5p!~$wK z%Z)M)-}x?AP)ZuZdCk6PaGsU$N}6L1${{c`~d6< z7d3ADL8~-cc6mpxSKxMe642zv$II0|D-h=e*m_^2Ij<=fe85l73{?m-I&rrLgJc`B z6px}Jwx00vW0KCXO1_@iwSUts#ag>TJ3z1mC{BTQx`Vq~%pFPnoJ^x(GjS|#$=-zJ z!KF-nyL3C;z$gXUCn7{0+z{#&1>C%;8keU98gtTRSUc`Dit>;C>eV~4sfk?KCG}82 zMsHVbmbmG~JyPc#<9DQU2S2Rx#iwlz{>#jbv8#vfZ5ao@6Nf}PHvOF0Dm1R7y;TACbk$rxU!tQ{Sw)tG9|!E=3CX$Y8FWu({Ka!g z!c(;Euj7-k6@&q(6EG7}>A=NN>)aolK)MVgPg=Er(-*)EGca4QqsHR5ry7TdY3*gbP z#UA{O?>Eh{AIqi&`^TB|<6%cKIA5KFCH*t_y1rAk>ucP0)Tv=kde3xygms3t#8V~e zz*=(p{nm=sCta-+6|}A+;JsHevGddmpJU~Djr#gYqn(J$-%(~I_VYNQ$mgR7 z@gywUDhbnGIFcz;SR)_H8(_kP+bvmfY(kBQIq4Q}4UyHm%i3Xi{j5VYAb-AhC^quq zaGc`SqGv`zLc&@?_RF{j_C|QP#w|U;VXR_j#<10oGJ87A^zx^{Z__2`N*$eH$x)*RU9vx?*v}8lC2~jc7o~Pjg z2H)yV83Q_!6+LEXx*=5a5CPUJ#3$NtO{HF#J!RSWu9DJ#49t%4)fm~U^~70rtRz&W z-*kr4Wx=clt}Ae4+P;$d3cXkR8Y{ znguGLL6NG#Wk8LJ+keQ0^-i;J+0XL!3TwecA!w$j_ZA$w&Xpqj40JuS1uE)1p@Xx1 zRnWcTWV4H#*F!t_u2H|qyY3ZvLVR}nM zQuFM~93@NEncX?tIX^RXlkAwb{14mU24Z$nS!k*9;S6YN+f#}G+6=L{a5_tn5g+)e zjid_B#s8LjBhI~V;_-w0hW5$9Ja#kcY45UTHx%& zvx9c?%~;S&sM8vd+YKG_y;HqUf8-$7zxeuBD4(X!gU>Hyxd9#}k$5QNL#_V6&-hr8z?^&asV+4OaTk#hCB^eW6SF)?R7H%x$c2lw-r^0_Foam`2W~^>Au{UsUxt?63$4fN2-v&5>qB^v9*zhjYHf z4Q?WP`hzS1CWIXE8{90^8Lih{zx_QXj_fVEvb&x6utDb;Jw?jNN%M@Ot@sD2^57Cx z{2@-rjU66(TZn|SG10DqE5VZzCBRIWS|=}g{`g@A-NZQGXho*!d+ucpPRdPudgID9 z9cs?D^U6iHv*Hc?6l&x+`CT|J=%16~|IDTe(^~rOV|T}L0@zV;H`MJ#(?O4!X&Ld0 ziQ6cPDZr`zoqRQsAG3qSFA}FH;;MHi#Mcwebz^vXpTp0LW3I%TJ#S z>jnGjUEVj`o>9Dd-c33J(&|3TSfF(x+4@iU#T4&7flpQ-f5kr0x~wSm=B%;Ey9Icf zwP4|=XxGs%Fhk2j5;Ew$SR?HA-PD@`aA<5S?)?kCu4TaxA#3WG0OS*`%S`ve&V0;-q6A?|%@ zM#nBF)U@IXsU<5IcU0Acx7|6EEhD0Fo-jAbofGtAR15!S0-*epkdgpIhm73JFpG+N7=Q<#xCru>vE(rblYe&sK$)1^h80Wr@Xa2_;WQrT=vheoP z`Hh&a{%%ZEttZnY!E~DKOMC^d_Z3=R!fJ0cn!-khUs1WN!W#K1!%M_9z!#6v3fW+8 z%kom9_pusDD1h0keaLSLOQWZ#ig{w>^g{TAPJWfjI)AKgV&QC?VvXnng{a&##q-Tw}_u6yb#h0(p2KW>LBD5-NFQJ`*f2oQuYi)!@iOyCp^_lVHg^si8^U!UL$d_8 z-`AYLvc&q2prC&50fp+$0pMwWg>>C==IKGV$GCxOHl6xUEM=lE^%d@SyF=`TMknXE z(h9L#hP3UZ2Fo7gmL5yjesgMY;Ovg5BT`VAaDY-1j{vFllR7z`W^e(FvKF+=C0q6m9P} zpkEAJ?i%!8>w`o+e{(Qt0r_jO1lAd-vs%&=F!9DBA((~?>+<0H{G|fjY#<0%S)}?7 z%wg1+EV(@gHA^0q4o?vBhr$lB?QOB2r8B%noB#nKnf`Wxztk%8mi7xXr7GvGw*K^9 z8-@3y|M{kBlhEFO&hb8_Z)1Vc&xjPUW!T@pv{kQG z)?4{+Je}Qg2)DBn>D4heEon-BMHbyPn*vX%1A{k1liz~1pkcM?Yhv zm_JI~92Vz#zD9l5IRTHQAk_JS#K(zzu=$SBC3z)l5u@Ja?fP@|_9}$N85tn$!%WS& z2N!C*^XiKxkaHiql!)}XZE6y|uDP#<8DjEAw>uO^?IB zq*oZfd`>1G5mr~aSX(W)3zwx-zUT+P3s?VkdhnJ&+iZ}}$6S4*bKK&)xVw7($)xtq z2SxFAD|^(t;pfw%7ioFGsBI|_VjYq|wOI>}n_Q-$hP)_(^IAc^2u_Th! zyZnYnT6nrMK2b@AnF3l>{HjWK?U=NctpV{z_NtnOqyj*--&pf$5bfI9lZMN$tXg(CTSnu@D;8X zR^5~+#Y1|BTJo@RA{VZ6xtPBl*{Pg1_ zbgl1ftD{pyzQf4__{O&5N@t`5tREMkI7b|7w@j$APh(Q>)OuE4jxIpN~3K&abePc0lh}#4GYtkC3lHC%>;VNSr0hl%u}gPh#x?~;LhP>o29=V9|%*v%Cl zh4GD65Vju8bRf^PIx^|+XdZrc8zt9A7(^>i)Q1>z`?kIR-e8cHbPDma&|KnjnjLB8 zBhheqE0F$UY48>qal1krXGdgY5X`l;aeq%*?Q@}0Sx-fTVjhcHY(%|#^(iRoc;~T0U6LeNG8FA`zRQ>*ky9ksJAK>RGXm2KlsH7 z=p!`#=9Ncc(<%KbhqD3)uDoke&5ml@+Euq+xdz4((dZpgU}EL8a%SdIniog59Mg9- zYsxK7Uw>tGa@V2!H+kwa2M}RftBC^ly~lf@=uIJ z%~FSo5_$1SHn`((NZgM#$4j3M(Jek%#>@5lqHS%s2l@skOuA2&C;gHRPDq)Dox5kQ zfc!2bbQF81XwEYQTXAmKU3lYd)+dT7Xr7PB{3izFm2SGhJNUr9Pe7B`UT`YIjzP^u*Gj}!i~@wzg;;+P@pz)!ttbS zeXAEEUh1-(IGa;$E9^uDD2E#78D82LO)$5|SP5{k9l(_g!}p zzj~8Lo0_G7Qb5Mbu0U@gH=_E-V%Cq$M2%xe?G|()#1N9*AAaCs9jT!e>G-rb$~~f56?eEDR6YeQ zxd=jh4`TNhowkvPBOXFXG?V@4n342yRNQ-@IuStAhO~K1^q+a~d1~x=K4^3QJX#A zq%7}p50e9vv7P+3VQ)OV3(y|p!(?*5WaxK*`$)*5<S5Nq(v04$Zwx2fU!IjHCFG_QpUyqFN`qUOYIg z<|t*Hud`MotLJ=lONO#rg_v9gz6U6BvCD%G4J>%f!mPj>yeY1VTlJecgLr%V?uc}O z_@BpowjCM1tm6UKSsfkYd$brC@q6Zlar6QCj3)l=%v&hPCtO!4-{3eWNPj<6sa5gB z;N|3Ug3;52{nq<(oz9C&-YKdo&!9TwZH*{EGg5+T1l?xS17UKW++k2?XlJUS<%Ep~ zTXymbe-UeF{C3c$v}R{TWGQ^+<~Cof-If=8qCqo{9&OAiHPW_O&q8P)pG&JX?&&_H z;!x(%9(?d(L>sVkpnmev!Ff=TUnm?Ft|~itLN{Uu;=1&4m8ly*3V%`#rZ$s}n=M-prP`(^_7(1__PUNA{q)U?wfLL94R z5RcpZ6A^J_>vvHpsrrSqm^Pm_Z{uSAnOVeW0D~=E#fe5E=nb6L!a}b&PWM1l{8&iE z{Ga&U|F9~Rb^W_I4K}86;ebQG=*hd9*R-^yi%-0mcTTl`U5{as$y@Uo>^?m(H06k;ctJ zqq7Jz!tu7~2(=1K=WOS#Upnx*HsFzBX-mb;(17HCx({hP)BU)1QgJ1q@?p>y@BM_w zcQjwGKOCK^3jZz~V18Juau9r zW6Tx|7ML}NoF%Er-3Y%&$ABM%^)ZBAYUmiZTbMQ{ER?`}4fAmN5O_`VPt=Ym7Logp zAcMZQd`zA9F5-{z$Spl0(o8;oElt{OuFs8K(m4nEtrzIQY&qEpeV>5`;xUxbv5a*5 zOXQz6YQ_Hw*D`#l$me-&#E_>#1G)w3bZfOF0-RGj_+X=wH9veMIjM?eOQKcehH( z{P}PF{fO27;j}C(y>nff+Es49f!>2!Bc4S>OCS#5s_q6BpPv(h&xCFh z^P%dv8u=(wZr8*l~Y@a0!;i6OXqAXuaWD3S3jc3lM; zs;S(9Z%jW}kanLD-%%)B(+6@A_YKez>l9aMen;-iZPM17UZqXZm$qMB2=1$lZ?7p- zXCpTL2RlgHM>TBJb^ru-i8^jq=@>tJwX@6acyhY=);b(g^M z1gG6PS0c>0j0@K6Bo6(a^FskEu1L166IY6uD~7`jhTvr5keqtzj1y|7$5YTIY}gKy z)<~gc?18L#qSVySW>@|4IQc^hZMzDf<%kNfLZ)XmknV=nDzT-c)Q%#OS6sN<(JMH} z&h|0M5gXHE_L<%2(HAx14uH&M?d&_mT|LP%`@TgHZ;o#R|N3A9|PGK&6XVmfY)IX#bf z5bAYT;~-&yVSaZF#XKHlsaIxfR7w}zNgYSLiW?<~$wyo(EDw?MGkWU-rVdh=5=Xq=8TgSOk^b8nmmuGb5i zt~fc+#dwyTp-|N+ZhbKws6be)n555Mjpt~{@xnkUu z*;3HaiHuurO0oGJ(dskhO-9ha78chFjknLUGH+3khjR>A%Us7o9^}080``k}II(}O z;ut4)U1#0F4v6Iu)V@r-2KwCO708mN_U-SH(u4Rs&x0RNNLK6sMfr4dE$C9}GHgJ; z(}fK5(b}dEQSM%Mi(@F0ESn)bu;qV*W^zB+U4uZ2S17usff50tZ!WiURN`UA4Fu#* zp321QTBkHjA=t{|)c@uU5*_nhIIemv;6ZEUU1E-@D#uEOf3}k2jS_t}gOT@a%-bC* zD0c$GoRpa7P;AU{_-B_fhHb?>UZ3*g2*XfId);h^7t%EmdF#eYG(v9|fz&kXBq}=+7{z zH$ue){58n3K_jX-@EH#GD5=jR|4f|@iPG|$^9gT0#Bp~)-5Y^+4+=|ORef}`dvT9- z=%Id7eF@uZ-E~Pq-0C^Qi?0o?SNdt&l7$6z>%xe9^O6b0N<3^Py-gc*c`+E{!PV5IVWr5?t7_V5 zbmScgD&JMklrx^t0epqeBAb|kJ!H`diS*oyUFRVgUPT41;ZfZNb>|Pr2Q3|-i{Lzy zEd5$k(6(;PK4Sy!AqEvqV2Yx!D>wiS9 znoqp0iHU0ntX@j(N84Mi$*+5b#5sn8d)T*RNLh}Yvjofn7#)lGwd&!*30MJ}m)Y-9 zrmeoR4WB!3vgt_8DI()4oA^!tnouVbWpYYKBMTp`cZ;`H>GwqBs!qZ`@fN7+CH7AR zy}_th;0knf1^3kwEy5RF=BhuD(qgfN5 zY>&ufcU0+EC+5;VX>H12RHMIVF%uloQ3FGAF#htDT^_?k{ z;vsHkWVdmn4o<0W%MG58+i;Ryr%7ov;{h)U=91_HIFG z#_D#e>KgV62py!VPlL_rIFHm(+?o!{#KWV4IYGSj{;vy=e;KN8^*cpzBjmYZn zea5Q%RgiXm*;|MS1OIL*z zf+a&;$@r6W^FS)z8(l++Z&fy4V+Odw&pH7+CBhia2wV;OF^1c<7j+XxaKm`JH5jHW z8VG<;94P8J^ObTc8nUhAqz0KbI+&lr4ddc%E2mv@aj<(6^cA=Nxr5Z&Xy-f*j*euZ z6Uq&ynzq-MliXi(G?B2Ndke@~U{hzEiN=v4Gw~1cDy4Y+6M&A8MRY;DTG`UL1j20^ zL*r&QwL#nO!S~)hp^|4ho*pIMD1Hb9{dIFE$@KN4gtDgGaInP6%E7NQnmg3Y@{ueb zPugdn9{e*LzoeR=p6~#xB6WN)Z5gRih|tNZUP%)X4+Y~uVa6a@KWh#%$x>&n(=)$O zab;H#D`S+EfcaV2RF6E?x8j#1nI4L3H3`hY*aTVv}kK?!S zsEZN3|4vL!KG9oBdgZk{QYe7 zGhRQT+d%fuX@scmjoH`lvBGTRt+mONzeM_c8Zi_C$;2UPv~y#wxHeqj5}Aq-go#!# zH^#B(F*ulk-3X3AL+Ru!nHK{i_*_f8VA0lcgJ{lTvK7^))6I7Z;~6&gfDsQU`GVC; z-<=bcgrn#rt}~nag3d@43j-q`#rKy;E&|oegT+q<2S-=eI*!L0FvgKfUoI?-+Z4Xo zmOIxkCXYDWT7ig>Pb#}K4!ah6d?K7!Db`&ekPpZU;gwyDG&_oSQ`+#!?ol`N&P$dTY9}b4~gy3=}2>k?n zl4Q4Hc|F~n!{&)E?*ug|eZRe0mU(L`h?;9>pX^!<=qB`_(F$h>v(kjHdF}p5?t7kc zoE3`TX~uTk#-Rl?PA&!Lz`;Upp$8h`Wrir&d0r+=3Iop`7!xpGKn%!f6f&o%nD2CU zU6&wRbh1AZ9fV=?n6tJ)$c`1}Ov4D&9oL;?N`6|#wR&NY@{O2G9*fxJ9M}f$`@8Gi zMqvvCSo2!aJ^5pG8AM=7j-!;mdw4-+I?=|sqJ`XcG87!>w%Ob*fqVb? zOuMTKvFSQOvsqBSPiVINNofiC_&*BlC1~UCBaYDH_(gM#37shAWsCrQ^IaZ~>?a-w zCiA9sHCq2HtI-1C4&@%hKxDS1^v8cuMvbD4kAO*^Sb(wWyNW-J<|)iq$^p#9D9Ci8{ku#z@vr&5d;++>{J}ZlGxV? zf)OG$3q4k4R`Je8bo3`2!jqeenA_4pswm?~ta5!iXszmKnE^E5xg+6%EhP`dL$igc zqg1GXx*^h?VS>v+E)jM3VVDt?(P7H_N*9?{rQRrjO z35b9iKXmRPAQ|*+GtV74gB!*R!eOCoPtcSGe$v8h!JL5ZvbSHA;_hw3%@I$LNRArN zbW(;C3GLZe@qfzNvT`GR93jCFpMHUR>|b*&NreF#OA02!R|8fJhs8zNoRy zmmV+W`&?5xTrT>X&Y~+*9Y2M-|ILhv_VKLm{~^Zorq_wF1PaMx{T{qy2o*DotI%%& zYuktX1M+p#IMn(bc&*)mymvEO`<`C;mvpfpXtMoViltr9g>$|9T1;~DuZkOZp;ZLz zh+d9t@zJ*(8O#nE`oJLX1|Fbvp+~I(`bIuwRsEz>(^l6O(OXkeMlpn!$j|Nm_50Jj zO>i6DO-_8_ESA@JC&4pD76E&n+Wjw{ZF0wdlehmW{NGMD6vCqUL?+6?ltg z-d$7o7x7cuxO~Mv9Yj9j`reWawb{#W_y>?0S#{IfuS&cm^SG#~z-aJpw7r_3TfQM; zBKp6SaHfwv-h3J9Vw=RUxuzkG;1!zNMHh&UI>vV_{(CQG4)vosbv~^!zX={8jatTZCoe5fE z`9Bg9bT93?D3STMyghea{RxZIX22#Lp1wQe^s!65^nD`9g-uCWXUXjHO8e<=KUQfc z3b){XGYbB2Wo|BrYGz>McB9A zJ^zmY?l`42i%}CLWBgvWdM1{c)%DAsAEKnRo~VzlN9)dg2-DmT#!Zpa-fC`Ek9wdz z*ry|U1J|@h?4_2EVxx$R!;OswzsxXl!vcRC3S(4a^fQj(y)g27XC9R#%YLVIaCn|; zbOtn{{NwOnwc@OMQV?&a;+NORry3Er=Iw^k-vLy0Cvq+|hr03#gZ7{K^wGd9hiYPI zJ$RxXdl)n}c?}!q>Er#{e3m?coM(5#T;KENSM?%g`&C&rw=~0jXX0I*e<^0ZtPaaz z-C)BFn5W#86c9let|zZ=YT}B}AHp14tzTTw1cg`Dtp9_7JnKJS!qUtl;Yeyc+dkwx zEnLZ=jCz`yhdUg|XKC*o939&3T95&+?qcACQh@%|W1jAQFM0s9CBvJ=ye$C?v@oXo zI0Z)p>v+-=k2`>?03Q*{1}M>V^FlCC8_DoK#VVvVtmU_!Trco7Xzx%_L|%hrn^1zXONTUSOEa`FUIn z-g}5G-$RpY<17ts|2yg`!h0oo+kYsl3GL{h6hkI%3}3W$D_i$H_t!MDZ{TZ&f|L>| z?fW$n;r8*0YtkZ${RIBMf z9k5YZ^4sl-KKwrUpX5SNsn8eT3m6AH-&C#1=1fOSS!npsnr^NOZJoRV{Bhq~pl`kV zA@ae+GAwTjlMl63a-`>XC1YH1$+!y`H2M`cv5d3GxkK8% z4^m1qxsm%2omW+(ZmQNc?HIc)!)dC>5+z*klvZyP?2q@k0xD}LBKO=lyRDMjby|W7 zV|f($uF33xAy>a9&h;^pBtYfS80j~EHZ5xkL>vht#0ile9Fn9PIH6FjPGK}F-xn!xP9 z4z@F}PM#fR&~9jKg0bg1*gsL-aZ_ z<-jARU;^gN=q0oRFIe(~yQX6+<`sK{wysO=Y;!E8vQKss&);Vh7sUQa_glu4ppwpi zo*Sv+e^re(s~N?`tz<7E5$5F7;G3%A_&q9&?{!tYcD^4dXNBHV1^c0)R<+n4K1}7B5yVrYw0rZkp}VHf z%Ah*;!zBbeP@r?r;BEUl3p9)d)j~m^TaTwsmfX9bxnCkFEGJy-|A|GIzljoKsm-%L zL3PzL0opiAO78cQubffqKBM~uoAjFwq`mO2lJ#NdYHH>7DJxE3rU*?CkTY6o++&bV2(kd zSv8BWV_^B5s4e(P*oHD!1Ajl3ZDqsW%N2W%%lfuNI!;jiA9VSeAwbu9XqbEt#gj3b z$)taJ>o)`2|9fce8Si}#3II9DX9?y}jw&Oof5bYgN6I{Z?WnR7a+1fY zC%`Uv_s8`u1*Ds`RM-mhCeW@wm{(j?Jd}II!?5(}{m07=(KmvG5^WKNeIZ$DYolAKS48? z!Xj`6-0lj2I`@O=<^%dh70^TWbCMT{So3H}%nd+W-s1(C)41zMM~+A zapDkZ7S~^*+?_)9a5>F`zt9It-{?zZGqLfT4k*(MwqiLSXk9(P4Gdvs)Vvvw324A> zwx}R=x=pNW{G0%PbCEb?0a&q_@B2{&@ApO8M|Lsi zMw|P0_HmMBqHPO7qGuoudfv(_licAy;X|tlGVwT7u+<(-{d;L9Gt(BhPN85{DnfZ$ zU;ilL;2WT%jQz(2@@p50=M64fEA>7_@IgWiYYx5I1J$qmTsZgdjA|c-3{RWjzKGlz zrH8FN3Y0m%C8b8n4W%e@rB61CcPZZ%(U3dPa_vZTdbO31pAN?FNV4E zwxG!`V%A|E?Ok?&3HN(lq0#rI)mt;If@P7L47ne;DH$lR;-Z-Be{foTKgVa;dtKGv z|G%mFmBIf~^`mWF);#3GEa$@op|>Tg)B47N6hMV%Et!yQ6Ico#`6kj`4cM)e_NT)` zpkAKiR)J-D#*o#{CU80T7#Nu)?sH#M?jcBy?8xx(5Y+sT-8ILOkhxSS3RE}COSC$fH{;oCp*v1K~9OKh~ElNsC0ZDrV z#LN^At}jo2sr}M#D%co*z0yCCt0ZEP07T)wMjG6$Nw`WfS_e(^e}Sf`vqH83H~EM) zJV!3cub1iHLCm#kpbW9t{OkE(dAHSt@SWus-;?zd$S=?zaU+%41<=vs8zwMms-_&jW|3fMN_UNvI7)h4NlhQt|cP*PsxGFxt zO!#c9w8F@#q5m}dnb~P0HTg(;P*W%ShrpiCt23{`=7d9YM`_%Y=lei$YuBOxOvkK~ zciNkQ_LM$wh+QQ6*nsPhWg|flNlDG=T#@goE2;tXr=BE)RvW|r zUM<&dK4n|vvmKIp3-wv=#-sLBc)h0JUf4Q}=ZOocs3{KvTc@9#%0I|ibS1{vtF7&M zBnFuAKVP>Yh}L7*yvgek;Jy7N#ir>=yIoPA5BMm^o6mHF|ha=<>fJJN^Ut{$@J zxU2W<>^r)r#Df66q-IlV@8ZzchN`FXIvJ)ixp49KD#R@bk;&9B=l8{Ua;~T0m+eA# z*%2KL2~zzzEtrlq7x_ttK2CPDsvC#siYWmsW!{vYyw06A>|$F@Qjqb{CWR|BYHLQA z3YTYl36)CnM4hOml92CJUWYJwMd+m&RL1R^2J?i5WSbA|Erk{Ew$*jf8q1C0VM2e1 zUjv4DGe_hrt-u*Zy!>=*2zCf~1b537hiZPOW;5-uVREIFpJy{jm||#eqj~-x3-;Rc z-*3HeJ=`O`llApYjXJ2PL?0!_z`A?|s*ELOK1gYTM-XTPqiU(zxdr(O#jOXsrQw+dEr;Q=OsFS zl6@r7PU+Gtpl}xM5qK&K?}z>au6bQQ<`5P2Ed6&w#FO=He5RjprbBk>7i4^%dORj) z$QCJDO!~fnRacw}vU4PaAKs~-@K#B|G^_Ah=!Nwsz=+)oD?M*hq$LF!FJsM$`CkpA z&p|l~t>3hD9H!*Duk2AAnnGS-ZaeNd>%wiR*xQ%tVmYLp(KBVLushIQv*-h1)=?Xm zYw5Y|Yuc)87R>mp%O3fXv01`y7XFz|6|gow*IzyZMUl@mF3a>=|JtJQ#jsO(O9aQD z={vP%1Gd1*TR1@I$1U?2m<@ZLdrGc6pf3=4`HP8r|MNHV$g~1QJy~|2W&K9ORIlOm zw_hh^lN9($f8YcMK9avTVK+=2@Pa?vTRhGqMMQ>W z)p&eiV92|_-9rH(#8}+}wpEI24&VkV9BJN{M=c1B`|kN^7Bxk~9%hmt+vxD0HsSN_ zYqG^;>zQda9GcBt_5UXf|Esb$kB74T-^Sf-NMR5mWGG3Jh_cL-Mg}3GWXW2{G9vpj zWoPUqvLt&5$-ZY7X)IX>W8Zhi7|hIbjY{|D`+Q!%@ALDY7qeXFbzbLroX7h(jyKh& zxS%|IWt4tpG;nk@K#+Ux+>xVkEluk))MncBxr{VpUJ9_adZD_Ad%f#KnXBA)nTJE$ zSLwO)Q5Pi51Ny><$l1{l0FdBTigufOs*AzA3J=WH~ zx7xgwLq9f@oW-lOkV4)fYOg_@2|KmoV(z=5Vd6j6R|9{BOswY>3Y-BvVR5rHUfbu- zLr*`wtC#pe&X?y*D$HEOqj{p>>mVA#x!nxym;Y%H#UtDA8;ul+eQ0)_AziT(S-kcd zzeh>7+5h?47^&kkNo{Z!pr}Sf+5RaVwFB1ti(o858H3omS^BW4o|N{97@N9r2z#qS^y|^CbxPS zNlVl(8n9mz$dkYKL<$21ppNg#4YR_6=cbpS?7Q3HQ;00m6LHyLkSSvKtW0gBr( z(gZ|&D)Bmm`k{FgqPEv+;fc$-%gvdI4IQj_RPkXlOs%=vQOrs$3kijeoS_QXu22{8yo|CeD|uJ!_wTIO1DG+o{^RJoeLB92X$Ik-YothIMG&!IO@2ymZg?;A8aH|%p4o0$oy*t}T2W6rnS==5t#*Nlc|YAPa{F}B%3X^BR3v*=j3&7g4@Eg*@9Ae} ztEKOuK9MrMkPh$Q&XkVkA0Q3AYiH#y0^tg6oA0vYnUarhO8S%R1AW7Q z9DMk$5Lh^3#maf5T6_jq?{bEodp%O)uEWB?t zVdq2VEFcd3-nH4@H4d?~lvaOrI4;>HJM48Ai#GJVdV5D$n8bIS*c~Z)H#w7^y}o<9 z?=_0n{GKT%`s6ur{ta2W`EX6XWw*_$6T1(Df?-k+3KC-7M?#r^BgfcJ`*UK)&K7$? z!o4SUuX|l!G2G94BqQRhU!=AMGY8zDJeIzO-HLCx*gEGe)ru^I3I}CU=2Lf&xSst>h-kJPq^ccogp4_sTtt?ZXdotpj)~=)lDe7WMW;9e8 z~K)o?1M%x<5mtgr&vQpB~e`~P!y~Yj%-$gUCe~v5{Xo%wdq--Ez|$<{AQS6 zRY01BFjBTFPH6_eGy*8KSAO50SQkxdVI5!@NX0FEHo6cZ44mK4!V&;V4b^OJ`}0 z33HO1b9?QtiPTD|AXN#DflW=qmgB6l=yAvJLc0hUe??70?#hb#^P7*E9lCY|zMj4C ztgm1OZB@C#gz04Ogln!;yc;>Ka*d?FfhPQWxFX;!vKP1S2y(Q{UMe~#&YGFVIwxm) zAM`+Pw%?O?nbzmVI|%>X6Q{um;5z-6DSI7N380@nrcQm(w%9rR0plk2PcGi_5ywQ)cK8o_RVd4BJhw->-SS{a5h?6>q)9G!?Jb9~m%2bl93uWW}H zp|SVKnonF_bdY>pj~hR!*r8w<<+z=J(n(#Tg?6#5CGO7o_4B9vH~Q(@FbS9B9xniN z<>m8!%k~4ZLEq6Cg+;{zYC%sOi61xw0>P=5pnEwj`;hD1_R|!eZ<1z=pmX5lRW0Ec zIdKI0auGR>rf5rm^{wIcSl>R_opT|qAPt4f$tA3%H$QAd6rzqgk$_w$g8tdd$#bTs zc!#zcEJaUvnxukm#ZL)z-P&cI7YvA6ny0|OGuGwL-Mo&!j?>IK)4@uHm|n&hxl{;) zQ`aET`gZ>9IkFNZtwVj5Y8K|EuZv^%I3rx8=oG=JqR+JOH}aG>Kd@V1GgpzRtGTin zS}NL`b2_BRwu^Gp|C&**32(ruM$+K0ekEZ!0I?n;z#5N-rtDq*x)AGrMWuBq#?>{S z>wbdir^Ter^y2fy1_GBno%=T=t;{5>snz(O?26em(@*itV;3>`1WCb_k1HpS+hOQA z*%&--2^Vwqd0Yu0TesfYBA=9KK9-hucj9C2Qe69HKKq%K2|0ZKjvLB5kdy`O=e zAs@wZTzS{qTYs`voHQontx;+>CBiUrJ(&sXH6+Qqz$1+H$|hF26Afe8tE(PJ$ME?i z0YwQ1T-e!8ZA%z`& z`ur;04{r;NU?gU*ZTELL5AaNEN@dE!NwVdcMa;#Yr%|R&z;?@%6_CIJPKDPzzgXQi zlh&u!j0+zRFBjm~eAJ46cM7BcPT=N^4uX?HScOB`>K!eKD8Qn<-c2!HEA38yP)=RF zQetq&_nRe1Gx5d-kFyf0PIBM#ef4c(a24^(p2`&Rj@Uf(qzOi!$hn26MDhntnA!S1 zAh24s7e9V0P(u9z;_1BWU3qv9G8e~Mm%LoF{!zm7($=B4IK3B}%T*8^04TK9Bp~Fj zIzN^>f%;JeCv}Dub-mjIi z@!-Gr6CPjY+8>xp{wso1IzW(mz`M)+jbYq{2YQ0qk$EhXr^O5hVCH}k}6@sqnoE)S-rE227P9@_%pWyc` z1wQSKZq7EYC685Sw|B^)ipaqa1l*JZ#xg8dgwY(<>fAYsAgi^c0pN@x1wjCz6hH_; z>ss04p#I(T%t8+(2gKeokNP9F?n_(JVGP9Q1{m$NZatpiltB{rsX@k_rqY!-fIKoU zHmGPG{Mz);VUM`#@Q`>LD6sGP&FkoUT%9s7#X+NRJRNy6Uyp{J`!iUhm9JXCA!IsxE<{Hmfn2f`eiv*-|fES_1Pnw zHTH706A@lvZ(hcj);L~^{$E{dt1E!L(y<6cSv z>b825S$VQOxj7xrHiENW&y%fjYMq{f$<|$aLY@rh37;&T)F`4Q_P{I0H+flD{V@mR-qHU3cRz`FRV}yY9m6b%R%;WvOAu zLDDWF@lv_=LSiyehU}WsIG8T4v%cfMzS2SdPBQnVWB4=#nkx~FFbJ<{^Yj?yd+uSr zoyM4)JZ@AbQzT7S_365eH6~YF5gEayrB|#wmLvky^kD`bGcHwb0Ek`lO9{ zM6i#FC`6wW^#TGp94X(jdW{IFNI>4cA7t{qxgu_}3MfCvFYYa0h~~lq#KE0f5z%-BPh^kD8&o$ zhR%syHnrHQ2^{zntP@~+@lX&Q2qV%U`|7hmx4(}!P?u&tl?iZi<>zhp$t$n&*u~Ht zX-po>=j74{`usHUkI3`n0x}!HAAF;}bnzd(_`uz356GRi27!ppIYJnKBE!Sj@!Pfp z5t!APvb~2N*0asYXdt=~)V=^h1x^%jk)Jm5zds6&10bZy^NTMM+j3#Em=&>_f(5-3 z$~);PCs8ym{zyyB04w=&2e;U#5~c8_>EP|5R~4QRhB8KXxu}+;+xl&ZogN@Nuj!Nt zA#tSCX|ms@3xwy-+Vt{M1FXexO!lC9+a_PhCVc7xYnduYHJt$^qjx0WQY5oHw*n!_ zO`7jx_P6DaNF`8LFX=AH4396cBRu%-x)J=WLZPs{Qn7K&P&&Ph+i;fc&L>h*_0{cW zaDU_TFotNdTtllP0lkkYyLKgoDu>nA?)Dn!{eOT+_eIV|=|`U1x)H!~u<27!h`SH+ z&3l$)Is84b+XJNW7TdcA!qGM9#1f)qst>LQ)eM%KZ;@Z_^%{D{u}VRZ&;KAuySeN0 zD^@kSu(nBLV+e*>GiE4NW9nt`HlCIbBdYHhm}GF;0v2vsLHFyfe6orr-<{&LEfh>Z z7Sv(5PN7YS^?jSWdXC??BpmVm{lfMJd9rCq5h{bv))BDzxl8$5!^7V-&_ zN`v%a9e!<7%D6JJLS+`g0Y=jHrWM6pf2U5ghqR;X{$x=EU9A2O6zNBumiL4tqt9tQ zYLbZd{)GleWGIZF6m+}Z^$Kl) zE@f4agLTtCcsFn_!cOKS-)nN-sRl`QgO!!em>{o%QK*yYk)vx$lpj$V0&zJXXVP9_X{(xWP8bxzzD3@ zd;mrO!!yY>idV!IGWNb8M=2B$p5(Lj_fI6JIIZA1IhMq=NK5X_k+mC4#@a7z6j~V) zA9Iy7&*vTavFgNg?aQ>tvif+LV!Y<&#$j9Ial7Lb3W6rAa__#5zEp5Gbs0hO!9iK%2o-Zq7g$Th3p@HTl1s0fe|GTozn1lUtcU-@vw)nzlSCG`KTiZz>ObJg8*35);k9pVinzqf zhan1kORaoDnp2&A`owe|^Jr2hTVd%>fQVxzwAU8_#Y<%wcSVY`$MjV0R0-E@?D=0w zvA|p2ya+g$nI9SewaPi0LUTy@@HK`11y7b<{8yb0c#HpCRSE9^ISE)6RLmN-SykKKwyB=-gRWtnKH}{kpH)v%*`{vt?ou zG1~$0i#g2mWUwVPTL?jZ`JN=4+FsqECW5zE?DVLw3X|wRjlrhK84OL2KMO?{k}4`E z?ic1Im@PfY7|u6#^>jL0TsEx$7@Tn$Pp)jeH4DKfNM{a)&4~TFl~wdGxT?XcnV{GJ(4Aa8S_N(tDug%kiq#@nAD_=s@0>T}G;_vGZW6on${(LTfkzq#}Cko={O zs^%VX!Yutrq1RRsL#Fsy5Ss_{Hy{`}>-+UuFRVs2`jXaGS%UB~_k3SBAJH(Nqg4la z>f0EGL%69qyK@b}gWq<3nl8kpx#YKpm8|%%vb~9! zoJmY4GYw*|k=-y59c%!Z-kwSvb01*b| zD>w!UTe)UzTa%59C&op_*%!7<&yF-H4K=lnP88ZO^>x`kY0mI#M+V6>Wt=gHGk)J9 z0c#2?@Bnzv-sHs?4|Qc8X5NAAoctS~A9ppIUw!CCYH`UgxJQ$V6TJ0YqXzxT+LH#5 zm8+5mN5U*Td9*F^h%Uju%V;;9Xi(wp_jL?nm_dvbit=7OKvB9l30bXm8q(2$04uR-rWcr&6?|o!mHd-jaCoqni*ALG(kuMcPXJ0^6(KfN(qc9@~qcXJdJ+F~1na zdd1`xpir9!Cb9Q;L==%Z%%BiJUfrj{caKwXF&o&asn^N!6?qt+okJHIE2mv z^CFi!4#&v;UiaR_1$_6ot^35G9em-u9WW4$NDg2iL_IfYv_usyS)VKdgp?o2dF}f+ zRtSWeS*emdUP+358SR%Xi#!BUg%R?dmNX^h;beRMb^F6RW`dPV{T6$i&k{+VEY*cX z$UO_D|C~?(f#J0bc-q)UkmSa$BfGkn4{g%WDh|r~-Q{^~yDASe1+o6;U?4hhov|`i z-FX$6B(6)Bj(+hp>Rc4mimR>Dc4zJi`}s~R;Ef=h#pMKG=mcAnZww|5)XbH(rNF8# za36NLWGB`Rb*xc_&6#;Lmnhl&lU?iv%WjL)JhRn=qRfZlFvfO**lijWd3KkbtUFFs zZcNRwz9pvac6B7W*Uj6(ba%#P601CpkrhS>3l@FKorpCh>;it4pua@m>qb3qK6-mC zVH}taKW;?Dn{klOhca~bE(e5L{Cgr$qi8bu*!~&wmcGuTSYaPArk(2C$Hev&s0RlO zFg#j-3KYNZp_HJrD+bHit0i5Go;040O6_|$)28-46ytQ!9h7NM5)KsC@j!;sJ7V0i zchO6R-ZHFZz=~0SF4=Z_?EFER5cWryg#FYCP!gv}lMGhNFf<;`Ih}YMMcz1__`Eh? zw@wI{-`-@t)jflPO?M&t8yDe1HZCqgo44=hZtX?P)ld8oWmUO8qiOfvVlVDG1g2ZT zFSpYtmGip{ISN)3l;bGY4HVXU7BQt~dcD}v<=+>BX1iO9FF4Y)xMnuz`<)#k8S#*h}T11~7R#zv5OLzko&aHG5lJ?SV200tZ|m%5z{AtSLO*`#{sx zuirHtYm)rcy`9hAYbVf~VGqvb(4n+BdZfBVBAyiA@>0O@8S0jNmNzt>IAe}{N-hug z%+gimuI_C z?kk22QI9PV;;q&J2+88@`j#jzKqE+)6o>f2o7H?CP`75prckUghA7c}0Msai zIrhQ2Ath{~c8tptgs96>GyG%jY6N5`wjgl)w;t^KPwN&xBiA-n*Kio_8b88UqyJs(Ph(+UdhK@_!Gss z9r!oXB@CG|&ptaG%3JxJ%oFXG)b(ms;q}RQzTx+Ye_rmY=Cdfm)%AG8=OV**N47`Z z_(S+;)sH~^pi8!ZYZ4A99GuXzxHUm*;VGw9hd(hsIRK$))%9TFWZQ<%w8HZ%s*fj$ z?qxOZN_m`aFR+G(ZOVI~`iTdhatIWe=()3_odT3dr{=W1D%o`mQ8g1{Ithz+;oo8* zB7-;dw+_nk8$ib%=V~_oj*(xbd4qqK=COZE^WjCxkMpcQZCm7qEvs82!;V|i(3%Y4 z+xcSI#W8uqCf0@%*-|9W?ea`dip%}K@vBb$mxyd`)wY8mj1)UhASsMFF3|&R5mn@n zv935LiW%l$V(d=m8GL**M1M^<#|a(A7xsbvGI(T zocX)>&Ye9!kf$G)-U?ykOSdrppEZ5C*01RwG4m6t;zxVKD9r3c%1L`-aD-<4`;OB^ z4!q=QpsH7yG^n8+|4pfvRPj8{;9)R;yR#=o?(D$tyOFvOc`louKT{+JP22^$uNx+5 zIthY}Uk`JL;Syi1ZgdNg1D;b7FdM~7q-P6ci;_K^BH0Y05 z;H3~;+vh|ePeEae?;)~IM7o4kgaoBPPXJl0!I|A$^FMA{bvE`@arE@#KA*j~FcT=; zy9uPCsqktCx+UWP$J14|tC~AK=eYIzn!ukCb%T(+J;KAR6UAp4TBEHap18rR z|H9mk8^1p_mcbV*dO+O@E-=PI0iC3P(cX~06zGtWs9lvV0cHMUxV;~D$#el4LILSb z9glU@pN8%=V%0n0X_BD#Cyt=Wz#*c);AWmdD_(hgx1B)xJ#}90DYEeH@+>Qk zsmc2e=dAj&>z2+&+|l7jeJ=1F7@sU;wdhKY9AuqWLIP~iD z(^#l2nZbq<_t>2=*KT0JQgzG!0QNx61v9x~k)NI-Op0k?Q7g0p>3b%+YhQK@j0VO9 z<}*s5l6S{%pVbJsP(8sHtHdb!-SM2N{aYIDTK_QxNMpi-E}82 zjgtrWFczK-5l~lQ&*$_c4O9!ZwS}OQ`Zo${cXGYG)5^P@X3Y!! z;`!&VKK?=FHUc`r!W2UJ)_)SprQ3E&x|VM1spe1n7_y#6UXW{Dug3%2`Dp@jE&55J2s`p(5vyoW~u}KoK?2o#M^GTfDeZ(=~~PTG}eOJHFf%s)DDY z)da6Mri}4d4mnp%Z0H8H1TLwawZtm^^F@BDVTI_BNtWAx8Y*`Lj65%{yFrx5KJzoK zQ29Z2%S2v}a=gf&?Mb0dk{23*sp*~mN#-o}UJGDFf?nH5JKDK&ZGa>BicJfS?wk%w zR?_>Jq37erYT>t|P;7~rGpx{~2Et>B0H0mVh}c}&oGR8w^FvzX?c6I2IjMC|d?C;1 zUIG~H!)qxa61Jc&mV}I7bat-%#dV1?`MQNLhRj?Kfu0Oyf?L2!p98@#_ND4h7@~d} z3&t&*eI%S>4j{sB5M6^vVMDrDPf(eSz@Ga(m(yx1sswk@o*PFW0e&Q^Z*!?+ajE%4 ziFLJ6nH_=Wo>$jBAdY6zjxF4-y(Md;Yg>OV^@abWw?*q7r-Q$E+7Wh_Ra){>uCNa@ z5G$TyX&|RRm4W_g1U22Zf5wStbPsul5<2J&J`)aEly7dy$2wj4O5wOGAl2s*h&4~0 zc^de!+nY%$lRrl2;7S z43=|ZXYSUg1b6{NxLqYMu?_vYimejaEKEy~b*yW9oZdPHPCz4pv%VnWPkmbG2|hqg zvFZ(|DbU!iS|Ll~VWLL>2b!doliOo#|@aOkOy>3=Iztv6AB z+h*e_zKEdG(Z8W4k8vTX;M@ak@PHG`TUEZr>w0`(&%&BO7CqC-Xy&I4wJsNO>QW8= zj}#z*OKf-}-#(cX2sC;aCmOrel#TF2+MJR3Bl`Kq9~534lRwJEt)9BC)fhvuRG*bj zUcW7CoD4T<%lSG2SQ|<`SAB%5f|Y=iUm8d!yp2Ys8h)JT`k3m9PO3g9pu+$oey}fD zo$*~#)!vm*9jMcs0^Jzaep{0{k2a*M`-~Jn0XB6cD^HF;8cvB8ZP|%Ki2k$!a3b8* zpGag9`RcgP&xj(Gy6#I-ey8%y90#ZbO16ZXd(-8b+L^-AHeVhK%JD;UG0s)* zE=7z1n@JEt{urgxF(Y!v&Iks|^5nLwN6FqdEz~ccQJ!_(c!P7O+biyPNApe(Dl#r= zPo}-Psg||(`WxVb-Vp2A$loA1J#I-a+*pe+Rm#pWCcpGT{Z=DCwPw5zEsq;GVy#PE} zcZ2yrY8DBo13*@D_c1+%OEy5ezvwfMk}d+W&!srevnPouBIeICb-|{aoY^;4SI=p& zz3&RwDt(K6FNRcR*gOP8>wDR>tNn=@rTY92s7v5WS{{&zAW=;BR33Y|^p|RwlWO=j zx6&6aNX_$;UonTLe{|fb&c5eH((&L9({?dWcL)}uQKULUs6~q}g<1%_sYNxs>0wkL3%zgKo7R-sx zFri%^C9PY0T*O5Zs>M$LDq(J*J*7*n9QwCuiN)A_eyb#6M&5S9D8wem@kJ}D4 zmo2*49uYp}xeyMI6vfZ3*gQcDca~(8LoU(4gP%cWmZTJhK;H7{7b!kp}+VBFk>g0pzb9l9`=9 z)@a)q3dB7M3QN)MovNB+zs?Zm9D-mQ;g)<6ms{B?5P@kh{;HpgEYNmnS>KY+1A9N~ zi<{;D)CN<{^45VT*FQadQ>SE`1HaEX1~2LgI6r*?NY;m7r?VE@nX^LK4!dD}WUEGx z=7{Ou^{IH6!coD^3VTA75fwP2a+=M+bXUUn!?|UPLUU2g8lbPC8xGJ#o#XcC^9$$( z+G-fbiKtOTw$u@u^kiD5K?5lbLetucR)kM=NRde4QeO|$>(La?gB5>3-*Av~@XUKL z`vCZ>{U`7bQDEtPySWy7XsnqpHgF)_g4DyF1EJ5=N4mG{%==uV5cWX4LJX4OGpQT3v6vi6!bs7l%y>>kzO?-HVn1%u1( ze#g8FdBS+bOC2I?ce{kY`4KlzTf;S!z5$zxN1}I^KSYmAK^5h85v)%z=hHrGCQQ1( z0fY{awLm(+Dv%D)THgbWyurKuZE0}_=Ll!zr4+&!w|4b5O_28U|5blc%xG6p^ytDH zhm&+$>Q-|-dT_0<&C;esOHx`a&yTggZUDpcgt+ivS#q4yGi9qw8p4b>d;*eCKD?$o z;kII{k&eb-gGd?|Z$BTn^G%a^@)Pk`#g;LbhQ{0KH7A$OMs|J<5UgIy=tJ(kocDA8 z4v!H3S$&U0F~MR)%*{|a|r^?Y!9)dTP@B^hrePuDM zJLx7$T|wc-6-5>pi3wgduXa!|oc{2Pq{1yPm_$3^YJXcpc&YJ@FB!|~gH zs2`|_OR+W}{!-Rc?`6ctI#0{b8MT&3!hlA6i%Vwwy%wrx95t{Wibq8dMGm?(l4Z#9 zz|50hh!hF;<%&twxd5Q^@x6EWslodk90RF2PZ^iy_@ih9JuD#Cr^~Keoo4}^u7CU3 z?vXqkzkN`orMmKZRi#C3a!ZA5YEbW}%AKDc$Vl{NeqnYK^@+~9?|U^@8~_w0x6G}Q zo`9a$jR*Pbn+o0=C{O5-r^XoZkzV&>5--WEzj*xSBUl6JMt;G3pEEV!iIj5_&`9i; zh&BY^Xx?}TZp_RLnjdE4B>;_>#BPNn<>a|>JRdZ zm^X}tkzKA2iumwxM>H`oj5(?u34+Ome(D$(s&aQCI}>b0Kfm_2aDJ2ai5ZV%yf#Cd zs7?-eU0DRbTR~(V&rqW%9u@(`!_DJyk0H-f6X$7lD_zR+N(@e0Gr76m!UhGWf4Up9 z#5K-=%q7gk@&F+elJpV>d&5^Pes!PC#z^1f@&^b?cdoTvcu^x=#K5EQFE`75FizLV!pWvnYMND`j=ZP#L|}V6EaF(uGcOHyO7*-W3dO+q3@>2Bch~8izdPPC*Y; z(o`?c%N?Tqqlt~7Z#dgA0T&IWYcIN{t7&qYm)>rz!%(@go};JKHkSY8#fAqFJ;~F}kt2-e->7BRt8QTlIhcv)7OWIgxo6mm) zOH@>PkI%~Oz=~f;>WJqd*p8ibnoNS|J_-Jv2M>ILp74K(Qa||QU(D>^U#b4LAoesf zSPMq?ln&A3THVa%S6f8$U7(FOv09Etjl+sH*$pslv87_ zw;_*~7(64OyS$$ZlbwJT-kfO7s_N9Rnw?K3AiFBl&p4HipG|^2@AP4c0PM2hXS@Jp zy>~4%{Sy_frpYq3-yXU3-|dlM)j)e>f&FUx6x#g#J%`E*)@dogx2VYh)R;93X@C~f z_wXMIlX7ch>(ZEb6OsDqYBhV8tMFs89F{=hNS@j3`!C2<-7Ru+Vkh;440sJAeyJFa z?xG$dAc;?PUki}(nCJ0M#jy z&)t3eVH+B_^LcZ~v*1GRNfjldd?~?|v7vIoZni#cx5BL`-?P8-llEuk2ewj8uqmzt zdLmc8ScopdZpQnoO>%JHeRHoUK$~fBvZPzd_lHz{_4nN#Cs%rKPJ-> zkdx4;FQ2pKs!7W6y_xzNlb@0Kg@*u{{Hi?I36o-{EmJs(_OyP>%84*HOFB!cp$MEU z)uKW~J#RWdtG;6^9(I&`n~!{aBz_=t5&?dW!X0U^2`WUe{5zw-)mOQgYqz4dC;*NZ zKttGc6S57UDF)Y`&aL$-Y$h=9VKRm5MxHdn2VZF4z*aj_>Or;kW1ev3{Gpx9$y2M8uTSTv$lQ;P!Tu6^wn>)xA`H?HNTA77FjN9Md72F!9~k$a9x9c+bx`W%xmupU`7itB z*R;ubm>ek#(T%Lh=GkN#S+-JQ{@Pe?wmJ94vE3QCOnz)AR~B@l#u99rzSIv<1e@+G z^*;rDx%p(l(d;(K80D<(Q`iYT4LYZSDP#7Pw`%@#v@hrK@GY{1Lu!MQKEE0**PkR_$CatKhwoYKTcn=K$Q4XMCqhV~OCUrMUgQUPO0b=AOK!A815FmaU7Vx>x{rpBwvf$we zX6o+0_hIw0ET3Eu4SX#DmVlmn^+meG1i5d=pST^V?W#lfak_$tMbvMG{ zsz6agwb6;KQIZ`W_EDS(#$66;u>_JW)#C%&Z&2b<;HkWA$R!_rx^)q#J2c)ur1sRb z(B(6(PvW~=U8EcnSp>Y@_SSdzwR`J3^Ig2)e|5NX^?8p8J?Y9>ZM{R0>GgAP1!^7` zMX9L1Qo-Qi9G7plT6a9FC@N0i{Cn*$`GKnAn-=De#HB8ZwbxIrg5&SHjIp9 zb)7$FZ;9On*oU(wC@OQ6#G8f7HO^0~!@3noToK7R z=a292V}`%>v8r|%9ch#58)=RHPu-ej`c10M2#_oNf4|ygQQ)Jh?eTG&zy_A?CVfgr zmK404UxVFU^+|Ko7Jooc)+1VouyXxugjc)12jO%?vwid0LMC zYw<5l-W&oN+G#oOZS>=)cePxLuPH$-A<-azgXp;lfmd+$&^y5a2sEV6%1EZRBli8q zvcYF5&5v2jncP6T&Z`{l*Oh8I)_*>qLSxwaW$Pk7@a%0V=j=Uly^yaxslhlITwvh!$T?+OhRS~cW@_$?{C?P8^hdpdnHqs0$HXZ z9(60PhxQ%>Z3eF_%9!9{lNg!^ve+~R=Z5qL)%-x0oGEf5lx7|ne!Y92zO0jaOKR|O zB9B}WyVcS+*Ujd}VF5Wm1%1ba3d1U&qFPgAXi@_yQfBa25|>mbHFVt$V`=VBvxbHi0AX@C<=k?)~SDl}kZ;8FQT+=#_A8 zT&9%NDA=^BGkKmrZ2V`JP(`+9?iP-rwdG#zFUcJ%-KeSeSjEk3 zj(U#{qC>OA$vuhG_$p}*Cb8x?8I4Vm!*0@;d>{-$A>gry#lrS}DqPG^s4QT|Zo%_X zn#Y}Q_y(_+z3A+CO18A%9wXTRAb@a18LdsHp&!Z`MT{0j4mUMDeV88rc8pC`Zoa2ZCDvT)}9N-M3;Bq-3e%51^|oWz(}n#1$%R zRxbj-BFXHsY+I`jR>Hzkp7^)TY`q}mM-+1D9(ObXgQ{^3r-EK@Ze>FwM_2BtxHn< ztEcBfmVj_k03a3p+Rrrp$Y2TGsru5SgL{TPLZr}cK49;8UTkX_Bi08ggq3k1$6pH`_W>s#)iOiNE_8WG!0MB

    !pm-0B^k;#7ZBdOZXj*c=e5_yfMu95x@FTm zl1g}}H)J{&C#-WuWXI7A=o?386s-MgEdmMyG=1n4pqs8^wj1NAzeKK(9NN11*uywd zEp0i)ZCUM6cv-u)wSwy4^3Xpn zsBlS}?DDWr_o5VDEZcCb96TCSRL_BJ(O&L7qi_kk7>95yk4pcq7sw#^ z$U-5+b?lsiuVO(}Um4Ismvei@u1>8H>uFSc&X9@Q;jYD>58LFBoF!B1cx}%{6x8q2 OZHn@$uv|Gqum1z`TR9j2 literal 0 HcmV?d00001 diff --git a/08-Crowdfunding dApp on Core/images/forge-test.PNG b/08-Crowdfunding dApp on Core/images/forge-test.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f3474a9b78536dac1e20654d8e2fccfd11e61e28 GIT binary patch literal 27392 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 literal 0 HcmV?d00001 diff --git a/08-Crowdfunding dApp on Core/images/foundryup.PNG b/08-Crowdfunding dApp on Core/images/foundryup.PNG new file mode 100644 index 0000000000000000000000000000000000000000..3de8b5bba71f93a12449b2bd8f39feac6d7db250 GIT binary patch literal 48927 zcmeFZcT`h(*EY+h=52SiqcEOPK^o(NQpxcrA34`M z=P!qT5fT#GseA3xO(CJJB0@r&4*k3p{K?TBK_1{gKY8A~dO@h5_3$+K%@#);LmeR@ zT%-u^cVY1R?GLV5cnS&a`nvk(rv}sqdm*8k65UHWCcZXvd@ACErT;K@2><>)S-nH{ zZeC8sWMi7F{d}KOLSpu>$@HGmaI1!l5?Hvkt@HJrUtcS9DyE!0p5v5-}$Z&-g&+a)PMdYG_#gD}|4mT^Th8wl6M3{NXgN}#156bPY|sJcw1=n*0o=-PU^*Jc8Y>g5 z7}x~TU?Zccz8oXzFjLvo*NtSF74OV?lRsCKg$W}tOWdNRv*f85TF(fDZ$___fyXNe z-eFjF?5|j~!{{hI1eomUuM>6fV2RI;<1xQRaDhb`77q`k(D`)4%%o^S*(832&tcav z(uITO`YF74O%6dcrPXpWft`W*tq}3zF++Te3+Ie4vM-{K!~6Ly{y|0*zMizDs-V9P z`&|^xBc_aCR$>GpY?q1UaT$)I4;!=832(>B^OvxF3|YKuqeIA8V zEW!J#VjrwPPRs}mg)9-_@!6EK<1Mze2z%WIiOjo(JfEgo zh9FcP`HB*hJ;LHWt_#k7p(el^PhwLGutey?Ei-)r*C1Y@ApAZxM6Z@x^=2>4aI&xr zX^rLd;kAt&lOJ&T3@!24X#iwb1U;n{I9mPgKS5Nz_MDZYmDnm2$&DE zg!)znNjhG|j#msmo1%4PA4Xa=-qfe;V4tuQS1CfijuB7q>}UKHl{mT}v~k9UBfLt? zPvcI@&I;f$<-2ZT`FMb&VkkU|=9i6Gro5r7^aWP|*}8Kx_C-c?v2jrZ8ni0g*k9oS zL$(iEF{oZMyC9kgX%yH1<9WIlu8MEIIm(g+GO!#(qeNkoO#qs;Z3yqGsQ#)MWBCJc`yDIdMtv~5q9V2X%22|=^=vRMs}%e635mcmTW1BHl@862W7U>r*(^0H_b z2`lHh5dO_($IxW5AQh6LoIH!tCiwtWceqzwWo$=g{AWcDxQ7Xcj$^FRZ^U$~a0foo zFdR%`#mB|;6?!}E#+7ALK0FpOC9r;lEW@fmuhA}Poe7kZL%lmggxOmxa*iAfDolF- zRPgE_3^S~$vV-%f z^g(LMQ*SMI33)*$J`TAvUXUQT49p|@KJPCC2-Fsp5%0nKcs~x=xieRw0Pj81&|EEm z5ysQ!ecYKu!3uWFOmJ?XhJ>dDgwqRvLj5Uh#0)CX_^&!qv|A)QASs#E(6Apd3A6gf zuH}hV+u7F0{%U^ULBetb^#L!Pvg-quGjloiCY zZQ>$b#te}nd+e~_tYA8jTf&}-oI6TV-afe05*)jdPM8AUd?Ik;=<|IYk%fqAlh3&GD?z0saUZUWx#U&)Q2q6R_Zu!AC2u zP#xUnCl$xzus9KMY7I*4a0i(>vH)R3JpRrWa3<-w>VHw)FxD;tuiJRTo?QA{4qte? zndTt8HPz3d%H!d#S>+t8)`V~iIQ|8CY9xkF{;4!#%2vl;U?CeOyf=m9aZ5X)PZona zb{LVdcXDR=!dZB2K@2l4d0&0E$}TY}eAbLc-1dM7C}HJhg|ze88B39{o7Y7)$9eiW zN0R16Un3hp2#u5LyKU1&@%=7OdOyZLYS|f2{(C-yn)-?iLv?2 zoWk~vP4wVXwfSOUL&KPWFR*Uc?N>dO84)UmUYaVi*EzD+*JD6a_^1{1G{G~q7k?em zCXkEag+qTiAusm6uEqAT?w6GJCH)gw$1s_DdHGPWOIsoYSK-Nputy(cMg((X%i}6p za{wP;KWU`RQ}5y4)EFXo%9o6lC%Cl;UKZWeuaH>N!Dq-QveOgmf?vH0lrXj_!)rNZuzMFDCnD8b4(WGVr(GK+bI;qvj|Ug2*` z{f4H=VPq-B+lkj~=>$=9K}@oMMcIP?V-cTZ&qt;zX-mixD)F3vBsNgB%qTU;IpKKB zf(tj`A~JI?7fjeMz@C*>;KnJ`?$O8^abxYoVE}?b0JI0gDL>uv>8D&16Omhr)Pfg5VDN)Ggc|w?#-{T zS*Z-p>W!tRhT}0uBl9Jz%!g;-at^rR_K(W}`minjji#~&Nis8M4>l4!tLNJs`@L*lhcCo5c#D@H?EJN{L2Y4BNR&{jr~XA*PPI4DXAV<#v_pp^YYjbw@4O;Yv)u zrO>5Bdza_o+hSh7eShDR-D~f;!?=bvR#wVbrbBuFBXs3`iFa10vR_Vp;_Q6#&Gor~t#+&nso`17e1UzShvoz?iVoP; z%E5tqw-1IBOtkbjCnFZi33tr5 zwMSg!oi5Lwf}@;UAuQlo=v`O=vL9tSHSd3X+|5Wuped~uihO1&5EaQBdJyTai-6Z!JYb$C4%4WaY!0VykRr|8&5W$6&Y)`mFl3?_E z&n0(4Z@F()m@tOPXp0$to7IFrD=Bd4cab^E=)@ON0|eESk4#x>XN*;m>dA{-V>QmC z21XX2CGK0`P@m@0Sc5#)g(;{D7UN{)bDr>>XNh9OlQ@HVMrC7}7VuM)M{=P?K&Cx(&UTiKGX9lq7ofCGXp0srtjCh%Tu%fAb;XKp7A`I$@7O ziHV>uXLg0foDD2~lOcYXtPbZH4(kGfm2LjGW3dLyL_vVS2CfFtLtE0qgk7tK%cV*K zMPRCKOU0are}t2@Nuk`vNT$+fF%h26&69VXbKp_JeC;QYMii%^K2|g`QV=`_Y3#yc zB=Na(+mNpUH2{kt&1ykF;qkDaeLn5H@gU_baz!QF^%?rF5c(jdSO!*;?D|dMpo`B_ zO^ltl;SPogXV3e1EJYd~Cyq-Xa1AV^9ye|bn65%w*QC2XSNtHu9UPs7Jv5lu)F2g4 z_2O+F5fgdM7uPQE!=0~gE+HuQVx&Kvg`L6QaHataQF znzJXgEU-Zm?@H=|uNr6F{QQCN!hbuxeeya~pWFNF=T-QBRNK{V`L%wB@n5MLz%(Q^`E|5ElkrH^#NU$$f?=)o91ycsfECnl;Jl-6lnF!}M9z;RK zRuIf>Ll%q0@Wn>5y;o4mVS#WncwF&r{orC8C-3&loD=b9vaZ-9VPm@|g=2mu5u844 z!*~{PnW48I&_>`ait{k0piv2?*M;0|ExV<4ox-0XtcdXo(9<3ze0TE6r1HKiQ%_XT zGvr^D7hr9?@6dBy4J3=9l3JJFmuh2oy8gCL9&!*nEOrHbu<}5AZ{syx|5|r3K>w*A zzyLZSTQ~_7+@xCh~WhwJMGGUz{CQo6Jy=P%kEUdxu zh|}Bjqr^5~379THR~~rN7&3!T6+cW0Pn#Bg2j}GCJA?8-TMvM(`d!0~mdN3y{eK%u?$KMj5=(v(kKVtR;I2B{n54%DgRtx`K#yhKz|KHX-UA%|Wc?95^^~7x(5)>3cSl5(_bzQ;|g9dX=4Y zUJ-t0ek4RujT^>f$)r+Fd~NZ=BLQ74-2ySW8onp|hBFajFhNX49lf;Njkpc^9%@GU>V5MI7=Vo5e z`zqq8!ezbe)~c$NQRhmnHuyE55VXp6OQb_I3_XFaRms!?vIN#O8uRe+R4agq;@MR5 z1VKyqr^|uMGlDV(rd<`2K&A#34YZ?Wt_n0+1w_QK<2?Slppui7&XJ%P_|l$W$;!NH z14AO2Q8{A4PvaG-JOh-rl1W~CIN#Ebc6khN&Ir^WrI_!yZ;Q_#J`B&D9^8s%(=PTE zCSIzbK2R#pHxeU+2}d3^{65Dr9%wFDnZX{+_Nv)LDL8xesP#yto-PMaC zMeoIbHet*4nQMvG70ZkDjw(1sqi)+bcGMiPP%m=*&}Hx7bo~0!)fE-eG|{qvUaw)$ zk>95fXnkP3P+)5>k*ZLP_zdHpTL}8)5!pvzE+xa4nWtj8Lx9_?o8X+-=Ke6rT-aTs z@s;6XO~@{3`nHC=Ae4?3)UeZbZKntwIG_c(pMYI4mN&K#Jov1hawUt~tb7en)^?Ih zfxn{gQdjIA?-mH>Eh{AjP{#%Gwx)%)`QfI+uWb0Z^fVLt-LrL6HnowaO2Tyz7CQJ2xEK9R+Ff ze}{=40bl<2A)x>97}Ni4;D0#I=K~iP+3;+|RXj3Zn@GWx_h4L9uEUweKRy(1{@MZX zYOl6}`d0YMI<9&zS>tt6@AmB~7|#nlwf9WJ!_EJ?!B}8T5?#IJyb6Ku3IB`4}jIwAXE9!p0a9yqxAJj#vr zrkBhy=;ANjQEnS|)Zeb2J9?W>vt|LRlt9!dYw|t3Cw2Vn8}v-pj}Ly9vo>*4Z)?DK zPWMb4;DoUW8mDk6gx}!te?>C8=zafbh)a49(Dm1OAu}T!%-UZ4WzqsLM<`(T|7&d9 z;8{TB2gvH^9t}-V>Vp3Qqii=YE|l+XzaQV-w9?>j%YL~r2yh(m-RXcv_WG|Mou0R? zy>66-VS5`uWf%b@kB43-_x_O_drFBAdCoQ)cEBrMbafQK1aWl^R;QtoxyCHpLj23k zKYqZrokezvHl&T`-lPL73N!E;nI*_%#*}V7DlO=8OC;jLb&ou$&d)jgYU9(6GYC|MxNF|6iSV zx9(zI#bGmrj1_h5U2Cht5d}^0?$dZ5Nk?%Vv!cqX-2pCS8%Pt*XDCj2Pj*gF!z^vy z?-P2z6ZcjPJF%uy2RZOUY=)Ww%-_U1RA>ib=7O9!nlp7CEgB7YUop5vKIP5dZn}R*Kq~-Pd02GHjY-#lYh&gE*COP!NGxjE?~r5CJE-?jEKX>jx+Z90hto|v8mVz#xh0$;;2Few6+#P~P8jnFi zKR5AMH=#|>@R!kWq!iw#KPctD%T&;v^WRQO7P9YvG;rvpuHcQp3U}2!x@8I(;h7lrYQM)+nk3 zk&rRwHY$;8F3W!S7I>_nX&VR8Udn7rc+P@17VhuCxxxzT93pyhLfO|9{Z@+Swne{FKWM2P z{~CfRIVR^&$n&@(k>0z-Yg2%WdowRDhDL@QqP2g$&cAZAh*Sdaihr9r@!n0&YFtsg>at(-nTkGd!{qm|7|OY~FUF1D-SyqVJNjkHoB;ER1r+ z9m^6w+PYUPxl3)Ne@fS7-F{6;iHYpdd~ffqar?gK04~*radAdqLyGK~vj3oRSEqpt zaUD4E@FJn-+RZM+R(wuFmIJ!_l$_tE-aBx8-FWSz@L21@hzAmf8kD7q?P7{_2{xU; zV#U`l{9fzqO}<(+kF=NGs*D2oxTcjTz*}+((z6U|C3zC>^}}HSkh8Qss!< zw^WjoL-QKkd`Ybk4-=ku(cL@1xy+vvXyo2Ws?38I1bzgDaqjB!RFR_+P^w58+}CBm zaj*cN%909|gZQ8m+`1u}%0^k^zsJ-)7C#(PcGX?RG9{+=%$}HxFn|5jj#@`TABQh* z$+Js|?vs}aFy#6qNRaUdD3>DiJFajqkYXG=%q6*`2A7!5Y2{0AS)$`(eiL=UF7qO(aIgGjJBfE46WnXOoAFoXiMMYG zK6A4w!-Rb*cebY&b`4ZU4PIChCcjX>Y9*nyp+L4Jm_x6fXD`uH>#fzb@Nx@^Q{&q# zjEgizK$PYR7ZuolG-}I{;dSdj>h|N=2aOSyaFInGUA#?0!y*xrW!1jJ!k?cR{(?f6 zOfCoBFAZylsTP#sX`6=n3}C9QJvG+_m-l>4#Sg2x;=X8U7jTdt02+E%^&9pH&QjoN z4<~PdTW1pSj6MBag20d|F&_@CDI4y4t~CS(y?{NVQC~C;-uz)MLh6FI#3Epn`vV!B zpi83g#0LGULQLeSR`M$lA7%acIULs9svHpIuj#C)YL=(e`s+365LOk8^uGLXSqm}3 zXky0hl#)e~6S|1Y?#f1=DOSU0r42Lt@qW{(o#=&6_(kda6!zV|{)8&?#e1Of^9r^} z9o195Mf^%TcTh~kYIL*!b3vNqJmi=eI6Y={_v+^H{P%!2lL$s-eWNEL8Jtvi$!X3z z(2PIR{(j}MJoE#~F3~k&#v%AP>Gic_c^#kU$X+MvU!;B z_LEqfn$B|ltVy3b>#fzA>;Ltr_D@@#O^sOz|JWSsc2wxj$B*W(9?_@AHNq>s{Ly9u z4sA{AK`@~M(B+4?H)KMa5mC_AQZ@_u_tw<41Q)?ctuh`g!2IJru!~bmphy## zMKkiQ1ax5kZ0t=Z1HQU#G`iF537pUk=YgBGUn&?VLqy?x77*$_lA9b zGs`33NXp&XKk`9N$S*4#8wS(lpuB_?rkM91r-cy3G z_D#+tw7ZebOCx7u2vu4(HwL#2JImzM_#RSqYXeO)ya}kwIGpz3OmYM~bLT1!^Z6DJ zt7%jV#m|v31b?(E`ZWI>>&C5!g7LXAbDO%u0c6hIK=rx}@67dg+%cW3Nz4?u5I#9% zrl>!A;cS>Nj`02M{iMN~=xA{>SGY#D9y$;A>J1jHfYtk*-|-Dr;82#RG~)J^;%ZF7ws_4zLW>VoA&W)WdN( z&1H12&od!(T(elU^3kAOb-Y>RO>!)CJHcs41?T3a>s zr(Cn%Zc=o{9XCAv)UU{Y!bIjC>8^>y4nfMcoWN`=hV6{yuVFV;7yHfB63SSIVWz>= zR&iBsg4b1pCiBdZi_!~D_}oBa#ftm5FV4$dB?dVjHu&mQ#8$V^B%K^RUEwF6F)vEL zH`C>8X*#hPx5(VqpK!+QgiQKZM45`rthc~K!9mIw2umIdF%10EnQPIPi-LAwasr>x zyt}E%*aG%n(dsor#A(J?7l>(pAmy$f*6xf9gL#z$|H^At6zt`y{MefI%eJ^L8F6;S zzoZqX{_7N>id&X(Kmn*oF#M0Rt~^YTAZQlvY=4cmRgHyqTaKKIPF1(CSVj6Wgb@`s zdC1}B2mADynBCOCx2`tFxAz=N%`*x05}f6Zm8tctL;dv*wQBwXJ)2<9N2LsyAuPz3 zqcRn<4FXE(PMV-~8o%9>d5D%d3(?vU9x3PcUbDg`DtImsrcmwpg9))O&xOuBP*i@9|KC73(Xv)u&$_} zI2RXx$J%Sh)Uw~7km!u5$mHh`zZR8JthGO(9Tj`xb<<-im1KKmnCT8F#QjGhW>qu` z4KTfhAvs4|c{``f{C!L_DVkt0>tlt<{CudRsd6&pAY71gY9eK8IK$y&p;S0Rf&_V~ zF_~2vl*B2k)84jbX19`eOa1(B3-iRmiUCtNx=&L%_f~6PIH$6ZZ*T8eRIPNXFR^@Q z6iliwQ7TD-SO1h|$X{7vRW@by6bc6WY-@|hZ!8RF^DN#6-lH@yZ!b zh|vsgtDEj#bwsAUM-S%+37cK;Y>B?W{`K~;=bB7xepU22ZC5MI>4n$W1(w4MMT~oR zt#=2ihE@M*V0^f|)ERGns=nTp&t+=U)VknA)@*)4k%CxxQ!eLXK*y}Bxq`#}E^gV` zgU(IweJk@z{n)+Nx{R{z16ESD@+)^no!aY%xlAT^ee1@$N~B${s{7_`>_5LL@Xw{DES8!{WlWDZ%j9gy=bxH(<~Y$CJg7exZC-M>ozp|Uw_4-%bk zN4zpeWC?#|CUo`ZzcUb=s2*0Ow*;^9m9cJ!;o+>8g}G=F&#OgL+#1bzlHG|C=-Snk zPlROdT}mh_6uYG?E`fEF$0}-D6u{kiXPXgbTtz0TaRX57{|lhFVe!V*1$fWD!<%uj zRpp;ci(_)e8V(U=EiIsn#3Q?1^$X0MOMZLx(o06JnuW6Q$MzN3a79oC?@Zmx;MG+x z5Cx=}^(bgRFztmqpHN1*`Ey_zd~pUxxqEuDKT0a~>2m+|Y(it#CBC`Yz;fV>$*y^& zd!O^~N+fd}b(q>BNP&e~Akd~EQf2P0c30v!g12%v7w(GwJb6{!RNI_NtHl{aY>9Ml z5gku8Vqq`i9o{;~V$W%pRxvnx>*1X|0~E3cF#L>JH{*&RA@lMFLO=%MoAucmQ%0m@ zgIvD0J2o%;K^^Vm8DMQE4j}*Igg~Bz)optJJ8$h-<#_Pmw@tGlt3)St<{^Jj8kI49@)3KiNcO5McC!KnMwmHdR|gr%H`x|HjmfEx*o*gpP`>cK7z* z1ZHFNt)FF~#Z_MPrjzquJFtH9qmVy9LYdn0H$+icYz@%)dhE#dR4cI3qj?8bQ3jV; z>r84u`9HU010_{e_^i^B784y56@pip0#cyT=sBqHqa;*rrepg`imNIn& zYZLP*WR=SPhn7v2@8I58cG=d_Cbs#VQO_TbcfQ#XwujbG_QytIVVm&kyqEm9_2Eu; zbK+u4;ZvB&Dh$@t$l+#PeZ+VhV0pyzmUi5qoQyQfnQ89e$c3rH6P{AhA6v~f<38pG zJ}cKIK5cdjm|wD6j~oCb!U}Vhc=)an4`#W(6ITo5sIjOeQuaL=nO;6 zuQI#eQvnrXU?oM?A5S)W*ct}YtF7F1WSKntsvnKWnv7J~su|!34H>GgpygXEK9Coy z8e}bu#~Ax*+~qjjj10+#UtC`{p^{k}sMykdnmB*YF=cRbKcYcO#Iip@lzHh=y-Dg2L>m>l735;y;A$so;pOP4kAP>kFC?ctn&Aj9(kCc#yw7^i+hYR9v?<@#VoO=A<@S~^si zSXE9!QaqcPlQ)(%PptKnI*~`Vfu0uGI|KY8BGYMHMk7G|aBpH5vvgLfupgD;xJ{#l z7R!J)nK8u-G8#V}K5F7%7j#wniX`lJH*WIURu+n8&fDsA^eDJDJiI7p*;Kxz>?I+` zjOi#((c`M;(R>XEmZ>X^jQ`7@a#3 zneP?XcV6lY89X6h=9?e`-+OFYPULlmg-5nJq+7-O`7so9fxft0+^3fbdd%z~Yf!Ii zwIWW~o;=!r_ZrI6o^s?bKF`JecADt68r|J}&vctQq`Of_^pTB3*ypPmzB^tGaN>qW z?#dOSffJVdKaIC!8}yeugFbn2OD6zIr_6-8h%G~BPxCBTur8G?UHZXaDPWc+QzSx8 zN%oS>15F9vT6Y;jpcxnCgZq+OcwOWZvKn&1HFux?V>;n&Rae90l5J}r0cS9yY@}cC z!RGX!xj~y1pL?&}ZPI>7_t%K^3IDd58oc#;@p!V)t(38{psQcnC;c^paL1-oH>F)W z7&FEiZ6UD6R={Iz(};tB?#5q+qubf7(d-2lg=Jft{x-7c#toQj+DEM6_c8x`bWlc& zXVT7^m^g7d?{&m zL+VbCTxpG6-$+sZ{LtnNbvO4rZsZbn?5>AM2Y!g0wMkwD^#;D#wr(H(=-H`Org3C0I!!CJ{JdW z1*MC>KR(v$F+i=ZGV<=~+tnS&d17uMFF>H7HrAlX!=>HUmiSLYw3#0D5nD}Ptv=tT z{Z@QMvk5Xw7%zVJLo~`-l}Iq+8={5;zta3PPq*~cOys;opS-~q+k*mg1Qh%0KeQm* ze`z3+AZa)NI#MuvMCiCZntHo6Vwc0a>oGSoq}fqdpiJQ>t@NK(hd|+}Z9KuJY&~Yd zxh^UWvh=1^@bpn%lwArr@&~H*GJ<>ya`t*0P{%vhvrrVZ*Iy`jKWpv z{FoF7?=>e|pfIyWLf*ic4{*b&P(REithH4?JSYEG29w_w6M#I@2wWbXl8Ew80ADmin*H{Weacoko&k;KTyA-zTfDaF$6z+VErfx2@MGU-{ZJ37yq^H!guA_ zP*cZH#lCtwTZ@sY9elF&5^Vi<-F^xa_FYWd@8oeyEurr%YeY9~oH$(=QfYIb;FE$U6`eWTaTrkn81Pfxb<%z0DlndP$)u~{l+9X|nKend^Y<{oMy-er zm~)^y#5)GNlJ#j-vrwNtgwb5+d2$xDmqY@ky;y!Bd>FJGnyZFNreRUDHWA9maeZY`+{5pEYv*OYD-e(9YoUQ+)m ziIqL3Z;_Jxp#iefFe@IiL*%CB4H5=SA|Dwc@BpQ8t?}f%6@E%#zc#8gj<{R&HRumr z0r_4igkf^rU7pOWwyIw0$AC&R?%PV+>wPR9r_kPxsTpg4{)FznXL*h=@F%l@h0;1& z4nIzq%LHDH9tG7W&y!c`H;L;}>1MzHwbDg&3U5n4>`lCz^19r&=z%~%PeMgiCgN+4Jdrjaft%akH>6yT4PV&-7I7&Nz`f_%nE5?gI z6v%D_=3b$JJO-2+o?QgYuTD;MN0F*&d!msn9M`BC7AGGyxx$f)B;(LP;fU=DA6J2t7maB2}=X)c1 z_0njuSa2wK89Ef%ZP^xkisa#YJuaMiB*30Jb{)Y|DtU zbNJB(Q8Ud4=)riGFyU!_Ve7%Nol#t1K2I<(IxE9KvT0X474bH4al8_?-)at!3Ay|A zxk)mtKk;sX{0djj96QUin8Z7yH^TDyQ+(x1hKPpbG0VkJyU~;t`t8$6Q%1_iQ{@h( ztXN#v(+uLhltCKlyWPD?uQTp5<(B2Tn$N`y^aZwUA8b=GQLGyzj6I9>>uzLTjc`>P z>fl9G!mVgu*xr^!P_c3jGL=yS6+72yDSTw^`&sK!Y2nI0VyIzl)PlvPl;YPEErB(E zqa>{)QxwchY<1Bnsm{?93MIq}*m-0fmq-6)Efv9C7- z9-w(QC9T{wv1CDB>}l!Sb|$j1e>23ALxivq%t3S{5v^xWqm_Xo+O?|~N zc1a}&hshT+!XLx!KSrU0a(2O^j>yQn**vn0tLo=CTyu>Z=N~Rd$2BXF>}?)cVM1xw zhGkI=%q%8VL`lH(GqvDu8UphT51zy-3%~%Sd(E)wJV02Lb_HW~o0j=08JG?Z=_P8E zhl8m;lo#{m=i1EVl^*DqFJXCMIPBsUjE`W$&gV~q!4Zt;B7b~4w{MM})Bez{Pfaz+ zSj?n7Em@~K>B52-@uJ6125N0`2)osBFl*Qx=m&RCvX85 zxGMUB_e<2aVCb~)CR1Ql6T3(Qj{~b*Ic>owjiMwt%iO@&w&XOZm{*SM!RG-PO1E+0eH;<|pw=UKxC;m0=i?;{PcK61fI5Q((Ued}QuU*AU;-Wk~~ zX5geD%{{t*-R=$7RDzUx{TfV*Vf{a(#T>19yIfS_qwohU(L7$YZTrN=zFhc8Ok{Cb zORj4y&qJYjJ1pJ1?y=En{Q5H=K$h%rchJ-;tqPkO!R1SSu2p)3!wbOL+C4Dl`&8BJ zmdFhVf;Nb+(r=I@pdCG;;pI^stcFDMK+R63&l}i;<1-pzzw^+UaBfLTP;?GzBD%ew z_n>8+Ukkl~FS+1`eHl-x4y3Z03FH>JwUj}5EkCk2p*H|(thfXo_?Jf;fx1t5AYs@u zk}vhdk|fUPRMY;!8Ccq>@snRA&om4^=7Kd5$(Z%dpT|ytq~Ua*GTnmpgz#lutLpe8 zD2Kf&rk;P-@heKNzD7I#YnXFiBW0*eoI?rThcFTN@;TB9Y0WQ*5%SdSXoe(G30v3O z==gkFE8fe?)h?k(jCYst{c4{o%`Q#vM1ezPO+s#h4Hxucq~rIYoRCuVmINCj@vWNd z9GmYcC6PNBWzV_f!9Q5va5_x*FJj&flK5x5BmwARXY7#w-l1dXmIuW?YsBBici7!B zU#>TTc*<8^w!{L~9+DE2t@U41KQoN71 zcoXw@U3h9)6`tD9|Jkx%RLTx47#knEqPKb3@X6)WW2T{9;YsDbirttD55u0jUB=^J zHBczIv7*Y9mbG_6mvJ!Wi*?EwM5-K8vt>6*9nZfTia`^}u7!g#S@eg^u_;}ngU=-_ z3Wz5{W3ZbdBWGFJTih>j{k7moF<3PNspsCPA?Uqo!4NleQM7Jo0`pBco9E4z6PyFR zY>}yjNfZQl^C$CHs(8)4DKnGxY;Vo$LtU8F{Fcvy6%N$p5Eap$rFS=)OW~iI98#m*8JX>5pQj4I1g zkqkTjd}w{?UCv7S#elpNXCR{t{zXZ!z8xQFcfhI8lUxe)dB7nv*U%A}Q7d;(VA%HC zEnxNw?m_!#O!S-~5BeR994n)VbkpiO!)y=vkZq=Y=9H+=_Tf^+zA2e5*>A|&fCoz@8L~Q;ee4kl`Z}Y7M?8(pCSZ83J zWC-!!!$Gi|s?M7pOXHNu9ZZt9@O!vu0lTzsR}}_wq_K&Edq9ZYVR-G;-B6WCj4vnE{(oxQX;ueSr(w@biZVZiZo~h2C$LksCVRDi+#>Tf1C*54Mj^+u z(MbJhWq}pRv3vruK1Xdxjy>+niJuK^=O32&`7OouUzoV^P~;%;XqXG3t#`})^LkdP zaImb!Q4)w(Q9fE09`SV*w7qV`1YU?%l?Rto<2BYv{|zjiqW)d?H}90RL=Lm(LK(Q( zz?CDfOtGv%D3?5X3gV>Ca(&(*Ceqwvpk#3arlZX{j4^N#e4a%5b9a(>8-#{qC~&#> zK05RvifWcSM7$4s<^Am0)NJ6oUCDYiL}S$wkP2`=&LB?ZPjx zC!O#ZgZ_W@d6j8+NP(sUo0qnlLvn-rY<6YUS9&ZHbcB|9Y4BCwp0O2Wo8$l#bV}xn zcQn(`O4B0V{)27whle|EKTly$zjs9GZ3@8Y8Q#j=GzzERQ10r1Jub5RqvDE{enrji z%o8i&Dp|pv(g6b~tQy9EyI_y5=|uGAUM{hHkA&>RC+x?&f=Oz4>+qM6W`c=~N4tdpl=|rf&oN?!k|l{p8PI4br(f5Cx!9)FHAZ(;BpvZ+%PaHU(IXbn<2Svx%5i zR^{K@BLs9^AJz86x>P$5 z!;Jto&>JKNUzhW)#}qeKG)q^__3Wp9LZc`_SAUQ!(3ehp)z_l0R#P5zHp40=E<4me z5CrB3lK7^EvcH%(A3)B+@5tVZIR<>{45emT@Gs|m4}RM`aldnT!1qp?R%by#P+`Ty zh8;b90G!dqB404yTHhim2`oYPq(5ZnwSqMY5M_5U5&u~o`G25q$4C$bKoohqOL8xJ ziyDIYCRdL)3`B7Q|MA3Q;1l0Ow}W=}F;Tm5RgAxTh&H+^zI?+lhTGd-k1cm?x+qz5 z&TVf7+i8^XJikgFzFW*iU`=RD0sYc0z=w%?1}qbQpzUGGuPE);D`yZ=dq_prl%{U| zLVlLwuY1G7ebg~tBfOiXEEDcV(nw)o#wms*;Jy|jkP-~6sy}ryoES1#j$}(dcP`Z* z$gFz<7E}ib){uAZRy^Y3I5IzAIg>Q;=V#Kxpyp3=Vy;1wSO*H%Wt2S3RQRsPzOu`V zBCM?+?~j)10lHOAkXVNU~j;~jtIaS+6%O;xM;p^cCn2~t;0hePiy!P=N#X=yzCgbC>E@mi^0cLpe`QujU&215L z_1*hPHE&;QlETEX)ru-bl`eZmUi3Zt{u=Iu0UdSrSN^OO^x9#;eGBy$v60Q9j4{D# ziK<~Em&7y21bm&9tWV_KH5AVr!W$wE@wWtmT~}J`ItUI1wi=o~ zb`ym%)qGv@?m8`b$O4kIlG$L_3X!G$R|ol;t43yjL4B7rCrmm1@v37S>AW7`6cTze zc2q$OIwNnbw+$=hi2cASdr6ClYjJ4%#Y|C+R{SQ`m$4EO)7KaS%aT$lmSm4)&*ktZ z!54MtGIV6#UqmdH?LqkfQyvR-!NV$>UZVb-bT1WX%m14v%=KVEi$E6`WA(!Y-Vv{j zu64hucvDJSf*a#J?-KLmQh~k4h@+0IyA~iz-mN7;E9=71-n;tW)C5>odg4k1nGVP45f9emF z$EcI`PDr}#V{HM;G<|-E&9JNWTobr#Fsq50n*%r+4Hz(^b7|A#Q@sUG-hw+6+&1a|`=1DU$Y9Uw zgRwtw={6`5E?D`9iwq@caaF`u<2 zwz3KxuvZ*0v5b|a%98BssBjX~aSAfI@-i?sd@p<=`_jnm(%FEDneg8mFPIotb<(;$ zng0z{AEM#@=c3dF!O`nrI+jSWpceMh%)r!tUHQdn2C}h{e*Z(@4F4?Xa90zRYj)aD zHxewZhl}?`u%noqg|Adm(ne5U$W5PGWAVTPTJcn?y!ZrHZ#`vUQV(2S!tcm%64fpw`zQy8ka-X zV6}18!v#a!eJJz_fATZ1gFku*`)~2=^woGaR`){4M6}${^h$rlXXWuvmevU>g+mcF z2}-Fuu$>K6(3~wGMfV4U3-HtE=l8MN7|GhhW01*YO8y`+inja>efH#aZ6**(zIBy^ zk*zD7Bkn3-xA!xdjDL<35jkWr4BwBIY`AJ_VTp#pHidQ=5NhT{!^?+qB%K3|NJrEK zAN~8)qUWFx{nkkG`$52?;D&TZX2|<&LA_l;w>MvwW-waDuK5*3l8Ad{sCyx+j(h}Z zU2uvqLz$7KS0gx{-iCKuli1?P`WH2dB+SgLxX(Q3Rx%0j00%dFpNc3KW%BNdNuP9i z<)alnOSJVjKYZss7=%YMJDE0+z5p8t#_L|Bw`WUad|@FHgDL-etB3g)o8Qrru!t=K zgSPUyGJi-=&V7%b6RBgyLoG(#5wp*lxP%%r=E{1eBit3kve#t|8W#Wv9`vNt!XdmP zJ7;Jl!=xhq>ysRpJnHvv_jt-$_m}oA%IZ#a`BskRHf6|*C9=i&x6UsT0zn@v28^r{ zQGbJN73LX8CNF=o4$n4xFTQy>{)scXBoH*R+v}(c%OTD`M5nTB@C^mt%(1uZ3PE(x z8O0Oa1vxW;%xZYtCmc&3Yr0QpnY(5qFP+VwUWZp=c3bB_{l@A_{5>6+xEC)B`wc~CdRP~9e*Co(Etn*JW&_-%^<5kUH8R(>8tq$Rz!dcxKKDoBi8J^0iH7N zoI=#)>Mbi%p1d>Ltr#FrWOAvZ%j*efLPBM$FX~WBed+99o2xg`S6zYpApXVXLjq>2 z&BxVL#CbI@#X_*A{HJNqUoBF#<8|klVP}Oi3hc2)yK`i|nI3URJX^lK7Kr{|%)Mt+ zlWF_z?KnD&gQGK|prT@-C`GIwHFl-Rh$0{*4n;&tq}L?&Mu}3TMx_Y|5d;DRhz*b$ zsR0562@rY+Aqna4m4H*8XJ)_uz1H4q?fJl(#fss+ue)4lIgZ~cYg;gB{wN!T3jVI3 zH~xB?p+8zJSMHNmbk%7tb6n@D4Aa}ro4ugiL9n_^#Sx@MYDH zYdO9Ri1MVP?Aa(Haw3y(T{^4(xSBZuN3A=tAo#isxww#n0nDrNFSAu|1u9)9dsjh2 z7j@!J%FaGj%5_=}x}dq4Wl$gJJbqSbPnDDE*SUf+UC~s)bD>0`NF~Hig*nE=vbMB3 zhY&cLPg%W8aV>8i?Ns=VQX$MJ^9=(nzx%zHmH%2@&5TrR=aT3$&(=g(pQP{#tM(B#%U4c$6!@S9xz6$-a!o(n_0p*|K*HiPAEN zY7f4AqfFyENm{6pgYVFvo3BJ5@ANqAR-I3~ zy=IZ>8*pWTIlU(3@ z+=m=;9o`;$82o)k0Pk{32X;qoXQgfIhg)pl5xap}xbNT#)?&;t_6Rf}UOBr0*2mym zAa^Q{FWJOnhywu?h>crxrk;gb#mS{G zeVSM8zzZ{XF*|YtO_lh~53`)T_7%pyfOC`O_7Ks{x2F{_1G4Dc=~u{uc2HomwrjXN zo2;~JAndR8?tzV=P6ofqm_)2?Hu{}_5lPx6kKT81S{Ga7Y5S1NM`A|NB(X6gEeVBq zt1>NY_biXq=!Ya&r1U(^e|-If<>(ncL;DjO#uZFgK z8PL-3LFpp#S$zsN2xMRfgyzzWLkCFTVy({G&n(z6n!2K%u_Qh8mt^t>E~|vAiskoe z4AuP`&pv!LC$5msYs)M*cgS66U&TXy#fhO|@f}~>2Wh@youg0{9y)`a| zjb0aC)^}mn9eocwy}%>|ITr0Z!JF6CoG_37p@rO*))B7dmQ`B+C|qSyvd9bkW&t~Z zn#V-qqMO|q zgc@dZS_h9%>e4)!Y-HKO<4=!;+Az5E8~%GOtinVUGcclHd^6gEapsX5y4ujc`l`^| z1_9Bj({$mhbad(5VoU}B&z9(uhe`S*o2y2t78D3+uaE{`Ct+#$0l$+kHat^s8{D7?~ut(Ky)G6kbzz3YI)0HzT+=3a^}lc*{TLnP2)L##3z4q~ADj zE?jZ!wqH?Bn0h(aRe8J!pCY~0HEpk#;h7795VeOlc*mzv?k0}BCgy|Q1I049Ypoio zER0%OrsxA%->qFf?u&_0wDKqaqQllAP^5RnC?OEn^6iirNP9+ICvx1!;>hCxq{P>u zlp5jRhpf=BOteDhWxr-Gwd7eCo-m*vT|lqbM-KIB$Hq`~IeD_TC1KHO5Ei-c1nVE; zYBdiD+l$t3MT4M-NpKR(F7|7>EAxQ<01IYHtKsNGhJA8~Qn5clL69xUp zM0d@CsJJc)`@rVLi`yitu^nd!z-NzM+|W;n^;A_zC^Iq|U8sL$#Ux}&Y@(d;FWzq9 zEBoEi<-$>wWC|uzUUwR5)z^sxrT_D`cmLkPmjNyO<9bR)n?Va7`DY71yCmJHPcZUW zss%%e1~yh-(dk|^0$EX~GRZeWE99DagOGtl?pdh75I8*dv!0WnLQ&9@0>f|Q_e)y% zO5zqiSZ;S=slM>(+>WQ!j7BL;|JiZT5i_c1St`eM_##x%gC3W;=+`@{2E^|h(06^5 zaJu3{ACzgX)qYB;$Zi+<*VqfP_5UJe?G@?0F*~cJ;P>Is{0i@^peDXaW&EY+*q;l8 zo;qn=QOX6*uPETHP!IY7#}|+Msyx^|fu_GRYq42y&v&U=uu~Hy+BuI?;?Iq$Q)%K$ zj~$_-V%NGQ$!CSl(THV?x@)>HYbt{P-91~ociwO%8n<-BdED8Rb*V7M(}hHT`S6t* zp6Th>U&~`N&-30!cUM1~B-*CyzplAmEW8jJB^8q}?eTGbf#kbqCF?6;8>;8NqL;jK zew?DqoxH{S&Hp-(pe$+tc9$dj*@0Za_%^gUqwX-Isk>G~)|n?5-i-f^^JT#mhys}G zgn^_SWl$J-|E(~REtpKgk27&RNXEFKp8zo(CjXN33^^{n(q<{(J~|0f%fYbs6S-!w z#hm5m%~YOr$YkV34aTJRME{-@5q!&2pcKDrbkDiesh=vZ1RzL;I@cTVzY((=bIRby z#*Lf_`_bIF z&M16x+CbH^J}>{o{j6p_aM-ycu0>6nPeO@&BN_ziBl7bTjh9x)Nds+wKN2@Xn5Wlk zA=`Rg0no3Egm&S#)spR?e`p3M7zf?_((WFh8JG{|a`b4>4JOI>0uVkU&ou$L0VYxd@{(j6x9uG*R-3qz+>-nK}3&_C8;F(;>a zuPLCoE0y-fPl*(!Y~)0Es?&3|^u<1xogSMmh@ue3Es+jxUZOvgz>z&~b#vfm0*XEI ztJ(Z2?}U{kLt5o~6~}{P#YlT^yeK~E;<}FTQ#{yky2q=0z2z?0pL`?B;(g#BCyWN< zdls~WId*~ks@Drnq23xiQs+D19e;pKn+NMdp65`~kPV=I!|kcbT)&I5&H!n`MtkLf zsIwFAMr9v~`IY<=@sSFF0E9n$tqi*OXuoF^023e(zd z)Fqt0h@<#gO;47HOFU)P+T~m) zQz9Rke}76#(TJ3?eW$G`AXh*yPi8Uuo`kH82-z$sKpO_KVORhNZM?_q+X!|j2iuUs zE77mPmu_GB()ktQLQo*r+1qxf?X6h%qC+k53W7Uy@8H*^4=qTin5{C*YA>>Af-mel zVt6F>(K`pxVlHsD_J39-TKx2~W&c+Q)c+4^w{ht3l@fWaQf9ck&IPf&R{jyBRQ^vQ z43O3?d6g^19QMjq+EvBA74sz8=N$dc|0E>_hQ>X5=7hWT4YmS!E24tQMP+X?7gl)X z+ObRLfb^4{BkZB%TmVg{_>w)$d53d9ozeEGtp2i_!R-!*);CP5k9a03E~%!Wq6qQ# z(OxYUy+d9@@HT@2I($svUA3Pg@XiM~nNVa3tQzah^KDa@Y?<5ik9?fp$X+MruQQF2 zB@j&Y98EwQexlGgTNiSjzkfDxzt&%`^{O7sdL4z>1 zLz1c=h0W6(-_NS_%OCS0l@!J0%d|LiDiSz$;24kNa6HoN? z3f1wlGT+~*>kyO)jT{UjA1!vqGOiR3eis@KNuV@ju7}pu(QpqCa5(JRIq_2#;H`wq zQy4;xzd)cBn#jTcSRIuaH5CsVZgS_fEu8%Zl;0mxVf{p{YZ&ZtEw3red)<@@F*P6x zG<2^R;p7?*W1tupr!47J=~}$0POc@qGA=*No&LPQ0s6xoL!^o}1~@9>I8PUXFhCYk zR!pkqRIT>a`2Ae557NKWU?DXWU+4M(2dVPS;rSlfyU6AE@*2>YzA31{d*O1ZVPAU2 zfWcWiW-9nI^jYnIN=T!Z>4ByVG==XCkq-jr7d*m9=tm0=UdK55k^7))7XrP=5d=^p zP$Pf-I)Pg_BDqzLo+QXgJI3r-d_^f~7NFngi`f8AV?B&(Pp;EcuHIE6V_Pk0Vb{{d zd_1iAdAf;>jp5I6MDxIS3E$_hg6MlO8PY}T&NeuElH1Ow|Lp#r2~8TTA8=E^lQqFeYzG_^vV4BgtJ+u@;z_n z-I15WmX28fV#eB{yeTHlLnF?;NGm;!>u`vdYt=H6Z-6)sL$@8l<7pMpB_R}d4`C^< z%!*$<7WMM7g~_L;W)P!sy;T)bpWz0bQL{mu4O;#e3zdEhNEBj!xiDxm(gh>PQjh) zlL51W#!sfnqfZr>vytVh!TrK_{EY{I4oPn`8w9>Z5$2agxUvRZFEt6BLnYimZZ={Q zHJVY1*jZkBI*)kpEG3;9G6fe;(pa|a%hU|OQuxeOradfw+COr-=#vNKKsNgGYNZPg zI@@EvI!7Grsn{Cybs}h=S9IcwxfemZ-UEphtG-z=naYTy96o=wbe zTAQ#2fdpZ2$PaE|{Ln{Bm9!_P6ueG2ue(8IpQq7%K)$x!?JSER4?yJ6=agjPin7mE~hMW#rjlX&k?~oi0C9De3N9@Kqpzoq9 zQQMMJRyWF8^_Cm57hGdHs(BD_CN}E(!l6R#?_P$>XI0Pk{YY4AwRHS`hK7548eKi0 zCX8JpZ=YmvCd(rM&7rM&o~$q<^xl*~Um`g!E4~fv^>a4s)I-!_?`#duYV69`*Y~ib zuev*qppktwJ#AlSH}n64o}Ijh4J!Voi0TGo;YNzM~KFyn6i`eyXA-!hj;Ii1v*3KYTo&oUO}-hTxZXb zT1avRt6#)PHgZ;r-CeceDe->&$mI-;{epCCKtr|l6F0@!q0ZF?jN|LPaHMNP=V39v`2%z@~o&EaUS%u~6Ektet0&Zcc? zFaf3r_XAbiyW%`b%-`i|8~}wV0nxyw*DBYpcOj(-md85e@W!oJblWM;^su>mvYcNR z^rcQ)H^ZPD*(7~vQA^g74C?MpTG2g8=iY!Cedpm<6uvWTxPDL!1Xw=<{iy7z4e6ar z)5N!|r%iGBbd0fsr~Sc0o}*S5cy`-n_|4ANN@JZ&mDo<{D}WEME-yL!#k1gJuf@ay z57#@PZ&XUj1`vD3$HRsN!a(o1z!Jh?$iWg#x^TXH2EPU%(4_DX-72Ki)v&36Q`qWz z>m^Tg&>OA~;E;lJx_G^?HS3}!(0 zBTHj@Q8DaHyx+Pey(|l{zUgSN%Q2O3zjdk$vH3AQ${+1)?^Y?hia^uy=aLeWs;M}S z4WpauY?X~jM`|?{dVMSHVupPBv`(520|wHTuEtQ7q02+^2c}qz){m9w#hpkAGdl=m z51-sh|I?FS{KqUUV#>2;8{)d3wRVKu>@|! z&L;Sa%17%CGV`B~?R1px6$)Cv3iN)VP&6Gsc@Y+cT)$wzy~-wgB-`pAQi}N^GqGw& zGc82aRbR=9Nn=~$7})oU{gxl*ZyZede3A+zv-XS=Fz*Y7@ph(Dd*>^V+<>rwEe*fd zge&bGUJNmSG4{EAK=_0Fu*v$3K#_$h?0ne&gUXwqn~#oN5uP@X7b&Xcsmu0dr4h`j z{C%{RAFDz~)-b_Wg@g@+#g~k*=WfFmuhLD~LhCPCby0GaS-%%PC+@V36z5}x*5-o& z2av6vRcQ1K=l9aDy&CgF)#Lu6z6bQhL%6o}Pm%e51xS+Xziiom&iuJ4HTh>>KL#TN>-_sCoiJO0i2S!0t-v5SrVBGc$?+JWpm3I} zh-^SeD*1X@>+0#_=)m@TdnC4QO16cp&8ETUmm#R1`k@BpB0c{`r~UYZX@{{|T6Sp9 zVhZ^jHV<5iF&_4PpZ^3T?ah&&TedDRXJ(eWZ7tHNj`4PCz_KV8RZHtCz>|m_bPjJ! zScTd)MoUTS6Qx#+6n+NGxS!cYBFSPLC693&k9iz$x_0?07Lzet!<31ZFb38=HLHJi zwy5q?U`CK*V}d(i54Ijbh(Ut|)9ncfMMYtoRWaxmbqO75n?&JF{_NVrHY6=*J=JM1t7GYd!Q7 zqQE7i33blj2VPN0VW(f<@^5s~rtrm_beBYt{nX;Mp1sm9aJ+Rcg`{}qF8T_wK6Vjn zSTDvJ{w~HE>X;r-HrNDJB|3YaHegonUKzJBH>J@wl>aGXgnKc;x?`2@TeDNMzE}@p!WX=1 zV(`38n!#pz0pqeU5IJsU8lrU)qS+uznt<-ou^HJ6?H3jWR`1^cn^7P#@1YAk!)AO- zL@x9;UXMIs4{eK+0?^qBk_a(-Iot~v+W1{JUWCz=g63CF5t?a9a}{vV(PA;2SG9dSK^jb@&>Ezp{{mB>KL^15`20hNz8eWRdZOcIl1c7ypXA+l-EZgePThqO$Afi z@IQ3kA0^mN6T^?acOC}?`LC!x_YF2yk3N=Wyo zv#oXooT;CPFTli+6}~lty>E*!?7RP2am~m2XE!WPDP1^D zKRcvhu+3L^HW-rFb2iGXkso4tX|8>gDggv|TGgLV9#ijqmOa8!QjF}Sfc~K<7nyhO z$<`hw_X>h(3?)gx5+fDWwK^nuavkM?Lw}@7S7a=!t_$;t?Viopm7FmdXpfGw&US;A zd6e-%^aeX`k!#oZ^_ZnrSD>@wp&~OQTjKf-@I;ZJU>k)ZU59!VMmOVe<09t*mJSVC z6*P`)-=$pcAcsUAcBC`#7gFuf?uha->X}k9$~a7vNkG45;6uNi|S(FJ6G_$9~GEckmBZY1n@ox$Jg_xcr!Co;28F{5cE za>WT*H6@VUqy>MxD5i`=tww$?y&{LqeT2tvF7#5&)2lKh@_oFUQLpg|V5osf8pMW* z#BvoRdxX9-92m?7YELRT9VZ55@ze#7EFvvpHZY?v;S%tgCcNXM zi}USTCkF`E<)7tOCFz{5>RuSL(`txZ`P8HSO+cMhock0MbFY`&ptX};UpCLG^EenC zBs^q9q*WNI?SH?q9U0>O{B+T5&qKV@69rUHmLi>RQ=(U0z-#Oj%}mlF+>Tk@;ay7P#L%nnm>Sa4@ z@fh+wfY0x354x4vS|hhbkE>0!$M-J(7!j#`ZbRol?Y2>H$+U7xIIVdnIw_nv_pK%v z$lUNOu+!-LgasE%wdd-@AcXRAee?Hpz~0$Ju9{NDSrU|c{=gY=C4^$M3; z&yKYM6CiXPp3FoviFd}8X~pw@0ptI`S`n!HQQXy4dH6Rj{&J(2_tmFKfDJV~7nQS! z#domzQok+r(@%z{lJ8NtfEr?IU}gsy@Cf~t&pMgqoK6*odR+hA*KK!+7phn#xLmnr zPs(GT=VsTUOOd@4`c7 z^@{UK%oVe8=2gf^XQ-Z$tKZ9ZA(6IWkAlfw33!(D@Dx%^DhGL^r^9{1bf#CxQl_=4B+_p&L4rsy$uIA z#X@u4@RfqSMV4p9sN{UjpI+EwTSZrsGx|Tkw_F(`WJzyE2__wDoV zZcg?)z8`xrWd(>$BECbHYC_Q=OI$fyVv%$_5&-i><<m#y?A#bc_jY|0&P`hDAAIhj~leqwXp3~o(^$R$) zAUo3?-~{Pq&yI^v(|iBDBlPc3t~UFgkzX5qWfBMQ&E+4$S4xx%KnhQJ`(kU=t2g^& zlxCvs22j(om8AxjXnP}XkCV#UnBg1#FTBHUr-i*83~voA@*DJbJeD73+GvX@tV^bi z)I2Od`j0CL4yRI%J{2t|{Q@zulTAs1J!?;>?H8 zqs_Eano<9{Zm0C~=4);nmDqndWqB10&m5xcotXnlho^E-ga+z<6`?cW)UHQfi7w&aZKB!N&x{sMh1BK2 zHm`sNZK1ZvNjv02$M4qw#n1M0`da_C!r;E5IQ|5FO6hG&Xg@b7C1G&2 zYF#Kg;|)vW`~Ghu~C;VXw+3YC>GFRnvg$sNr0u``Ur4&c#iQU89} zkLpH>V}JszuR%I$lDy?dMA{4fL$+@@u$;Wth`(5F2*y2iI2iM4+!(&qs;&d?{`IS> zqHv&7-m88n0?}o}?RR0k#dq)fnkq7_QoCXYuig!0NHnT%u%2@RZm9O9!}=q*GOx=g z&uWSQx~RZK4JIqo;dqRUcnebQl=YRh1!jq8-$^T-E0nNdUp8Aaz`_<3am-j0s7FOVA4S$bQ(+%eUNmq`r~A13Bppr z+(k_R*_UrzRxPfK|12hwtXnF+E?f3X7pT818kA~u#Hcv~g_-jf2{pHE8Gx>)mxgx1 z*8TBXyXg^9ZT(BK={CtAf<3|BpnoeNirl-)srrolWoNyk4EgC07%N&J1{G2k#N>{$ zQgi&G(zz0$TOB4ASB3tEXXr!iH?FKu$DJ1+wb|2Jy42kE%{05AY84{w7KPi!wXzR& zlvEDB&@x`Ydco0DSr4ukSP4R8`_@6cCMs0lwiU`Nsvd@Z^e zKyw5%{$GVA>2+L-Qa_H#o|dW4mumFP#l9!j#yVzsFEs_yBJ{N$I0# z=*#+40`b<*V{)|WH-1&=_AkPM*I!x4arpT;)j}IXFePwJjJlb5Z35`DC!Z%@wvN4R ztiD*GcDx|yJA#jrYDflH6!+ls5GAy20iZrz?(%ChRN;J2Z#UOfexFOXm+j2>5=uq`r(2=KHGz(f*)CZw3u^X%dRnV6@*zx^Kx8NUC^LLc?I z2#D|4Z?)4d4CnycND}^# zT;&Y;C})QZ*sZrBhwKv!@qwu!`tsBz1KbT!pFlD(L#i}KZ1Oz=OumP*(XZAhkw7V$ zAL*QB9IqQgXN?DW>i;nge)A4Q$QZlU`$%t)SD-xA1rFAHN3j--F+Du zeAx?n+yV!lHeV)&i@p3~&r^HM+EFXae2JNt15xI4!K8c2+bTL-A2HVHS?$^Oq)ph( zjaxuW`yn#g>asLtGoVl^Bm1rJApJ(q6^_bW6K-$Gsq=qzFTc||we*zF0C6hFWi-X! zrNS+X6pwpfPrq(=hPf6g-HDmB@}`kjVj_(F@;=S7&QvM2_QvWA_`@T8OAl6uhcu>1 zG8tG(<+D}QG4BizbgJjr;&A{GN&%*w)9xlp44RdP)M`gk49u%j;`^GShQqUq@&=&4 zbZ1G%pMm+-f_6}-1Ne@gJny{3x)p{_l7f5=9O7x61fr~~lkrKfUnOiORq^3Ay+nWj z3x?!*UN2=`AKl1wq@?@y?ADe&*~TLhXBKjOguETEf8)ViVE8h~POSK&N&mw7D;9vhc_gJ)07j_%1i$GA-q%SX?a zdd4G3>8QIaEiJiyF%SYl?rg{*K`UWoy*#KF2Cmz^-vmD@+ zJ@Lv5)2m!XmkHVDM!sN96h88`61*^A1GM(u2f#IlHzYZ14S(Y_;USt0wP}T8>>7mu zhgn=l9kH*PdL205kMIb=@PP#nF}>EQlD?;MzqCOwD2e@MyO!gPnY#3Q!LQ%m5j1fb zQJ7pp(|8!3>1O;xx@Hb+cNiV;htGAf2{8=pVI-Hi6mKsRt7v);i+er59`zok@BC2` zsJl30zpnCV?{LTN2mF-3eR$s5bANhiax1S4d%xy3LawLb6)+pqyX5XwWHLDIWa83s z49Me@5Q?(KeBjlbHt1pRvgMo& zyLN6a)XHMcQ56wj5%*!?EUV1Km_sF}H5Ll^H+W7}O%%G5j=qjp%C6G{S?M%j&?y$Y z=j)FiE)G-2h@<0w3QOqQ>e?$+9gM*q!m=`VVZRJ6yyD2X+yW%H5$28It*27EA$ci{ zq!%9E2^n*!ZOumXVKF0Y&T$G%5Sm*4Sv>X0uKuypv6oWfUUnmt{&4PxyCCG;52Efr zV!}stHS5JuGAewJ_A7H z`GYn?d+SF8-CpnANf($saqH_&JNqz<*I3DIu2UJS*Oso{2v;$Ya!`@&Xs9c$WNr?v zaGAs@ec`@jLHBd=<2w5xC5{ZDNQd1`8JK_pZNoEQ(oH|3j!;- zS;uDY)p>)+c@Q9Zy{uCx%#}l*oSei__dl)hw}dF{4aHk$+BvG`b~oT%BzTOVsd+w? zY@?q-2mEt1;%ft(u|6Aiw@-mkzr$*~gRHy7+~!=?osj*$s&yk5f+qz$&g_r>de|{R zcIWhL<{aPW1LT3Q`PLwHQv)gpl8|=*vaZk3C~op?&GJ*znZ?i)EeQC#qd%|y*RPr^ zYXp7H=Hnm7TvId1_F52L_|Gx}96|?fd2J^(JerJ~Ll`DtPh?f9d8tpFy7e}EGV9dc z`8k^N_}JyrxvTquQ+|G08_ex!FnaGk)f>yv!6K9%)W5~c%LL!}$>29X zZ22RwUG_iD*9VV<>iF)qC80-%j*iQ2U|x}3C(*;5?avl*j9VT5E^oOd<@tAM%Xc?< z!%LDD9_%lgmSV9DOA^XgLPGNYQ`5ryi>Bq?-!v_y^Vh<7R}t9jOD`M}!Xoatno-WP zIZk0q1NI{RFc@m!3I;=TWLW+$MjD%`N0_U%;ALm27m;Dz>%5L7R(1I(HBPIxx= zUKrSnQEwX!%%+-a;bo)blGfVN*=Te*@98$hac z(y(6#sgeuhmjxmV@HXP@3KEwO0R52qQA5$xtNnYx{LcMTTT`GdY&{vFHV~f{0aIwE z$(oHRh60gZZhyEg-5*dKv72P7b&uH<7!Sk~&Dq%Bs@u6GU$+_{wW=do!RJQVx2Kb1 zu&Uz$UpwV4U))!>wN`N&xMV}+NCYAn0_!i8#6d7x<=@&&P+co-*tPsUDktF6JAubjnP7`v_IakphuC(0j=KZz;pp8RafN4(b@CrZbFoO zeeFc>Fn5a}rlDy>Fmig1+xo<;lCT10G6#xTU?}U49onyFHeukD_mpTbxIL5VHt%MK zGECr>9-Z~Ib@i?gCZ6+C(f<`_AY(qb$8C&~cM9Zn3apSn8JupXJun^?UaZt9nAlVD zB;&B;V${+-aquYa!6;}ENe^Fco^IZu*FuZnMI%Jm8%P8DSTGO;jGX$2cCQz~jnL%p za;WCA4H9|q1e zlo0P9g@4B-U69f%+%LIdd%fA=D|NjKqSrU`A#eQGDbG8nv8BA1+H)FzwC6gv2FYMg0DB6_61xxIPDNKCn0p`Z!SKb5sTc$c)P-YO6mcH}Gn>^OhaOLX=;DTIU5GaHqdundVVBm%1YYjfa zV(-9INTR#&L855j2brOq5qk=;jsFOTU@wf9)0mBSrxO5zfbBoehQ$ltl5Zd3Zjm`S zMBOe~{AnDo<~CPr&DG?@!GQ0tCdcat&iIW11x$VY(ISKOD3e+#^tG*PYqMR(cUu^) zhw;Bl1F)%MgAlWYZsheIpz)U&R7zV7A-8^~V9zM+Pa-4_K(wlXR~RKzo^_GcedB5Mh@y5_cxV`ILUt7EE*!7P9b7O?HO_Gu=!EQzbbf}o-kD5&+frzJ@N2V5 z+^lYFLLvQ?Z7u{%m`TI?tv@?@O4cbYFAzRfld_64)Ton4X4US}qHiVc4di_!MReD^ z{_J>df+oeA2JX&5lA)){>U2u`b@57`0qT4Jvx-^96X zdl5*mJ~R8%78n)1Y<1{{l6#TH&VSJ0T6*Kua+WKX}r7UJ$*f0z^cE23~NI|OrNRb->Lt)MpinhF1v)Koj_v{Be@IxHJqQp((yT@X9|0Y`k*27$q#zU?b_kDi%RkY4BMw1g?S5uICSxo z!SL9?NN5*55)W>{Q{+8QE4#0KVxjwM)%c;$H!X$BpoPV@viDGCn~_j1|400? z3moP3pefoY_re#;@EQ91s&H=L?433c6c1E|?qcxP#e!Sv#BxE;L+yePFNen7SWl-Z zY}in(=_B_9oZz|_$2Q>bP^4}<67mX}$KvicPYz#6r^Hl=D2=Y}&^bX|m9U%swgQf* zDYyPj1O^*VF>%h-_}&G9tFwnyI5n_Y^aFz&JtiIYHXgXX)wUr81$1BvX+qj6(^EI^ z2RBc&UYt?ga=_UTKZG|)UEhiUA75eZPb?{W><=+}{9Gxf2bBQ(gz1#TB__i~Eg=H#spv&qeG40Hc1nmW-)RzK^7 zY{IVJ8QPL9LhSRupZ56DWz&tyDDzUG`ChUc@A4+mGrDg@6(d_iRuPSl(zpaQ-BM1?KU5eT?-*<{bc)j!j&17$tK+ z>FFG!*EGm;!70pt_3+lqijsVzMGO}cBHcF{Kr;SsYH6Nu&bXHL&%h|O&3tA zzn0qmsJKSordKZP)_7%a>Grwh?ePvbHob@zj6Uimyo}~E6MjKG3&>)l;4g;7GXQ)| zLD_)i=cOKSP4|61Ag2+ZM=@erpTcA#B*h8QX04nmPHQ~-?mCltZ^msXlD}E=W@^c! zuW4X(UV(r!odlqsxu9Bc;%Bquxm%!Qg)%7?&4p%#Ev!tfXB^BfU2~o>Lke^V_FuD$ zf9Qq}$AhW2I(fywCBrb-4~f%|%8=u>W!(vnPgBjG3v1KHCxq9-!aqW<_?AFn7l3i+ zN~Jws;iY*quv0zN*+c^~n0WRhdY<5MLMcG7Bwb`1d_osl$|Y6d`DC(CdLo&cFv%Zh z;1~?tDE{|}J)X$bVOO2iz{@Tp$d!$qMvqC4PSUpBV4}GKN)2j_Jh`deQ8sis;Nc_k z;uzcKKf}wdpR=mc`m5V`qm$Vd=9Q4j6Xw6218`}xD9=hiK<2zLcfGfF1B0MJlv1(tY#>3m#0c;lE#qb2XsfvU20*EGjNMA_dl^*xYX3N9x+ z4K8YiDglyPEj`}mz6KuKk z&r$R$`Dp@-%9jTn)ex`U61tS>gaP|IF!c=0J~^Wi zgT#qI6G6bohuVg5pW%by9ni-SsB@znPw7|a#!iGhyHQDi*vH1Ju-GS#ngBQEMsx?u zbu0PiC9F}y0ihd(>SIDRuQWdxg}g3!gclv07k!qp(K(w26$VEOc|$4W#1>jL{zBs< zO!{Q?i_u045dZ9o|jgAkZfcdx$K?6+~{v>)CNTCvzLFA{L|;(tIHNQ zdVTjxFG+tFm~);}d+9rPusAie7-j$EPyEOQ35SIGy#kN?EJfBU^8tLt;ubY0`(&U?$hY`S{c z%myaULl9FLvROt_hI`%!ii|*J`3L%a&_O;aMm%M~-mZRT;=zK`vO&Y(s$IB=m8=0I zF4)^Z{N;lM%q2zMJ@%PGe}HujwIfy;vUJ*Dv z<3h$ky0Vg-%m;!BAMYU_lG-|rCci~X#i2$lx2G`!`$?X(&E`=`+UpfiBbybhM7Rd2 zzDqniW?d9C`dkZ!rp62I7|3Q36e4h+V%M^ONzvu0F8<)B7>&=5js2uZqYNIQeL}E7 zPqc0Z>MF{JMB?bOwUAP{IAOzAYJC+T7(&}u2>j1d5J_e2IS$+lprcy}iDrwdOA;@{ z@#7;}248A!7hHc!kmv+?Z>K^i3TErehs5&`osX;ZxLa(r5>&pDv2~5}4Nl(wHBaUf zkb-#z3;dAMBYOEz`GHo36NNNJi%4mrtt4ryz%1LQKjdi^zq%5o7h%+k|D*QhM17to z(A`vqrPN&P+g#t-=n8O!`u^8z%i>PHtpieA@$(QsN^k%$mJ`s-8V20`Ssd%=Cji+6T1c#`jSK=*YkdNT4(%mHdiGokBlF6?qR~n=h;?)`WV7Z9A`E!gF>p7)`|o>)nf` z2iB^9QOxdPI2b4_e@{+wOF~8o$BRW563Z*_ePJG0EJ})&_i#r*5rkL zm?YD|uXOXtZGvCmn~CX!%rvbv2(L-?b3{n{qnW!ZLsV^di=g~I^bXqYr8> z=Tf6rM`zW|QZLUTA#GHwUYgfA!ek^&9&I3G_3`ZC02I_j7^e~f1a54Yy$9IHR|(iQ zBJF-XypVRHG>A%pMFtguOik(*<@abRB5gn>>R)@i@Fp<(JiYTEu)3niO;Bj)bGccjmd zivlb6qW$0nColT&fml)xIb46mUwBtVFP%d2tbhZl<*F#!DYLl%y;W8szh2R}=>fGq z%(UXl@2hoVPhd1^3ZGfW*ychtWIuUU9mp+Jrq}AmT1P4`YbInCZI+`U)5FdDy{CP! z(0=F(vgiKrRHc$-u|6XFWlMB_o2=psx?8%)sTM0>=}Zs~A>6!Zd=St8ym)U3dY?su9POO^0K;8x+AF_Is9OqwlL=2Eoa=pO$uQ{ z{(tlaE9p`p0N}LZrl@$(NtAOHQvN(j%qW!PXD;IWY|nq^XGM*1yNw?wb6WYsS!7xE zLV(q|pIW&J8Vzj@mhsWmJJyY(ZE2z>rw^DwN+y~qHdO13#M$1wbq=6pthLSGgsGw- z+s#ObT3%oM#gQx%Tre>5LM}#mI9!wJj3D8VPBLWiLP9E=AKJfutR9dxAYzeBaQEI} zje5^*JYARFDMW1|NA*&3$p(mVu#g474$n}jvyJmZ!eb*FN@De|AG@Naz`1IyToB;j z=4C>dPJTB1Ay%CVs}_2&VV6aw-7D=%o(=6mH}VtS7rD_%^2oQ5#7y;`2djscd>m!& za4=Ys{%XC zcUt6^1+Rd1en=g7(0^FA-euQMDH_ql#2Pd6%a~L=I+z5z35E%XxMup%npMS&eL(>40*6}3k>Xj zh=p@G-fxZ%5;RYfH0y$Z60#TBgn1Eh<%N0^T$sU0o)#W{DUgAy9QP~SVSq59z_4^5 zLEut7_no~{;r6Vsc*qy#rTt6zsU5Qyof@aZ?a0%QAecP(;}BilKS+^`?@5Og%$T&TRKgg<*o`ajMtI2&q8vw^E@SUSw~|`yiOu z93G_nl-exl)(DI4vk+`rH%2&J>D>;`W4*$9MhIlh+n&{wH1;D72Y#?Uo)eVbGS7nw zY)go!;9fiRhYIK^fdbUfmKRM!Pk}ue-8s!rYXKz<*Y^xp3|WaG=w#8BTj6@$1MhI` z6Zp3W<{5Pkz#fm;Fri@S>MZP?yZWBI0iR0OwjEDx$Z)##V9`|d&VCYTIRNwOUa4Cv zsmX4M+iWcBEXFFVozJljCfB&cXQ(T$|&EeZgTxOr#Iz9EsSlP#1x2 zp9W;=!tES>eg|5;T-1r}?Z6o?NB58wzIqN6o#k$w^!;=J0ogrTQyUpra>&FGIm9GY zn^q(31?dx0VTI4r=|oacPN31ry3$0^Z^!Lci(mOSy~f0jBGyP^$tSrj_}|P&f|2|O z4qrmsx=(+ITP+4yy3RG~AI@3lg1dLr@m)+N{JmUCOP=T2otj51sa8f00vv9VurRev=yxRh-ljvMq8OUedf=^>kLS|^rSw}Ea`GL?52sNXD0~?3-F-|QMx4U zYW?7N3zX@n1LJ7LaGN>^g5T!_cqXE)H&P+Cg6RRMkR~NsIo8Z*^ar(~fSR9)NVKV* z2}vQ@v4DXqfC#|ga#Z9Q=o2V1@TM56G3WB@WaBKkP%bELj`r@HI;_KUl@KLh6D}BM zFwNq~zyYJF+WiR5mo)xJ()t8S>5h<{;x_ghhXI-358662&8X(a5K%7Ye2|RwwHpyI z_PshN^Vp5BR6+aiB0aHw>(Z=HHA0G}Ig%>8f8RKI!wITc8uV+ZPEMuD1%X!%*=r*m zfxozu(I=OKU(XS|j0r}NmQPT9O31YWA0sxt9B)v_M*e%U#it#urJLtN=GG&<&S5+8=u~=CEo7X#6OVt8 zRplEb`uW;rXNiPN5@ky=u2VOSWJ{l}`2LqGvKu>o270ZXVybB! z`DY&W9R1Be`2W`~U)%c^kN3^cQvyRCo_LC&&8v7-D<=XDI{PHbUdovew4WoFG zbpMV2m{ox(4GaWZGZOV_amM1&_ENOP{t<>#Y8)&F;qD`DlUpV#Jo+@$A{w2X-QQsK zpoqq#^mRrj+B=)=}NC+KwR0=hR73=en5A(T!j|BSHX%~3ZwYBz+4N^QXf~e?hGHCYT|{31L4c57gIMhExPD8hZvT-`ZCSX(-D~j0*~hA+$5qV9 zqDW@Yqm*CT(Mwl>3*~m(7Gfzzl?l*qfLjjp3 z?`;$eHw|RtlM70dWBe03!CrNyNC%(;6>dbh$*#Bi*QBa{oMX=*CmcfR0x70+K*IMf zXCU>bYjF2La%Gy$exNqcwh*k`x%|!J(ES@Q@*$e;10}%R_4oEy(-yJra9)LW{GZ!j z9SUPyKJbls#QanWw1&9<(i*C#+FM-htkdfHa^dhzcX-G-j;OUY_%Wl0o22cme1 zT{2Pz@0n)&94?`)bFF(-R3`V+_{}7xj0pTe!>7Q^N+J0J&d>B;4PJboNX*v>vSL<& zVC3kW=V#@C6Q0K3nqLuhZz^0X1EQo*CT(tl__XZSY;Oau-2`d*dxB?b%{bRpxAocV zNk0Fo*-sct$0G%({%I=;6!}=^f71No&`!=j3aI0xdPCc2BH0;Cc6iZHDkX^LwBW13 z!E25)^tLnk^>z%XNg^aQ4&Bb~ti?tWwjo1j1lVCPR5b^!R|T=7%OW9BK`v^&vXn|$vK3h;q7i9>14FJM!+u|RWxV4u&#i2a{3}%EC^WtAx8;{7<4QVT0&05IHt&kscHFjq9QiHZk4j{MRYtzMlph{|y+d2Jmy z8U815lD4?o^u)zZA!Z1}V~O6xPZ(}tALh9%LXY7HujOc+Hi*CBem2Cre5bIo z&8@!)uJNy|Hw4ZSsGxXPwQ|5#-Jl=@;pB@BVkuEIC?X8>MCb@TH;(N3iVP;I{))lJ zu;Pypc-a#8Q#Bsf%X`g|3thoi!r$5f&FNsFsrK`J?r#pirE@aNmMjlJs$*=q3%qT= zc)*wqJp=xxerNhG_tMXHP0AH2fyfGZeoYbMs2`08`z44BdT*U0_&30_IUPAB0#?d3AmA?NSV zVSR3p>03b`WKoC`CK|!=qnhLJCHNV2BJ|u#!sjVH z9XUm|i=KJqr&bCN1Epfh=u+8Ao*LQq@w{UOpHtU+Fm%@SmfE!xJ%d3uq!N)!^#w(l z8i_NE4otbjGX(!CsGKJX2jOb_NzR%yh>73TK zfa0-7NbNW5!|6*A9^$6@-!?xT5V_9G^b|tW4V+gw%h*;C;rK*n*9X@pg4@7UR8R4r z@51f+vEqj+$2)!(ZSDM z8eF>C59$|pq|Z%Wl4ow3V{#$?soN%9e}Q@lPJ{=rBymt_ z`Pp9i6mR=cIE+@ShT7==f@1iUCJ<>)w) zVfgLLS2daw5mR=(s6FQ4AfuK;#0>B=&-C2mm{?an6!62btzXXRUqQ{ICaNJ>UhU*| zDH|WkoD7tQWQ7$%yZFIO3>4o=WM?cULj8adHz+8lfG|XISW}7+fJ>`IkXZ}5=+JhV z?Xj7-%HKIkopbc>=1e*U$ET~C70UNSFLKT_o{BmE-LiWFEW3$Lx<7CWz8|{MTaX63 zDM*vKsI4XdyWD91vc#)rjsx@5DbK-a9nd{3FQW6=eHqg_)J-x9?K0uC!#h%+{4rZ` zOyv0Eg7RCZvo+&UhLf*^8MExZ-)cW;>}~Vg5v$xFolt>%WbbLIqTkyZrXZP^>K&$d z!02(g@QVDmd5E9cy{@tyU80p5cVu-7xn@4wVDKs($Tw>zYCbWp)j??&ZHBxut&4(j zB(42`+zi_jo%rwNI7a*F(;iz~mgcbPd%!e?^3%exT21n{mc6>ws1{#+MZB#yfMS&f z_wjP$XQOO<0D3R4Y3s_Ds)moP%YEdWC{_tg%n(rQ;9RgUA?(`s12fE)ppsK!XLI+? z05$xT89P=gSzM3<2?pM$k1&BPR0ub+*Ubw9y{7F*RvBHXwqfz-bRlR9Hh1O>{$_@; zDcQNq4J!t%!g32%dztl}FNUI|UwF$*{={+;5@#I(SeC(+ThBQcANZ`jeVY_LoX`;} zZ{7#GCjU-~Pk+R&F!^@wC;6rCUi{h_E*$=KXj)LsVN(sH!Z^d+|4H4JO)}vhl1pmV zF4LBcHh|pNAytRY?72VPUe7kV|02ZPpQ--jNx?b(yszn>-#6JGirir2*5}^k&W`w}k#k-+9u56Xzcm_&Rd!$0L*^3;ZmFgf9h3 zR&8;W{R6}vH@yWM_kLBJ9J+>wq}cBcp#(!(#k7fWHH?ZtEdGE!E4>%OyBp}YO@YLAePLqJiL zU+G*0q=Lt@Ex!Wf3TWe2i(IhMgr{5M$c49rvfb`4nj99@XoGTq)KUkhJU=?%%8QsMve6wR+I9BPwX+xmy z%O+ftK^@u}gQQZ-nM-9rOq@URW4!X<*~^rkn@jS(2ud(^DypPIEC>#7 zBgk}#RtUOuL9CX6ev3>5xzd6j502`ijMfq#PI|U{%im*j=X<1Jhs^Q?JN4RBh=%%Z zC3C^Z$W`S$8i^ZanP(YoOcHBviEu<2xDm8YaN+5$gz6+>dbv~AMfLq27W!O7@+!rksLw@my{QTdWP+|1{*K2QyE)H_Yn)i|h+00mEkqqLaVy6!4z+15(5o=Z1| zeoOed5pcJQAIqoWP#HXlS-c)k5dtfgEk(dW-$gD6QRtpR0*ouXSJtchPC~F`W)A(l1=rHX8YlGEb*Bxv3c8++vv|x zrM#l3(&zpGU;OaZ9u?HLsB4>AK_8)=>K~KS$Of87-mMq3=Q=qqaMF!p1(nV$&uk%z z38#%ve2UN4haStzVxs-s_PZTwiAaAl=L?ux0iKLFEb=^#LEIx)+E#Goo|HwfYm(;s zSQDWd_#{q4ztEaP{9UPdsz2DHuKBC`chSmB^08~%GL5G)NH_7 z`R}6cxkPFI%mQOy96Og33XR%{rB$ZsZ)ol8t9H(LMfm*V)G|cUA3P(4W80a%Mv(T zMbmNE`$7U5@pgip9g9T|PqAl%^AR_ain|_Ur1zVYl$RXKWJY{;xSH{4PENO^a42hE zn_4&NCLMhO;F=~$sgTKdR2^<&N}i(_H^;SHE<=AEL9=)hzL;lNUg_4UG(_kav7mm` z-%%?o3wuV&R1r+9PG*qzhex}h7j4V?=;_}0%f)(?I~nCFY9Us^qnbux(7!jI;5hjA zXljsi9cn?R5i}}`+|oJd?kdr5GR|I^5@V}y_?@}@3WDqulIZ30q!O!}K0+yCyzCsf|VoJ?>fj(sZ>?m4rR^deuVq_DrqT4iOdSv*Bcy4LtdBpc*kArV(7;&FCDtI)4Dh{rU{gNrZ&eP4HjQF>bZ@hE-x<&|wBC4_|=z+edp3fY%SJ|oU)83sx+EH@jcdBKF+Iw^N|DICw(AKj=9X6|ItIS_XE0KQmTNrxq4qVOGA0> z>WVYV9!xnhPfp*LUu3Xzfv2=#_543@N_y!ZI3vBDuHAE`%AUW1#5K2gHNECA@P-mQ9H-4h*L9=h?X$JtElWwJ}(e+`@mIZuJL=! z`8-~~9aCPsO=NC=j{?CSohCg^s6uaL3N?fPkMAh0Bov+lCcojmfyTR+A=#z?g^sbt zv=X_}CkKE^jy-jrk2=xGuZNgY?=e{Wk`m~=34OdsA|?o#n@x;M%VXRbhSnpSJQ-K2 z5G4LJgJ7PA`f?QAoGcSM2Nduvk$6$dJoVmSBa*E6#;RtW0v`;P(`d`PfpT}XaFJa* z%w`AMb?4HRK(0){2UN27eU^OOQQ*x+>B)73#n=se9s0VCuy({c%Mr87zq)S@7yCS5 z?&yY42o8C>QL>9?n!q(XAMwmC#)Y7gMRuD(SHO|7hDam6Y%@|eF;Tp_J=M>i%6|lHRiqCN*)Kha z(aw{?C4k2K^uk-Z^FYjO@gXcm&1(+39Mb?%`5c637}Cn+6~#!}VvOb`EuDL1b1dQHSOn`H`?(u>z z<1Si@?LTeh>2YUNZ^_2V&y2Tbk!0D4J37_>p4;B%PJTHEJh==J<8khd)qn-(ntH7IgI}3ULLS%sj&?erII2r2*|B>w{ zgHNFT!2=$+AAEaIBU693AHL9QMLrU=&A8KIm)QRrXP2H;@692}3%MyLwUPS?CfC1> zSJd4p<ZI}lvBUO@L z+K!u?h^4`q*kwBwDRS6Oy*lt{+4AK@X6O5YGj~VmV~?av-wmD4-Y{Xba1(Q7$Ve{L z`q9UJ;M?^C@L}NR_i5_^rGQBlbvabvN_tI5?Xe1r(VWY-O>Ws=E0*OOnU1Y^bDp8L zME+CZzM@b< zS}>5ulcnkq;Z?oI84o>aiw~X1qJ!y2EnP9pwFnPu4tt0Q#-=7hLhF|9&I&g5-;Qk^ z`F?}+YaeYRp4++KrCL*=CoR|3e&(h=mnU};(zzh?xV!0}S1Y#L3z`TV3cB(Nil6Ie zS$q1=_#dhL@ie3z-eh^QDM|LXy?Nv$rTHP9(=Tn)4#Z6LPq*zriBHNrMZ1Ml))3S= ze@Hr-mvs-JgZ7+H?qW2GJ8qwY>;Zm?R)d?-`{!{}zMveCJ#|Z@aRXg}Z47vDK2ifcMTpm`tNxDJT=0X(ZGt`Df^$< zal*v}!J{W!j95#t&F`r0QJ)mu{;RgZU9fI#6%(q?ACZ|V?e+*}zpkFALtr0?Q>)(A z3^%>tTu=AEo8jUK7S?A^RznC{=(Pj{oS1I#<5U=rC`k>nG6+44K{AbLs8x~RP?g&T z@k_Juy-cwifmxHIjSv1_Gy#dOLv;~pWYkF!h%#XaP~ga=XQP+Jma!Z%p~R{O#dZTx ztzDYI5oi>~nb3q!T$;h(o&v_trb@HfsmcHbr3^h};G2kPgApM7k}IP`T)GD76u`tc zmwDm+6)TRlt!Uw&nQ;0XSo>JxB#b-(^sOh~2CBdW2i69OOFLVk2K;m`n3khIiBB)Z z?=T4CX6tF7IV(Uz99{#X%w4M}*Q1uoT6-wSp-a%w9PtwO9$*3j7^Hr)hLB!7fp8sh ztPeD+g-HBM{RCLA!Ew}t)j~_yJ0PU`2SdA`7d)qho-eejomLs6khv}M9yb}}^qEuj z_(zw_^q2aY=nexzM1>2Zi6RPZ0TmTM!^S)|%RY<5h zO>`IbJ8*nB@TOC+kdOpTGy~I_gksvA5Vv_lpXwdY_aLL67hq_UO%$UJR$k{ ziuH@T<4w2M&h=S0TBfJE7{7IjJj1x#vGD*C>SgS+Jik&NRUF(q$)3WfjaC2K=ftR0 zFR1OKnanF=xWgt<&^4qHvuo8ut3h>lQ_Wq)eYdPYQi~yoU#&F^JpjDFkgwW><0%RY zR)Qr4Ij!Zp-AS*Kza4gS)v$Le5AB_=$}<+sI%JZEY)|eT3WX-hL2>3;dlnOVHM66I z%mc~n?Vsof<}a(oqxbfOCcj)o$DwHx6zE3ADyda3VZO!JY&$7)Gf@S(R!$CvhTCmd z%eC&^Wc1G;VZ7};a4b7b;Y#=Z`)6KtiF|mg26f@q&vjAV9k}eKz}eL801tQG{CIPN zdi9DI`-j8wQIx-fR^y`O^jYZE_|F5fdv{WfUH5i(={saIw$FB$Jn&`r&f>JseZJRb z4Ig?0<*%m|!ODe8c2WOQ`2bx0X-m5HS(d`THNW8rDZZXfJ1!L>kowo7(wAAEegn?` zFl!QBLJ8FHv8xToH4y zXR4qKggE|>mAmnci+p6 zG@ocu1nz}@w%ro8!)4CFzyD=DIj4E`d!rNAMh4~oSgR54K>M`bs1=C_|4fX!9=_v4 zNSl(QG=HbNL7-=G7}qtquW5(x?gNbAwO9zh4&RxbPoHjcSibG`n{Q0!U%y@!@dHRy zemvU6(btJHA?KbRexg;?i0O&N)SFmhsJC3_BfuNuKXnO@4x-VXz}r-5e7S;n8?6_+ zlI$+yK7#bSsB$m)#YwnV`H)h;&du;aL-6sbSaK$LDuyl+g`6#1-C`?A25{Q?hBAvs z9?7tAjr;9ji?SKVaNt(^)d1)k2f?!XgUVYN*B#-!AbCX<1FtKjnb5Pz+uobR2fBe5 zn%Stdc)@B9@esQpx{e=QCf3*L;I=UZTIF-eT#5H9=Q5H!A+&SjzA>f1WR+$%b1XX( zzgq#`RTHh1FIcCZX1}i4Rek=SPyS%fr1(E#6G*XnwcHl)L%Op>z0N?vL ze1e&tw3Dd@jEvQsx%@Cfi2u_ZI=J?Ht&2)LwbZh9Y8r2a)QsL8Ok{vNBG5Jc>DWfi zF^KWD(9FcN!OKCHsDd!rXQuIrNmxn#JIQY$bqdh zo$;?%nz&D!IDOFVq9%BDGOTBwdfFm}Of%^}n$a32VAsyIAs{r@>Zce;*h(yPyPfUD zsN~15Xn0WJWYUl^lV`o%#$LA4jMAOha_JzMfq7A#o|(7l!vT`q0G{u5Q9wQ#`D+I1 zm>N6#VEgM?i9`oi9zKwv1TF2e!Vr|Tu#->FiBQFCupM6p8|9-Py&1kuI4ii&oyX;_ zVwn67nta9i7``YJop}p$ygqx}A^ktw+xz`w{{$RAWmCZzMzx$zLppCdRH9Rw`L!&~N%&CXQaL z8~gylHqFIMb8aUOc|A1PoF1I!NXCGh=bs~w`IqusT}Py;DYTn@hGopC=LcIjUppkR zzpbk9N8LIvGOAC)7HM1j+xpvUeQ{w#aDDJtGIOwi3vU^SWz7_rYZ6C8-Pu#CiBPZ` zI6;d)T~8{ko|#VVL+V8Pt@m@9wTxF=#sz{ZelVQJ3h!5QInb*wf+X0Z*|DrNGPEG- zV)UloiU@X$)tkP9joBbDFt+o(yv$W$X!beGpmhDtgj|VmqiSTYsEK?lh(%t-SrunO zqaOD|+|o zkKN5sV7)owU&9u$Qyesi_se3^%!JeVAe#lJUMY9DAenUX5!~svI-y^otN0Ma<2sSa z-;qKP`RJl)hgiS5SY=}9uduhXdILG6p;V3Q^zi{RxVCzVpmm0h)Y=_b4cShIA}@*U z4%o^!FIbs-=4?%D<2d*MZt2(u5Q{|!IP^BnNV%0iSv$R0?^>Wcp?`@(EqqdI3ut`KzI=a@Kv@hP!KZd5~u7OyjR9NhENxr}drvvz)=oyb5fxv6Ky>aAXc}C`0a$gkEk;a!K%N-X8eiRIEIUMqGu-jUz zX2uiU!)pS??3UA7&e?T%hQ(ub_V@d<+*@^VED;)pSyJ4(7knRr`9B;I17f(ZR}G=t zHu^#A%>Ri3jDAgrUv}Ns{fUgJpEd7#FB5sk2K~PQD6@Iqo3xckX?kp^Ez`esAIBo)-E$D%OH@9O@J!!dqB~@!bkxx zW6r;fdHiSeLRzZ>crHw^{<(^s33e7-?oForHxenTrC)H%NJy*_X-Kbi#`^q`lpl=U z0HlCCJv}JUF^b?{+n$|XSZ(FeC6PO1f#EI>?0P7Q&tt=9ow;{XXt$S7H3fCZN(eL4oK4!=r+>%(Ke3G?P2-rmNN~uch+=Z=J$2@a2ERwN#axPa!<{hp#H}s9% z!@5;vNufrd!_03VFY#{2iW!$<%m-)R(wNfUb?X$PjEB^z!FTj0F%yxQ0II7BHJsY* z4O}#&Lw8JeSBHwGty&+e?ykrYn{DRUsWCVcElr;cL)J1FgLRo0ac&!_95%XVJauW6 z!jjFsAU9^my=;dnRX|N4*Zat3?a*?9I8?dXekS@Z>KUWusSsL5Kk%E(1}wNDD4<3H8tkK?l3aPCtHx+ zCx~@J@Fl%{<`E7)$TN>==$H&0a{q0W-1rlh%01!QH#FXr2bAmxZe-<*uLOO{S)tZO zWi^c-t@Cv1__VQp2$D;*C<@hxH%us8cFvRCzj8<86|mfYO;R{?Y5q2YE`p5YXpvm# zJoCJK*iNk;pRidJ7N@#!bFXaMkGW!++2C z?5b?z%*cY;&Aw?W*jQ=`$9%myohFDF6;y+g+6LvwAO9qm@bW}5-{-jto;a%3#RdNrjAwc%ox#p#zv z#okl3uoO^N*@9ItnFQ&JVe~UqA&FxS*_Ul8eAE7i{zVGpy?Vwu5 z3F{=jl|!8<#HD^r*TOPXqY7>bgIhKY`G7t}s)4zfhlMIkb_p-GwZ(*z>}oA4I_wAGx@e26-5KsD49f zTJ0?V();(3&7Mw6BHzuW=%QF|JUfoty7ruNxvf4I`j|y??)smVUH+|}zM7t4U8nGl zpC&3$Q#@vPd`fpSFnnGZ1*bkbqs~i19@gV8N&@hC)ZmcaggqSaLWwJgdp|1!2S3wq zYr0?&;#Y>nY_;ZNAzFx6$6|g;B{I0teXTBUDMgZeP9EzbF_PQPp5eR&Z{%box-0%w z=3FV5r#q?GE^a{2(Z8ZWtgzPA;S`l8i%07$EEAq7b(wWuxmaZPkX@zSFM^vCvQ6U6 z{#M))hem&^^UE4P^WOio1yHm%j4B)LFh$h&Ew%i}F z?l~}W%InYmuL1rk`%24{w@07}eRM7>5{lNNZ_xleOJ=`6BpJP75#E!#HPSbKKUAvm z?mT-gY;ySM3tiz4oH?>Up3gu=q4<$VF)Lz-fSw@O5%96At&&=4n@~5cy^P)Szzqhs z6|;p<3M~6fUma^%XE6`4jklk3pvR|J=ECL_cNWK(73)F-VDa(RpdZ}AfO(oZMUO<> z8OzgTdQ;nZ)54s$ICW^2=&fX?DeQYnhNH=1Uq=BaqMNocva z7{nZl(h3MGwup%c&h5621L*Rb* zdDQYO!=se?xc2lTOl2(5npo`Vxl9@g)o}7?k;D46xF&u&CM5KP6|qoGcND}%a|4tm zpqwt1VPxtLhM=ClMq?E~gNBd4Wo-TFC62cE;BW!k$g7NcOR>=fqI;7m`}YEa-Pyq1 zr)W;!-QAtH#F%D&uoy%@M(%E`(mMG1jVXI;mhtW8`r@Rp%eDS<5+EEKWk%AwlP9?` zuN6n+(~1LEl8_<=mpS3#Y^>26*Ry-}ZKCYtxjsXDKZS}0F zaC#*dF?R$!{_70SH5@+}xdA2hN3HlcjlA0!{}k;0&Dg?C0<3mGewgwlBIO&l{~}9N zQa!U=Eg`B6q{E*$y4yDMYd0s70MZE!wziKp24~zt?6W@nx6dMWRj>Z8*bTL-KDEe^ zkr>P=3yjk~u7bL}f3Z%+Vp%ZIn~&EL~IcN(Vk!~MrViR`>I!E22?(D7>#8Xi#79qD^B>zH_R0J7)l&l+#C z9}%(SBx;k(aTjc@7N*7O?yl8)*_)`ZU5n)eLk}BPPUgCLpZa2Q=8a_QmvVl8`P6DE zr<{*u{{$xxcgqEet*l9vA>Qy9u~Hb#m5fzwbbrTwA>bfyRXmJC8xy_qTTFli;%da; zLs+9i*UbtTCxmkYHbHQlBN?1TkWD^6B5_v_lomq0$v?&oe~q-Uhyj>0Ev9W zOQ}I^MET8wHip4Sj|Tqr*%4GvRmiWoSrgmbn19{n2sWoV&9-Cb{23k4 zchqdwX-SBOdFPEryoMSO_`e@@X0m^#DRF#%5ez1?R3m45C#Of~+ZI7%&c;kn!#9ne zB6k;oLb$mlccxHf7qPwSH)+O$CIiE3r*i4rTU(!Du3Knw2jh8QTdOTSY|yVWh=Ci~ zVCV`B9j8Aom40P<;S%Ox2}PjQm&`!n8}As?160cvM2q%1`VgPy&}`xqtMNnE zhPLwavewN$VIc4bQ#H?<>0GTlmk}|`5PnNLH}=UM zo%sxe5RKaLi7j0IZr#VtrjBIPBWHxEAMtoX4fS}re?YMmxcc0h)yDOL=;v8Z=; zV;>%`Hbcz(hp-oh*&0W+YuIdAHIx~^qczt1k++FpmzFP|=-oJR;)P14*3d4Q9>QGaERuRRf2 zcp^P{smpQ;j(iO~CZf|WK%@^~SKJ2yn+oAkD#-qFvU%lrdbjjwzV2?iz;e_Ko(@9f zCMlVL1zqJW?vlWDLv1g=?>MwpPR&A9&F>LhR%ju{*x3$*Ua-&5p8#FT8Yqa`Ffg6{ z@1D=H#J{XT0Cu)+@$`|&V<+Knf!ie`5s@(ZaUaP(rRlTo11hn*ZP=0j7-ioJYlPU{ zUKJv@L+pgtKIe}$$_^uDGerN!wnx4=fC4-=?>F$86MP5)xR;R7#sAx_>sq@WQDg5b zLf^(@`iwR#{@eec4O89QxpMITL))qr4a@lc*4A&-`{!PQU!N2VB*n1}9F>jyH=+QW|&?h`TJg7nOnT*&ZxWKgpnDHnn)P5mfIg+i=z2oL_ z_x`3TiPm#AHXIVkLwkHtKo&x7b@pCK3)#Gz{ zVM?NAm1@HI1ZKWvrOO!rh&@@p0$k>6CFe!1wh3&S5J7CMOvXp(7@CqdZSM1q?#+X* z@ZNKy45HMRG!t^GkwcLakczn5aN+Z_j~=LrvAso2%(qiX)2-1lX9l1 zcjB_o5|r55u<4}-@~PI5=Rhl6}`tp3X>u*{t7AOrt?ke^g_WFG2xXpo(j zFip}8TTzhkIO|2aRxvZjNv?&h|GFvPgeO*~W@0s~5B0!rQLv!y!7zcil1zUPqe48&#m1g5_7nch00?*Fl0LI!Cwujho%SQleg zL&M(3-&jW01%EeWfjks%)=v6<`^oqnqmpQtxNa^0$brvSJmocKO&ihfs36Ze#3q@ zj4MuBq|6&zt2^`~XR1NmB6rfz!V3FKYGL4#ufaVir$1bNC2;aZsIsDDFwQ4yTteuR z{aIj2@dd?bkh91?p@|-8Sj~c#lJznqJuoY}tSUCy{5Yz&K;PQmc&zPHe|DAac)Lwj zQ<37Cu&@&r@3s7kP?2{GIkl`)ka<`vbM2@JoK6vY`@>f!E7e<%yhfd%jb{&pn&za`J$XulAnn(434eyGkVf zP~*2xWzTV%rl0Y=EsDd2v89j#sq(V?^WmSrb685(M-t?!K zc^?|IYUv|76(sue;q}FnGn_s;*w$UyrQuAIvSVaO#p&iAOd{V9rK<7D zCqGAwoE}7AJ_>ns*THxzrgNqY>F+-&b1*Oe(bC)+2&*KJ|Vop-Yd5lT~JOC z`E1iNJST;jb$;Fw(&(9a&Y}e*)vkK-5iT7zxH&!ho$;0T7B)9=P4crt!2HlSymqeJ z5p5Cj{l-UTzghXLGZY;l{zq7%hd0I3{x1&EPrR4VS(;es>7406UcTeGK^o%gvIoc0 zmOo`~99-TnG@ANf@ESP!2JiED{AiQC%ccxMv;waCr$tQApG#_fMQ&;&Wj9BWgjjYALs6Y}_ocN9O>gh+U8`Dta(?zmVg}J=agWVcu5AmC`uRm?LkC&(^S7?cRQ# zJS_szCbjD{R!PhDS|%nHor2M)+$M$1#;ZWMp2zH?D0?me^YHK)DPC12LAl9IpySRh z2D1O&2)7E?yQl9r<}9vxi(MH;F5i=H^)Rx?V+@6Xgg%Y@x8BlfF$c^smIQ|`J!n?b zW>He$L*_BF8loZ~*y=lf!|Wyukq;)KF|1c|D0|8!ggB(=?3r3dpq>f zyfnaDOqNDASU969)hzrR^$itL>AKRPh)3vgs-Cr>aM8{IAzIpA22jpGkse-@b}mvX zf<>a6c;?b5{ARX+e0$&NF2uV->1;)jxASG6M-S!?{w)qMBca=ZvOi{+Kpae)>7OEh z+0VV%%x<~>gZB?e)xs9P>`mQ0`34}KmbxJU-Q6W??;*0XRuc6ISB;NFl#U1d1gtJq zv?Ezy!GB;gald18vRqHZkcuzUQG5QZ z3uk8{BG9N?^HQ((BNGc1CAh-tSe+B*ij2KzZc!A^h%W{qIXC5Rv$CDUKWJrwa400x zF)Q-pU12#{@>0@u*av5?SsB5@1B{dN9I&yBX*q2?_?*RizZI>RZi?ppEN8>5&fM~t z!;*2=&w7!s)fy%{yQ#m=JCwL3O&MC$9z*WA>t4pkH)q&C?TodenIrxHg&^0`SIy;7 zBi&$q#ZY_v@GZgA3=ID*5{GN^LP=V@<9=;cCk^Gnyvx9SWj7eZ;^m3&8PLHEz9u}& zdC==bWoqcZE+YUoLF@&3AM?%J#yMF;atY}sjMp^q-7r(vB1KkNLG-!8zR}*?)Woq2 zhwquB?*7lIpWOvh*I_@ZJG(x(rOP&E{+(qYi;_c;MyKG6E<2Wex#;Y&I_<+=vMKVv zy8UVSEsVooxw?>$fbJ)S=m&Xl4b)#CE;bIh?Fae@{@fcGzINE;B$xbaVFKu$kR_vC zl4<{CLA^{U2ZZzgf4~&`XT$s|ALjpF%;u7JhU>PsAIPhv4z=#VlSh9kBEvP+M_g*~ z`C({q59KclOyWOsvT(!&*#!2IZ#P}xAbdXP=TF}m*KwDyy;O}c1S_>OmS;a8L#%&lN0*`fas>N3(?L@KxY$L|?H?%Qq->DiZHUYx*#XW?T+YV&dp0Zg* zwpCpGjmv-}Z~Q+Wdx=B5Q#I>Dl?Y*fTI6MmiY70+nDtGy5JFOUW`=b^zYBeTa}>aS zRgZi}KsZ(dm-K0RVfc@Yq7u2Ir#MWBj$YX=A)(cZ|9#Ckb+;g2q{v6<0ud#cyM^68 zAmnNaxUP`zv0PxH^0UMMcS&oh%@gh*PYfn4?|t=;|GE7lNT;bve(sJ{+|1)Iy9{Ac z??B^{*a0e2^i)_%B04yEfwfO4+#XnrdjS6bx)AukEg1gazRq>6`-g9qk&)s-?6PD` zOiW=wMci42A9`#c_nyq+P$gj2#Tq6n7g&)>l@`Q|FE`~lypFi%Y+MVIF?o-IgavE z1hq}Qu1%<+yu<{!z9xEYtZ z(yg_U%PxoPPDux!LSEhgPoXR&^6xiN|#f&$l zYH^nWah{(J%@>;iPg(QbU-cl!i20 zRt^tBxG-v^y;3FcExJ5CtGW@0<$P2Lek!Gdv^1E`8gV3ACQGLLMUnHnnH3p(QSoNp zAf|+L-!&FyVxjDt@CoCbiY&@kvKqld^eX{bM60c3WW&4IJnt;C*54o=ZM=e|)z)Rw z)0fFZy#-^f#)%}fc$CRzDb4#ZKzxW2KF(6C`%_;BE}}PIFl^vSjlP5g^sx0MA7ISv zAv9>8VWMN%!9gQKSrrw@Vemu0hgp$HD>!$s zS}j}bUyAf5-N?zmbKEi!ge&1`SSI%S7bGgjI^abiGb(Zh^hBMg)VS>S7_RTHEhm78 z8SOd-Tf8D~ICQN+_Fo$Z#-;3a{ABl!h3adojfRR*&COHe8bEna-tmV^VQ*X2sn)Jo=-Rd! zIppMT*+k?+&%AKsjy~Odaq|t>V()!4BO=R&BG2O6&3{kB zXk5s|i63$1-1FU1(vz7RXR)aRR1eD*B;nK!FU&nlEB*>E-N5x@ZZ3K6cZb<3qHLsWv;!h1`WO!d_f2POdU6V%)2t`6myz5TBcbdi&mS4QEZBecX1LAD2+4qI>?oU`qoecm32mK6~0n|B+Zg8e*@QsDDuAL;E|4eX~3 zS8c^J>yB^Tkh5Al!x^t< zwU&lw-8hW$JnHxUAo}aJPj!&2@uUA38B4Xlz&sG;_&|S3R@6DFzo-AOi23&RGsDC2 z)x%E5#xO#B@Nh;`C%5Xagp~5DPOP+p#jgs>j$X{Lb?F#hY0RL8%c){ss5x_@qL*$O zI99rdK*B023C9}x5<6*I!wfzC(+{&#PGw5uE?t6fvKym*>+(ZQ1|jw@#in9~W&o7b zD~dv_>UJtBXUD8X`pYu<3OC1tCxC%skLd+R4MhtHdLTCoyyd;62Jb9n;-mqAl~~*E(npr z_30n5xwPg~8n<{F@U(`&oW?QYXX)2)^#`NTiJ^N9?|2Hh266nfPKn9I5&xxCVjTJ5dFx5C8YrAofkj4sV&64_wLZvo*wOK%XsE9 z8hdrYUCUUQMroqHh&jpxw_f~#Z1j0@-)FAQzaV`bfv!7P8OJLIAAGR2K&V(XT1Fsc zFg!9!c!RP~fcX2O1*Yx{_B_(Pi>MYE5n8Wwv+RB`0%4!!yb$>j12=~QszlF8C6s%X zX7he$aklEoQE@V?;fU|g<|(jsfYRXQE9Ve8M-HTWsl3$S(PUbOu1`M`{flEQP$xvxS~F$rGtLruuZf(&g-U*zta8M#<>Ws^tsm(3urQ z1H0?*3qhexI$7s`A8BKZ4P5g_e8AfLdfSjTuQFQSWONo7=U*$M1wr<_41)B-^3c|| z@qIU}`Vw;POh2x_*EmXQ8f+QmjlCYYp5-heohc|yS9f?5hV4=GkKHPJx)7c9YfJYk zq}RK6Nc`_*g>Qw(Z$GpNLnQ%X7p*EnA6JLtw}s!A0_J^;w41#W>>wX;uM(G>()GcP zr>A^)u%|W8g`-^Q)Hpv5er}lWlGe9kQ@>A%Yo;l1U)+v3k4U~-IzL{sczJW)C=3Ap zn%WB>ob8)8F1gZHg%yPDgWF- zG)`+_^5C1>xT^6B@~I(*in}xdr8=7LYrx<;2D-~e`cCjRC$SA@&L@m|z}DobhJ}Vk z0QGF(;QeJ~^@A5DO`r6Y(X#`0IiEodVGh6O7o<~-nvdPq$iFO`AVLjhDSYGB!i-_? z#}Tw6m*>Y`*KGl&IJX6?OFJeG4=-3->jvpCYmXA7&c#J2=@g933dM#kJKHg7L8I=` z`CBza`{JnL!cEm^+r|5*)-14b1#MB4xLF^=_~ot5B~6va>YYkjsL9 z(cpaXrF#w^SsVcN!hYdT!G3JIIzHrz?R8j0v%XzKI5E`XmpOl0)_tkyV@jWRC#BOPOd%_;Aq~O@DCCdD0!%8igi$Zb%NdUcvg- z-|M&{e=a)7ABe{K1eSv1X2^2nvPS)1n6d=%Vy&6Z{tp`mP{p;g-!a9^Z|_9S7e-zh znv&4Bk5pF}U9s%2&-M|4_;k=4B+E3u9$a~JFn-}k1;(_Y8m0j$Fp`l-e>SxK&)O}Y zO1gdVr&Z1x$f1DFtu2HI4Lx#tH+WHpG4}c$5=%{g)}X0TrPf6E`MtVrZfpS*Ay^l( zP&;r;rw-h!6K$VgnMX-k@b37O|3k$)r*EmtTMfZ8G`6BP6XS|aV;r2n$qAl7I7_&Q z41CM{4;7TZl>k;o41HN%xUksB0&Fb7&)^i@6IKG7n~Ab=qwzo|pRd2qiZa45iS{(+EyP>-6*Xqf0Kn>PIxwM;zcop8)J9=#?*n|o~cY+iyj>B7S} zbM7jRH5!%nZSFMwWHe2Z>g#?)47V=H5sbp&C~4PCdgJ)-H|kf*oKcfIcEbCPHyGEZ zyWNU-QuwoU;&MTfObeY@9DB#Xw4Mn#B<_g0Yu|gHs?DMknVwC7v%H z!T6EtbcXy&HZ%~){Wfx!3vk`uW&_8lm|+TB->p1Tht8x7u$_D2cR+}6=uCFMJ8i~w z(7Sk!bS@P7L(>F|F=((5e4s0uSBrnJ`&Z#swYuI9*I>#eP`Ma|~Bhy3Dn3u5rYJ@LLVR;KIy60Lm=lXU;g8+bhn|HK9m3` z0*1o6mlvU}U6{Us=M8@ir4mLZz3HiLfZtYwVuQ|f8^2r2L9S#{Y#Lt&s;arFCJJ4? zZ~e`MSG)zaKK8l=tQg@N5sO9)-ZuZFd7F0xFOjw0J@$i9QqFRRx4esPYu+^oP;EG0 z-#n?1z$`HLExEfzGb1@F7Mrx%@p#6jzFmwb{{Bwh4LwXBc%#4=| zDEx6YQe%LdD_N478vi=?AV6v+U9BH)ZhO6y2IG?7oyni)6f3i68wh_Vbmpm#o z=6@WK1;TOSOE#O}KPZ8|YxrXW(yaPA1BQlJ#b&a@vfPE(X`=SQ;@Md0ZRn4!v`m+C zXP#%**qFE8f!ZoxYh8^Vnqk@;&w6PY=iLYIeuZv}L^2IC;0R zp!YL(PL)z_5Qi>~D!~T1HS<&27#6_b`F9|-GZ;pR7Ok9GTa%bWD0U7jm5 z>Nm}DC#OfpNCrB=P)*<9S((MDeDS*_LZuV)4?O>6542=S%-0ks-SRmMq3~QoqqjDL zu<85pldz?b$9eB(Tq)kCw`z@CB?pBo(FsGdmHR{GnwrnK3-0@{QCl%6Ae;uhnhGNF zeubkw7rR<-_YK@2&iHXH+{Cn@%7?k|4tX+dQRVXO1Ewh!<}Cke=m&wP(o&pah&0k;|E zaP03UEwKr0H~&ssg$TktsA@C5LH~Xj<13{{tFNm;XkdCQu48lY%K7#1Ku1 z?V2X{wefePrfsui?s&>Qcd^ryX$L`%6ihQAPJ@?aPg)u%<>6uwhiw>bx&m z=(ubd8_6CNMYxMaMn>q~P$Ca?#WY9miq78cp>4+J2$pU-UC(Ml#cD=1P;Vm@(Q#er z2Deq_olVqc=O5Czwd>jHX>%$r|LU2Du5k)XY!<%Chz`hi?!@!Rh*Z2CMCn2 z@GCLcwq9YqwC}^zbNuLCE#DK?Kyn4zJ*>!Zz>)_(L3$y^^@d{n9L%m>m;MAZfB z+sCUB1J`CL$dcDMk5Ag6)WwGzYV!_{_Ki6eYZ@+Nz2-mbK6gMYMO`X3&vJ&WFmWFz zaSQ7azxK3pX{`CAO_l~u3{wFS_f*wbY&xIkV#T7(#?pe%y}ylXb!F5RqJXCCN7Afw z3UyQrZ|rV{3M#|Buy-jf1j8O*YFWm1^!kVtY}kfL`S2^$L!v|LxE2}Q4Gjh{Lj5IX zbJ;m2-+!0Ci1ARd*llHmgNI{@%9bZI zwi&Q0{nX`x;{4dXc4^=J4n`ZB(OIf5eVdIQ4z7XR#5c>Z?E2s0(`BCzXCO2#9*ArI zO5x@d9iuKyXv-%^TE%7C{%Qaz{ioLHr0S#&83l!0?AFY1sl;#LMvaBc4OH0m*eT-V zdXpjfljW)D?S-wUHh}s*I2_p&W&BB`d~2of|vE|nLlWJ;A7huC?dRJiVlxy8Lx#y7sEVn6>Bnx(6qQt z`8%=<)yH7X_mvZgQM72Uy@F4#&kx{nCZM}wcj6nr7{6gV!QYcD%L^Ee-p}h_#wTgJ zEdsjg_lu!_!_NS7BqZbs2voq|6S4olY=PfL{%AylVmkumCu+4fSu72L*9ozyi^tkk z@N6rnc9Ft2e zaJ%jQv!+I$5NVPakM=eB&y-IngED4YTbb7f?}REIlCnbSg*0YecGY)>sph@{WMN#QVseEAsrj1)K7wwvMypQJ{&3 znmUW%V3owkVJ{OGHsby4)!&;a1HDP-erp2cim7Q(B+`%87VFygQYWKiC>2xH?d8M;T>dw(9ZodvNz zEhmz$JaQ@L1myc39s?v_KNpjPSJ&Cyvimn0L9x8Wn#jOhS6T6dwcz+!IWN*^*JXzc zT=kxUvt(_>i%N^jwrRnxam>=WkGJo^K)7eyiO<{4TE$=Q7*P@3@?zg?E1`Yd zotY%d>_p_5T{`QW_)QvhQ71}L*w+TG4o zTRIio>gvDHUtMKrhk9^A(dQjDYIhV4Y7m5Hxw+;O!y_w>$je^)^d7__MW3(mEfI`B zvfUKa6Cm}v*U^)(O`0fWBXf>)|6QxK^{XBSRuItsaEUR8&JL_tRp=o? z_jG4`rnopHjGlLBB>(*(u6@_b_=PV%-_$5BoH>gIkV<=$7^H;h?1pDP9f>tbrbrq& zPOaqRX&!uIoPgGN9+M6wLNBvL2VoVBcj&F4wFi&$7S|8Jf(kDax0_;Bzp9VkHB98- z)RbpdfF3*#7r&kaK-u;8-hOb}7YV87S~VuZfCgzTXc3W#5#H8scUq{XYV!15MCT` z(P7D=@OX~87BC!ma<}FS81#a^+sghAM`GQ>)L&vle*gB%{@$MQ^$sfTXm}2x@aj+` z!HL4s8opk9JT7OTX;;#s0uRzW$G`d^Cd&X2 zvzjb#YRLgD0zyLn`aUc`cgjYzB%tNy$V1aH@pmT%^Or%0wdyrcjb8to+JEaoIGuO2 zZ4hpVbu~Jj_|2vPJaToJqm$XelW_r!WMUOvju(5F$IUKp2Jr|><&g5(C6G=;?=sd! zi)}^&;oOpkpW)|6HPmJPdt?Ys5w#_r*y*K`>+@Rboy_%|Z8!oEG4Nkg@aQj|X$U+C=PN-cH*VY7O=eDqv?bol$csyYvkfQ5ptcmz4B#Ms0;7AK)zfv{xP6 zDYkok8$wsKj=|tid3~c=gEx_FyGhfaz?qx+LH7;1HKg~~0Rd(rT;BD(_B%OL`u>K! zg7(7plA=Cdvits(`lgCYLD6Ymsj~ZtfY@$QE7`jhDF#V?>MeHJu`Z_c3)c*B>3w+4l6Oy zrU1>G{^~*5h-v|k-$|oMXAO*bW{# zq@f=7a@+I$k?K5uKCkn~^LibBZTr1`zx}?S_viijd~fgXM-fZtdv{L!p)y^t=XO{D zPWzE6-C0&kEYjDY$8NmmVtK)LNxqZt?B+a#Qf%X9>*8W%+JWL1CA=_a%*j_n`~BKU zuB3Q=XUjmD_eW!CMAVqUm3BA63FDBW->^RZeyN?>qp-T^+9GGOd~xY9gRVe=cHY(a z;8PyGgJ;^431rJ5)>@2BG0%_nM)H6H{p>L8t4E=S)=k3gr$Vh3Lp#=5ZUWLDkR0t@ zG~WxKoUSu58f^Ayj#a1Yh57SJx06r#mnL;;S@LQxfC*KbyPO9xZT)e`;9uddvQN^K zDn^~6+2WeT3V0V;eA>_J&%K>guhCRAx~$iF)lW``V{{^h)Kj zd_-+0Py9+ht5R*Jc2m4$R8w9*J29|$8i>vM&oKP<6}PP;mp6jR9aW+C_(<4v=cU<_ zEUU%g_{2oTw~NwKBDT8a?$8X*P)YKlLIcMKV^VIdS&Ubo2)6VtChV=hUK~ z;69Z#ICdo%Ol9Aex~Vp)F_g|pRL5t)&G*jqp3b^*cH8atoj?JjyU+lv{&6uD<)46Z z#6G~_h2CE4lN?wSD#;;VG z(C}A%ZXDVmL3uMh4+i}zgatLrR;Z_9{At|-jETGsd(dA;1nRakeY4w+!kGc(REpg^^} zuHjfo{o9Ii`)4;^h-J%~W16@x;0K#mmO1rw=Je{1Kwx@waZ_K>b*;Yb6vp1M#ng^+ zRVW9JFLRDr(|m-lAI@Z}Q@#1W_`(#ryJ~Iw( z23o8xnKGw`1hXwONx4*Tj`y+y9K+b7h6`78#QL0eU+fVV&R4h9l*^9lwVu43`ufJQ zB4x%7V)d~+N&>XbEFhtK7dDNcZ#O&9VZIFy#pB9c7w=qJlcC3;LO=WY8*80ZI^eRP zA*z2jCoa~d`OW!zXt@hDx0~J&J{gB`o~Fm#;gLS z`4NonMr#9d_t6>mW%)OjH{ugd$f-^!a`AEZ^wESHLi;5sK9{hKqAQyU`HRI&RP;MV zlucX!EbRkp5NjfVW>h&z;K5~4p(-z)6x)$LhV=I@0`uO6?kBLw56E;YfNC>W^XytV zRea?k!uzI4x)SL2bWw^Fh+egC4nEL*ju%RDx{@viv;h=D&!;o3-l)>`N~%3R;Ms+V z$fmrQtzR&8kVg>}Si_)ORJ&Dg8iV^y2xI`0!JeY3Ykz4T6Qrl}r3D(^&X^3n=UWow zPY=9nuJB=6v#{dI7g1#OF$4hM!yEu^_hSQ$mFcmDLtoN6SXgfkO3`(IYeN;=< zaZ3X(VPP74p;(zdYVyr>NqbztNijJ^ z^*ffdxnrV!>?bP z2*X!S=x9~|8B3EFf5PrXce_zZqoFeg6}JZ^Z1XXJas5K9+PI4}p`4aWd98(9;1yiz z>+?wk8dOdmjwzcHDN&aebp1OwJ2Eh$e(*rrp&qNB3LSClt@~Jg&r`j8Hd~YX@FPa( z=h-TioR+)aIAG!{q(J-*tiIp&&_qP|4dO=9c9~?aDna7=sisXHHQ=;;)LRCX1D1{r zD^9dn3|>_ft@!5I9vcf#R6&~=78m&$!8FF0zF`D47iv1wrA3Z3VNPUcwqUw_r?swZ zX;qiQ=T8r~Eb!{XvmtHbyUTsZcVXm6((dGyX9dy~WjRqMIVxA^Ze>VzL9y5n(7GQv zOY6V}tW+9K>%Wed$9A|ZjOT-fQHWe5_W+XcvccRBJBnawb7o8$yByd z<2zwOIHZ(if!$PSVr!YXzEdQ6)WPV^c#aiK!{BD?B@tjgXK*$`da71HG12LnCuQ6= ze9yN3CUaTiT99Dp^2RU@6$(WweotRHRFKwplv$1Sx$CJV6Xzhl4j1H0+B*~Yf8P;3 zD#AUeMxs95l)NnS(?Xr>vz}|N1$28nSTR%jjqfm1Lp^Ww<46`=xiRRK*Xn^ z@Gu*kTPtfc2xm<`+XfeclWGP;Brcz@w>iEE{+R`~T7vGS9f7}}BEnIA{6730*1`85 zO4|VEgAk?-O?b=cFq}iBFmXusA}AcLJSW95#QH3CTmf$|NRh|@w5N0LFx+RoU%j#+ zTE)w-XzoGLt5B$2q2q~ZRXeMCuj|BTPuaAc`TH*$7Wa8t&9#Q?N*hm=tTkmo)xm#0 z;s4NUF`KfaqARJP&qj#v5aJrcP=FYPG|Xx*wJvDHq;TX>7{M`8P|8<3^`?l^ypY@h$zy00&2T|o_plwP z*waar@E~HT=qqNT!|OuQc9&?-FA?^mTX7?jH5j_P`5cNI(7(iSy>)6ylxL|2?1`wI z`tm1c)W6obm_oj!hFL{vhm3Wz4OWWy>XEx80tbN4*d!%`(_qKg!3hp+#TB4uA z*GotLxhvKGlok1TJK=2l&)I>Q_xHTN=lMP#@AG+JJ`c?2f%!b}KjwkVM0v@s;RV;7}{#91JPDdvy>nuW-&%ODD6vWYYc)`&0`~C z2uVw8im76VM5q!<5?Y7e ze3$et5fKsbYgaGb77^JB5VrevY!iMy(cO;|er*c4ZE{hhyjylgc(KL(g4qQTk#`BA zYoM*d>z%$=Z309@b~pd{-_+_;=qe&&D0=PEg*zdRESf~60vOKrduM^7T-*c&1h5By zIfq^!dMoYx{>W9m2a5#@>2Zqowbz*QCK?ZR?le1dc+2smLpv4gLYn@*=%Hw@K;L&{;+c2ujYBDf0$c-HG3uhpC*0M zQps6cw*LpWyoOr)lBdw|d4q3ZDncE^c0sA03|AHVGmH@4tXV~(wNZFnTgs60qhVML z%V+2@HnQa}z8b~(NWA+`W+(4A1H=8U-_#8Cq9&M}ciyahu^U#&0O|i_&UL_ag~;{% zB-=3%jpBOCvfdon*IK?AO8ee4daH1&Pns+Y?!hRMWa2z>7tUq@qWp6na6P{*)#cx;A- z|1b;@=hDAnz)h6;nI{LaAb*JP78KYP%tLJBUq5;^tabnjM1)*i6s2m^VV3$up@6?A z=c$fA88~z*3T5#C>mBy`2{g@~5;pq;E4K-n1FiTmR3z>|Q}@a9b~=r{P1>evP=lq5 z)c6P5y;$p?y)7MwqEIHTUuG@9Ehp=r0OC)OFk>G~QaU~<46ALApKVrp^=sl}e8Ali z0{cWWWmYDEuSfX4uvnQIIU57nh=kce1ZyQP%tjwbP z$pXV;C9ecj+ohEq37ZlsELu5(?at@sLI7cxxU{Ofqh~!Err`aU@jU-=%3-PUb5>KV z#EO`B8+OVmD`wK>=4(i7_p)koXn>phM0bj)WV(yxIpDW>pv|EanY&B1QjvjoqhS?^ zPo`1hh8dxw`Zjp}P5Wrif)ZCNtg7spAe3%!V5`Z0vW~kz4!yJ6@bn2j*Uk?7vhgV% z=E>#fh#4a8AoIa^qhm6L{(1JxSLHiolRua{DQiu6z4(xt=%@7Xw=k~kgROswIYQ7T zL7EjWI*@t&)0go4!evpwt0K>JKBr@4-z7Wq#$If$^5r&Iw93Zy20}5&y%J%!Jw9&! zkng0kJGtB39x@f4S4u&dBP#dT#uprQx;vW^K91e&zruGxluEC6+((A4>kUu;MO0xn z+(R)tQ;fV62=f18$$TDl@}i94=-#N_W@GUOX}m+)_G#?vWq!I<$(44Lq}X-7V<+7JHis3q&kVb7Q(kZKBz*FT86S^dM1y-LocS8|kKk5ZyhuiMMr&;MR? zXd8BZHrDluQW~efvI@2#KYaRqPxw1A*}<5Eng!Ix;bG0?J9S?3VakEv{xkSwKM4Rwbj1u;vx<8>QVEi3@F}u?X`rp^!qvA~f1>|)8RJP z(Vh>axe=cr8VL*l`RD%kDoKh)&7Jn0;I&?gq;GF8>G_vg)oi4;NMu&6jhSQlGx+sF zDYoUtuutcPiBW1-vslfBW2pV4JFNC3UuKG<|1^SoQVTB_UgHlNzI1>|PxxukdLEnf zA(kqRn0L)LUy*^~SB!O#Ys7E?J0XKNjM#WLx|TJ-QF5zu>TanbF5ELr(7GJyJo{p3 zNhjaC$BhoV@LPGP7c41-M-D3xep|JIwiL)6uPz=ju3dLdlzxAiwU%%|Vt4y!HD~0U zR*zO|=4&RfE0-IxZw^-iW-oJiTNd>Q8Yg5HL%Z;I4$^}E@lJT_oy^CU3?-xKc9E2q zF(~bkGZWc_Ytc;hu>ZmFnQyXdYYkt^f#8+TKG4+Iu84B}BV9w7q4jKJf2k*F+YIf! z8HRP>hqrq0PV)k2x=1tNbN7)ItqG_t)?r(=Ov=$1iMEu>+OnPMi&dI#4kvE}%f4vt z5pUn76H&zE;pHOFYiIhX*VlCPj)QddF%~JK)6>Br%X-7}d5`^9+A3w&`tEP+@UTi9 zSJJK>Q*Qv{nEb&#x+^QN;qQ4zrydCkWkbVoxJ1aPaBF@v1$fOOW2DuX`e9eMdC5(U zDB5u|7R^wLCI;+~CZ})wg`O9&sjM?gddD7T+b}O$DjX6cX32EUbF7K-xXvE&4!LY{ z?lyVpU+!GF2vopZzQN&<6qYt+3zl=kyXK{iY*e0~Jivd*i|AczV4J$&+A6wCDh!V= zzU48)htH_1ohG>+e$$}5=%A&NT_Jj;i;!*Loo{pe-rzI-@;&YD!xn=?H(NjgLfeRn z-~n_@;O+%dV^d`WO*$*ALSZfv+x#dD|6R9=ITZ{jhl@q_iXrA~bo!svKF)V=)XYx! z;(hm5q$rL$oB=Nlcbncb<%I(_cVCsg6YoHVa0jX%qX4@ZT$cWpOkKWmoy*2y-L*0U zbVU5gqoO+nxwDe(i>S zLa9#%dxIw~H^p*PUew+zS$`tk;ljK{=6&3T4DFCYM<9H+lRlTqpW@}uPo#12hWh|9fj8YWcgLqeQ zXv`nHg~SZ&e?C}eappjGRcb4l13`GD@-1IZFVgSK@@OiUYUsXbloOhCi04q~(EBqn zD7-Fvjsjg0L%xLb;-q0$*i6}1k3Y*jaybB-LX7kt`(TIN$O`Ux*nMuh0_L#Wo-b3N z0)cU~j1u1nwJ~nOWPgavWaDBZ9@v!IE#X-mz@`h<>`4@AJ35qCPhQlTR!K&MA_srO zewdR_$5SfKWhG~$nN<1-O-DN8;}62zSfA%xJlk6L9Lutv*DdgSE#$K z7U{&j8#;Z&ap#R!v1{Y*u#UyL^^B+PT@I=M&hn6)e3EMRU1d&rEt=C-OgN|T3gC7e z94*}hRCw@q(}joyg?M(15)q{E++i|xz~CPL(#lg0gFmu0Xz^A!8$1!X2Ub6pjPOoZ zxnyeGdHZi<+;VmJ<@oiIwhBj8c{zpHN>X%^2~9QQNQJ(1M0vl~{fuQK54jqZFoHOp zjYVR!!d^p7EU)vwjT@kQ4c`d993FPBVF2F`n7z=o0=d_!O9?%boYg2I*T31vK6}aA zCS>fUU#o{E!pP?`J<|IQlUmLMQf~d)o9%))K7O+1iIY>T<$){8IEpcx#Tr#%F^nFWnoj%*~^mO zxN4Zk!xPBqGV;;wyQwC(CALaVulwE5anyjDNCd;C68ch%U;NuUeU(dI-+?C^|IFa9 z*Io9&rh;LSE)Nk*{bdO*E$#Z#!sI>AYdQ$(-&1@3)kh`oi#IwL3|k-RA5wE)m+x(< z)N)Zk^eB)J!~I$t4G(`yr62zN0%usLZ;f5GiYJ++w3@E@{7NnL*7cX*40z+Ecj^Tb zJR>imo%Cez(p)S|xMr;TWaJGllyAmds6Dy^z;Yj>s9C4cmGKKBi1C;Fy+y@1M^>u% z)}^_T_WLJUlVleg>CzOBpyk#9j-kcKEvoo`37F}1vhK=^)`)vXbbQ;(Zh$UM91!D5 zQbPAm%x~Hd|DgRb0+fJzVbl|OviIdtf9D!Rg;S*8+}LH0u_9zc6)9y5IhX`EbKi@GD!5SNuYNS?bGWCxD*u%49x56f0Fm3#9A!1NQ*nMe!yUTP)G?^_= z&3V55zR3j9#TRl;JNJ}PDz*5-!gOCQCkAcO7A_75MlP_-P~J9==)1;-Z4SUF!B5xU zt5k%?cvxkhl!eI~g!OLs{9xGc@IrSt$h{d)+Ygf;ZM>!pM%>k1A>Y@nP-J$p?^mx0p#yP3_1!!^Geb=eJpPa_HIq(G85pCEzbJN5l#x05RY( zR68aw_^Typ&`cduS=Q&#)Lp>ksUJgcL?*!*t5t5ba_Sq)#V3c7Uq?N)f|7NOCqI38 z>BkqJnY-~4y>Q#aiu7Z)?WuX$==2SAj zS5`sBymtT+m}CD~XHIYA+*{_;0lQ&%2ZszoxLM0~&X6bBB~JGWxS1GKLah;?(mthb z0zZ6xO6P@YOuc-xKxeY2b5v^95TJh|!!V_Xlm;*AmC3;D!zn<<8})r6&vd&*F!_8f`%SDCJgw9VM*0iH?~RoZk+hVm#E7 zIyE6BMt;yWdh6;pU0p96m8+1DqtzD$nSTMp3q;?=#om z^Lq-#sFYi_$)Eyle_+P%F(RhX`ZX#~P@qC&-!3%p-1u+QLnQ5Q+bfXEpn`+Gwv;G} zY3W3Qk^JvzT9Q&O+k)JNcLJ(kkan2>Mf=>+`GTj^xfp|3 ziCG*(YSA64dR`eBZA8?~H%k8I{e3Ok=55z8s5V5aL*u(}5yBDCnTYQuh-2)KR;2%W zxY`S?4JK+4Yhj)!rG!%Pi6km){&lDSG4^_fC8e{^E%g=|xg7=h@u7r@K;JNTM=k6Q zy7HSbjh9|l5Um>-4#h%|1X8FMdkomLMWuoUOV$0qNfaMrq>`g00e~vsH<|Ja z`rQY0ts+t?N!w7|(BN>H6TyMMmE@r%37fj$E)R;@q;2`v8{C1YP`nTaUz{s0;3gVDiBu zev8x7**!Xyzt^9(S7@?)RVL-qZ_-}vUvXV{xq5LwjFOZ1$3EZRxkTRiiz-JwsR<|( zxEJ=D{j~f40~0uGL|Ph3+XX0htbUMy+2cXrbt~Ew9ui$#G*iXsaG#1^s z!pi18Tl?Y&Cx@(bgZA)>+H_uJSNnPXT!%$s)C1V6kGFY?)V?T`%d_7L`!1@wCR3dn zsl3Q2_zs!?twy8P)jAd@#%HE4{Nu4%j}_3|U7*$ZB;+i;|EaN-)0G;K`x)p#MQ>4s z$2~E1CZ&(-x4w2+BS*})MOcldR?!24iZfy?23kI0=#^D(Xc%5Wg~$$~XQ`b&^xgCR zB*<~7dqM1A?!9_jz!=i` z$;SJT-X?-=kHM)U75~b%MQ-p-y4X`=ga+$LrKt@k!>s23<4Ii1<;aQc#1gmq3e~@P zNFGm#DmeF;zg8*PHO*Z{@Qd2iJKeok-yhauRR{_fWwh9mMsr5l_+VH|U!^jt+&*5s z60M=Uv-~2h+el*Yek*jx`|IPbdlg%Pt~CP{+74WBG6Z7nuZMPVo}L|0zoT3Lia3>? z|Js{7eJ-;pz|7J+^Ny>2x0Hb)UFL7BRuPuWBRAi z#5LJyl=gnX66j?`mqzo!rw#X_8y5@PVvWv_+!N{*PLtMW2UOM~DkLsCbv)|qwP0N4 zq9BplU_l1b(X@`snURInzh@Y2zChk@o=QVX#%DZZf2_*>1ahUV0Y)$bhusPp@5>G| zPsN}Nz06W8EYwxKyfR}p43sPKBVYIV7f+-P-EdET*{>>HQQWyY|4!(|?+#WP{`L+z zs+jqT&%_G1*HdB&zU$ut);Su?wRb#SfqRUBH+u^6`Ymd3G!J4}1)51=O$BiHMq4@U zaKWvY*+__&#_YNor&3FxFP?#ME-m?TGPJ+${<@s_Yp3FJ`Nk(GZF^CKxyO=Mnn^v= zY)LekQg$X%S1c|cV!!^VBvqyc-&s6U=6`oM(7ixiJ=;1o?6+so&=qoZOa885^428Y zQ5J+;Wbg`4pKz1aVm?IeE^y{sq1AKy9RFvP-yOJ-?ZnymeIE+fyyDQ`j^vybA@O6^4Q9`u#V25ZSOW}F; z;MlsnDd|p)`y&v_4|hUK$}peJjLY|-X#etoEy7)L*6zrn=pG(VBG#9*OXzV!aN-vU zo-NhE4-A*m+LqBK{Ts~@-t4|LBu|9^_?~KXfcLpEGUVg7;;FIagHIzqCxI1WvVkD? zm8<^K?_4Fd>Di4cV-bowGtlaooz1F}SA+6TFKVbNpW0cNi$3asDePXq;Y^6c( z8|KPE*f!$6IP3cr>5J0Sw}x75LtkTPNedH83s8$lO?Gq9Q)K{=f5{Qe=6ug>SMOTsX&jOW zaPoIur#qRtj?o|+aQ7?P(6)%FQ4(Zb(6Z)3%vAg1upi7p#>WD4|MyOP-sk_kQ}5iM zM#M>r03~6(>i_BNJF^&(=8+4-L&X=I2~|XBs*`7`;-AoVUUc}qPd#lMk{XP;P;mKA zgve3<`%gssCi;g~Wc9EAn8u&~|4IKZNdTk4%sfhz4>6VJQJai6+kuzfEVqdTt+it> z&Fz{^uV+X@(?8ca5AU{^+HC{7rOA9_iLRaw1rz<2_ks_JIQu8_TTEbLZIm3JQs&Vs zaqG^aj z28pI2Vl(C7^0-xRfZ$4^Y4^-ZJ=Nyc9m4)ugkh4olcvfsm*$v|Y)KVwQl+>&ZNLdb$|X`4id&_W#0>YW5T z`94E)q5ZiOG=khiVm?xRUOk`sGT$pFDtsh!WoSD}B~Z44a9@~ny${U${(Q(QP^mvy zb)K*f27DCYqb14bCcFy((;p|azb~#^4N1F~BoIIU2>;g!-IG-Hxkg8zs9|<+t9(E_ z*5+WU(EaTZ-pc)c6lyBx-3Qq-5#-Qv`$o4CF*5Z%>!ItA+OY4$@nM&U;ScmI%f-)T zxJR*gE$|$=3k8vvCaWkklE;oy>dx8wCXRsB?u^Vs8Q@Xm1qUx=UHxtYaX?Swr;Sfl z0hIu2!!QC5?)=;ycH2(_$KCAd8emoPFx=;*uG`%ruUtkYXXH3~74I-tVN%{LagfNL zs%bD&dl#HD#i|KNEnRyc&^H3rU7H#;d|`$&(H={$Q5A7sJO-cW3;-|Crap$Y(lpf> zTG!zpksR<0Z7KwR3NWga&`98^DiHxjwb!-9$oqT|onyYVx+%`eU$B->_=M25HNz4u z)zT^-c@06K&Gsqx;KPXm`?y3D!ju~n+zBOWHIm6v@=v8BPMb2i5^4ux?fKFU!uGi>G z)^=_hY9>7rz@Fe{`lmC)Ti+NtlX=jjPpRE6iH6u=IhBaYFmxujJAiH*3_{zK8?<(E z;%bmRoO(sf=DsrQnge>#-(v8rjM?zIJD^jcli5C}j0_&9FOHwZt7Z6LBr~oJUnwX* zpa+_Mw1i&ZdQR@O7!#eU@C%y7xWhyRgXStpqTR@&oD^vCfOmZZt8;BA4WfRQ#iYQ_ z8-@X`)I^+LC2g!st@{Q;J}X^TdavYgglO+nV`-&^JSCatvf9D-%5ht5-MYS~m~@bA z*q#(HCT+8p8Zh~)WUy_P;k9wV{(TlC600;xwenlE_pd9J)nElrUqs-?SBKW@KP3ck zpKtbd5RaHutn1`*YJ7sAqjfK4Fl^}ndEat-|Hnq#i}WPkU%ItUhOTf_==N2yg0g_! zHQ+|w7}ai`JmsCSc7#{Cy(S`gqj~wgbltIH(O#;3kLFjU*4CwbHg_WoVMI&brp5Wjo7rQ4l2 zxsQQz^aqo>J-Gh_Zd_T8te*ceL6m!u#|t;80^BW`lV1v=9hdP|8&#mYvUin*#TgVM z{)S~O7r>C_DN=KPX?x&$W9CCKu6dy)5-+E-h;0b6`tCC`9)Pj^Xgeg)`?Q+J=Z&Y7$`AX}>-}7l#e9?mjECtV55`3cqY&I1fihDbPUOG77fnXIH)`^ZXHgWMC$2eP0u?aAzZ#*ZIIF%~ zfCj31L-gM%CpC89YkTdrw^golT?}w@ii2il^TzSF`(e=_5bQ-;tLQM~&E_lTHcpEI zHtxDb_%@0jqOq7-u{}h(@{&XnBfWhpBj%NsTTg19r#5kFdvLok_dH_?)uRM|JEvXu zao`#l4@B8uj9KD*5GS!|HPxG@Gp*gX zV0GIGBwX#nEY$zQtF!2FyqxB|v!DFw^h(kOvmoJfg2-Thh`aljS5yK2<)C9wT_(KS z#-DP8-rfDJ=?Jch6Ytr%GJVCZt6%TS;##;UfCB*3)Gr5nJKSp691zh2+_+0SDlx)R zSVBzCgbB>`9Hv|oh~guWbv#p~jxeXeMD^(mMxm;M(~%4AlkmjVHm^~I5!Y3T@FVye zgNyPX?vAD`SDeg3S6cB}2L&}{DcSqq1$(Q}?imtST@_wIlk*UJva`u}VU_pZ^^ou( zcLM=3?MwGxJ7@p)Uh&nM@p=HD3)WR~Qv)?wfwg((xa|>6T~Jfae)(LdCt1`>-Vc(g zaA}A&tnhb}x>07;5rZKuuv2oTab`e%=BwutrtTJM%9%3i^7X+dsDcd0 z+9!&G&dTGCt%%UXQane|I#LJZZrD?8-Ie@lsI#ZVLWqv6(az%6x*O2yqSD!wT7b_X z&W(tTAxj3WvOD5nX)rt5pQSM-ag@2`0hY+mKdU(;OHfCS%^$*v+cI(g0N8)qpCFEe zzwW%Y5HYqrXjG}LXbOem@pB&GML+Rt-}n+c2v5$2e;nR;IG8C}TIZ;S>(4YUU4V|x zB&sh;YH}Nk<|LA)?bQ??CTyiD({IUzJeav-+wg zgAqwx7W3*H-K1xth66R0HXd$R*p-IQwLwE!WsDOW0!g z!vWK3q@C(wqp$a8MWjsoOxK;>$cHU|y3DJ6c8u9c_%OJBwk2qu*Is#&8u__-B?_fP z%#?ZD+Rw&cONky^TV1z2F!rLbGeZbS*dAeIF#Ytbm!Lg13Lq!Q?Fi$78NxPgB3fd~ zY1F;ZOs($l%9WcWozd#IYfvUi{qr~tg(QI&8nInXKDJ%-v8MFK7!nG>oM$)-bB;b_f^-B5#F-q8}-Bd~Ppp5MRd`2X}Kj6JP@oFXe7FQ-l0d*z& zNWI{aH3j`1kj+D1|R zp!@N?m5r_u&sasntXks--1N;@sVjAWn@|w3=?7A(A;jf{C{IiC&q$ZyI-18lpf^P9 z;IGjnWhy4*3WYT9Lk|BKc}QYz;Pi(HFn3_{jj8!hKd_PMvIrcw}u7O6H zyQ{kOWPX*NB3CXEr8DBf$-I1>#^2!GuiyTwbUfr#J-z+|$#Q})rSJZO)gBCfMz{P| zHHp}o2q*i0?LbX%Q}@2ng@SnPUkIGYdBl&^mF)(YM=;tKSHn}tI(~a>P~G4 z8wCD@|JRdBMWo-dOj{Mo=9*`7w@XFl(N-}QGb*#l1;1V?8~o|=Eao>+zP3=DeI1pY zj~3>Bp!|dW(adv7SzN1XG4`d<#qy!2UJH(OtCzsCv~s(u8E=D8!Fqd%)6hwiIXx>w zWJ36Y%)dQHeO@^5&ehqpcARn}i%KeGCs?_Uwl{>OB{BTkt<`|%nRZT%+)eGPCj-Obw+;otXIGnCsU;)j0p4qsa}HTf&o31KRSlPs zuMT!>9y@nrd-ig){N2L1eN}=;or#&RyyR&}kHu`Xj3}(*re^ntM#dXIE0$TbjMJLy z&21X-Ka7Ci)NQn~na7HmyWQM1;z?K~Os)*Ow|NrKmm~Qf0JJlnvAwq$X-eumc z--Cm{0x0`XfhbE~PN7XOM6Pdv6r@n$N!kq>o>?r0O71T4p3V=WhCX4ambp)ScR6-H zp%A!!sn+Av2A|9n&BDg<@Ha=bUkM5z{24bR-)tVwQq9^Bc&1_&t~*xq@8WFB*;iqo zs26Ols|x|I&JO|GVirI=X# zx*m>$NDqR$^eRTpsXb3#%|#)+nt_-YaqS-6>5;4QA?sc4a}{FxCc$fEW7ebzixKv5 zQoTU)T;!nq(OHPVvoSD~*!t~T#NjlWJb6*UIV>|IYl-2eCqu)^ zxA9Z`zHOexR$b36Gp{$R9cvEY>1?6ikYw#Q%Z~R!u!HyTtRUpU>O%vQhH|6dH;S%%LV$2R7U`K?XX$ECz8oxXx!&cY~B& zbQP>qpe6nV1=Thq@|UNn5f}GVB;FpjB=#5byXzxmdOLP9N;B{F59*%mDU%U=EGj}V z7-d&y!37En?V~69p_>;p;{-dcC|9s*bHU*sQnBInqZq%x%owey1#IKPfG*LRd=8pw z`APe2e~GuvV$XMecpgZ$#RHT zxFvNciSw#F`gy70QN3tehwlzpQ$g+Pet@ppki5=p{PDbra7sRGbbZ-7CG;b!FEwmz zkcPdfrz5>Nm)T=trvR;EU|+Vdlu8kj{QkB9g`*m_+Q;-yNT{4Jv@pJ2u;U_b=UyWH z%+?~q{(j<8vmQx#T61P?2jDdF$G&1Tbx-u@lD4K1mX__-Xc@u^e2O_>$o9! zAqN?>hI30M_5opfs4IS&6EVC*IVy-8-zvyE$7%XxYjP9rR}gH^Tj>bIW_?(D11X6< zo-HZo&=r9O&za`JzR+hd@tEQO=q%<2scz{O23lwDl)dP$hzWvzWb|dLOmciTQac7H zs%xgygR{W>uRsTuFc@udqmqi6BS>p&hNAjVFC|Ay|AbC@cf`6YJ)#fRK|QM$eu?UZ zQE0f3B}O^*3LAa~1uAH7-5HZdL?)HN^L>nwzVaaWEU<;-S7KPz=Z{%<Cf;gXvy>(=I`rmW)pXDmZm6ol<44jbOI}f`g|%xWDDDFcJbjMJCC` z$}HPQA7(pdPKAH;QVnf90wFp4#N;*Eb zPQB1B8uE4sYLJabXWrv8N+kg0+|Y|oF?e7yX>g$6A-2bIE@l=hIi#w$y>B)#(rUo* z%FM_~shSf?!_y|@Z5nUZ0i;i%7cE{KTH-{Do~#aiB0VMZ1Q~_$(ESlz>xE~ckfBd` zxY%`ErUv7VWXSs9XqW%jPNSDPBefd4^i%<6MJi<$I{+#3)2<`6E`7jCWuR|={3(?R zePP^vyZ|+LG{cC7aEdb$Q1}%C176!nQXMafm>u--dTUwMo!S|AOi@fT5!8ba-E;1{v!Q-9KOq42YyNrETm_>H!!mQnW&1lru5}#Pjnvl4rRUg~e7d#~p;wB~kOhG5?J|-*ShJDn zCR=0n7W%3`x6r*;(fjTv^fu13!DlboL)B1^801(mn12&eYgtnYO)lS@8-}=Xf)q`S zu9ues^RZy0Uu>vMJ7$2P|H4bj;(Cn`a5~qnzISA6RHO4VHO)u!mHT1oegJ~|YZpVP z|2wUXM81}_Ov&6*>G#K%nOpO%Zk_?3GBL++Ap(Gatzjjoh~ei(w*Yjf~)n2 zSqvO+NQSkYQ463rk}M%|ha7wu7qVaM4j?^Y%!Pz%+9^~Inbi5>i32&^GkUws@AlD&F$J9JiL<5CHygaQt{IG6yMS+~Nlz3M znnlRao2yx^%Br5%tblh@(_wS@qgl7TJF3mQxO=eKdJ;Frtcq(kAzoRD$;^CT(17Y! zKUaZD^+DfK{gemIU&qpmy)1g-WyE_1Q?o0E2g?WZYgidxJ~S1J9JC;=7PzWu`uaB$bns15I}(vb-YJv2Pz3-q<4!b>bEj|F`(Bc~1`(9{*7bu;XGaPaD+9(i zR?nUepH|C^$)Dpxx>`IL0YQGgAYH`vGUb^w}H#l%+U%mi*Tm# z_K3EP{OX?jJ@ zdN7m@KC@fYd{lZWFU zTefi?BVSsII`t^&Dui;EoaHb;O&)4kFTEX_$K@{Fo@RVw-NuPuB9>Hagutz!RRg5r zpfbIKQP2u+EtnL}&gh9h&Azb-?TIz7h|I7^C8ZR>^HqcAkq*(7@TDN=6QZR9fl^wonrJS~> zgFeJSzdaWCFO{3z&Y4Mo+}Clq^VeE#B+YfSslDnK&G)UlzO8ui&7hUn#Y zmM?Sa;T@Iqz#*mOo50lKgj0^oLE=di8$hIFb`T9AZMifPNi*G-J2FVC-_iQ41M)3~ z#&sSvHmPS(W{A|P4EHk*Eu|Z)t8tDjm|UkZO}hlkH$81;7CxY6(lAyM^u7%u$YYr& z8=euqkWp3aGv{&6=vhZ>%hL2Q2>ee5A=ID_o=&(N9BdWJ8rnAbd}E1F2=6!v!w zf#A=Ok#4cj`@2k-ZZo4<&KTeTnx5LRQx8=S;x7A!kRp=6y@0XkMA3rPs9LOX&;E&T z9CS0y-8MXhteI4wL@CdKO$I6bRjsts!Ru7e{nU4{`(9LfpCy+1Q6ur?ePGiX)#`W( zdbLNn=3!y{0E2L!zoSMSYFCw=Olj*&IV{v)%dBO5j!`mPkWtNSdRo9}KCKOkZq~fxK z!NR{U-Nv6Xg~$LDppD3$_16&8Dbgjn=>g~tKtQ=#*cYVZ+bBuhxoM0(AfX}t0MSGE z95xtszgguh)9c*&6v1;k=P0E|hMPe_ztJ01SiW*c$&%wY(4Bif1ibN91yPrIZ}h${ zRxHm8iVXLOF+5WYrB&=J^J(jOu1u{zV?>WIWu%t=8$>gMcaQ>&i|kH}L{`IxBU3QY z!=nZDJ{31_8$vyqc_$dX)yQn)mm_5Nyf-jY?f(*M#NkWouif8~-DaaUZo z>}O@Yye`@g3E;kW3cSDms661W{j$B)K;2of#BN2kntRfg{^(SgvbUj4frU=zx+698 zxKOWHylMyPo}L2|%N(yPG_`2`ih6JbEmq!jotUPcSaE}O4Gfl9flLHR}1S3qmC~DYaEO!8XSn!>+9?C)~$W3r&^wm z7TvK`8fGUm#=2`78bXKttfEuRv1)gUoh?W?DQ#8MAKeaZv^9PJhC#`4Rnx7l8DDYN}Z^V=r5Rpw_gAQoGk zDE(YU)f`(wRnfkiip}58}$OxsZ{OEn#xo8wefvg}_ zQa^u9J!Fl&ASc%`50pz>DAN#QxrCB=3v>hv4>xc}^u!d9?hdp%9VL(E3ZR$x_iyJT zv2&Rvc=K{VIUjs0fnjMh4R*C3{=DwcVBYH&RCaeR-G5->imla3cv0zF@y(w#?Yt@f z>H!0CDT5X>^??jkM{Dm4h-`(o;Q#}73~62)XK7UM737vJI+~C@bbPd;sUFPt_@r%3 zDJZ7gpbeFb4kP>9zo1aLF2*0;5HJG&&xDrduaGP9Ft_Z>f*SBDvvFAWQW2sjx&U79 zua>xeIH_`9;x!=#h0$hWn38)N*L{9sHg}>jr>2L-a3kWR{AYBzCz4rz7t38A+~a|I z%U3yN!sz#k85{{+S9!0d%3bIP07C}ME>ogvlq3ZDMRwm$mv)RWY~&TDrTPTaPy2w7d!mJ!!s z48b><^?3vRn`Yng&9&nN+B_igmdz5QActlA3}ZM0%f(o@->sKTaX82dP|Ct%HYVxm zSj6~XjsWfAdb%N^^x2Sk?OYS~dQJ5UIdv)dt|74iC(S+GxHks(sl7L92D&Sw!9k?U ztXD(BLJcIe-YUvMmWtnBu8D@^@(z`&=tc!=8i0)O7M=HfL>r44q+-3TkAudOjnCsok|R@ z6i)0X#lXV@WlL9eZMchg)ZkgeIjd#$XT=j&`hnLrk}-Y*3(B@`B@mjaXD)d#cSaoQ zP%O+Spm{?k(GI~2_&q1eTK{F8Dl!jIySWqq!2wf9&t=5aq2ae^rj2g`a`NFFH>t$p zbSp+8BXtw)Up}$YY3?|)^Dzn2so$%zI{n=~Cr!;dJvB^iU(B2GIWxM*#19M38d{yP$hiT^YD2S(Vd_y5^} zQp=T`(yH#CF9Qo-WZUxtUL6_!b7u4hvOKCl+}N(=rTFxX%Z 0, "Contribution must be greater than 0"); + (bool success, ) = payable(address(this)).call{value: msg.value}(""); + require(success, "Failed to send funds"); + } + + function withdraw() public payable { + require(msg.sender == owner, "Only owner can withdraw funds"); + payable(msg.sender).transfer(address(this).balance); + } +} diff --git a/08-Crowdfunding dApp on Core/src/CampaignFactory.sol b/08-Crowdfunding dApp on Core/src/CampaignFactory.sol new file mode 100644 index 00000000..cd2a7dda --- /dev/null +++ b/08-Crowdfunding dApp on Core/src/CampaignFactory.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import "./Campaign.sol"; + +contract CampaignFactory { + address[] public campaigns; + + function createCampaign( + string memory title, + string memory description + ) public { + Campaign newCampaign = new Campaign(title, description, msg.sender); + campaigns.push(address(newCampaign)); + } + + function getCampaigns() public view returns (address[] memory) { + return campaigns; + } +} diff --git a/crowdfunding-dapp/src/Counter.sol b/08-Crowdfunding dApp on Core/src/Counter.sol similarity index 100% rename from crowdfunding-dapp/src/Counter.sol rename to 08-Crowdfunding dApp on Core/src/Counter.sol diff --git a/08-Crowdfunding dApp on Core/test/CampaignFactory.t.sol b/08-Crowdfunding dApp on Core/test/CampaignFactory.t.sol new file mode 100644 index 00000000..7cfdbe8b --- /dev/null +++ b/08-Crowdfunding dApp on Core/test/CampaignFactory.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import {Test, console} from "forge-std/Test.sol"; +import {CampaignFactory} from "../src/CampaignFactory.sol"; +contract CampaignFactoryTest is Test { + CampaignFactory public campaignFactory; + + function setUp() public { + campaignFactory = new CampaignFactory(); + } + + function test_CreateCampaign() public { + campaignFactory.createCampaign( + "Test Campaign", + "This is a test campaign" + ); + } + + function test_GetCampaigns() public { + campaignFactory.createCampaign( + "Test Campaign", + "This is a test campaign" + ); + campaignFactory.createCampaign( + "Test Campaign", + "This is a test campaign" + ); + + address[] memory campaigns = campaignFactory.getCampaigns(); + assertEq(campaigns.length, 2); + assertEq(campaigns[0], address(campaigns[0])); + assertEq(campaigns[1], address(campaigns[1])); + } +} diff --git a/crowdfunding-dapp/README.md b/crowdfunding-dapp/README.md deleted file mode 100644 index 9265b455..00000000 --- a/crowdfunding-dapp/README.md +++ /dev/null @@ -1,66 +0,0 @@ -## Foundry - -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** - -Foundry consists of: - -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. - -## Documentation - -https://book.getfoundry.sh/ - -## Usage - -### Build - -```shell -$ forge build -``` - -### Test - -```shell -$ forge test -``` - -### Format - -```shell -$ forge fmt -``` - -### Gas Snapshots - -```shell -$ forge snapshot -``` - -### Anvil - -```shell -$ anvil -``` - -### Deploy - -```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key -``` - -### Cast - -```shell -$ cast -``` - -### Help - -```shell -$ forge --help -$ anvil --help -$ cast --help -``` diff --git a/crowdfunding-dapp/script/Counter.s.sol b/crowdfunding-dapp/script/Counter.s.sol deleted file mode 100644 index cdc1fe9a..00000000 --- a/crowdfunding-dapp/script/Counter.s.sol +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Script, console} from "forge-std/Script.sol"; -import {Counter} from "../src/Counter.sol"; - -contract CounterScript is Script { - Counter public counter; - - function setUp() public {} - - function run() public { - vm.startBroadcast(); - - counter = new Counter(); - - vm.stopBroadcast(); - } -} diff --git a/crowdfunding-dapp/test/Counter.t.sol b/crowdfunding-dapp/test/Counter.t.sol deleted file mode 100644 index 54b724f7..00000000 --- a/crowdfunding-dapp/test/Counter.t.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Test, console} from "forge-std/Test.sol"; -import {Counter} from "../src/Counter.sol"; - -contract CounterTest is Test { - Counter public counter; - - function setUp() public { - counter = new Counter(); - counter.setNumber(0); - } - - function test_Increment() public { - counter.increment(); - assertEq(counter.number(), 1); - } - - function testFuzz_SetNumber(uint256 x) public { - counter.setNumber(x); - assertEq(counter.number(), x); - } -} From 95ec736c9c2e0dd837e731784d951cf60556017c Mon Sep 17 00:00:00 2001 From: GM-11 Date: Mon, 16 Sep 2024 06:43:07 +0000 Subject: [PATCH 4/4] added tutorial --- .gitmodules | 3 -- .../.github/workflows/test.yml | 45 ------------------- 08-Crowdfunding dApp on Core/.gitignore | 14 ------ .../cache/solidity-files-cache.json | 1 + 08-Crowdfunding dApp on Core/deploy.sh | 1 - .../frontend/eslint.config.js | 28 ++++++++++++ .../out/Base.sol/CommonBase.json | 1 + .../out/Base.sol/ScriptBase.json | 1 + .../out/Base.sol/TestBase.json | 1 + .../out/Campaign.sol/Campaign.json | 1 + .../CampaignFactory.sol/CampaignFactory.json | 1 + .../CampaignFactoryTest.json | 1 + .../out/Counter.sol/Counter.json | 1 + .../out/Counter.t.sol/CounterTest.json | 1 + .../out/IERC165.sol/IERC165.json | 1 + .../out/IERC20.sol/IERC20.json | 1 + .../out/IERC721.sol/IERC721.json | 1 + .../out/IERC721.sol/IERC721Enumerable.json | 1 + .../out/IERC721.sol/IERC721Metadata.json | 1 + .../out/IERC721.sol/IERC721TokenReceiver.json | 1 + .../out/IMulticall3.sol/IMulticall3.json | 1 + .../out/MockERC20.sol/MockERC20.json | 1 + .../out/MockERC721.sol/MockERC721.json | 1 + .../out/StdAssertions.sol/StdAssertions.json | 1 + .../out/StdChains.sol/StdChains.json | 1 + .../out/StdCheats.sol/StdCheats.json | 1 + .../out/StdCheats.sol/StdCheatsSafe.json | 1 + .../out/StdError.sol/stdError.json | 1 + .../out/StdInvariant.sol/StdInvariant.json | 1 + .../out/StdJson.sol/stdJson.json | 1 + .../out/StdMath.sol/stdMath.json | 1 + .../out/StdStorage.sol/stdStorage.json | 1 + .../out/StdStorage.sol/stdStorageSafe.json | 1 + .../out/StdStyle.sol/StdStyle.json | 1 + .../out/StdToml.sol/stdToml.json | 1 + .../out/StdUtils.sol/StdUtils.json | 1 + .../out/Test.sol/Test.json | 1 + .../out/Vm.sol/Vm.json | 1 + .../out/Vm.sol/VmSafe.json | 1 + .../9eb4378b0c18b678d852785d9c681a90.json | 1 + .../out/console.sol/console.json | 1 + .../out/safeconsole.sol/safeconsole.json | 1 + .../test/Counter.t.sol | 24 ++++++++++ 43 files changed, 89 insertions(+), 63 deletions(-) delete mode 100644 .gitmodules delete mode 100644 08-Crowdfunding dApp on Core/.github/workflows/test.yml delete mode 100644 08-Crowdfunding dApp on Core/.gitignore create mode 100644 08-Crowdfunding dApp on Core/cache/solidity-files-cache.json delete mode 100755 08-Crowdfunding dApp on Core/deploy.sh create mode 100644 08-Crowdfunding dApp on Core/frontend/eslint.config.js create mode 100644 08-Crowdfunding dApp on Core/out/Base.sol/CommonBase.json create mode 100644 08-Crowdfunding dApp on Core/out/Base.sol/ScriptBase.json create mode 100644 08-Crowdfunding dApp on Core/out/Base.sol/TestBase.json create mode 100644 08-Crowdfunding dApp on Core/out/Campaign.sol/Campaign.json create mode 100644 08-Crowdfunding dApp on Core/out/CampaignFactory.sol/CampaignFactory.json create mode 100644 08-Crowdfunding dApp on Core/out/CampaignFactory.t.sol/CampaignFactoryTest.json create mode 100644 08-Crowdfunding dApp on Core/out/Counter.sol/Counter.json create mode 100644 08-Crowdfunding dApp on Core/out/Counter.t.sol/CounterTest.json create mode 100644 08-Crowdfunding dApp on Core/out/IERC165.sol/IERC165.json create mode 100644 08-Crowdfunding dApp on Core/out/IERC20.sol/IERC20.json create mode 100644 08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721.json create mode 100644 08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Enumerable.json create mode 100644 08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Metadata.json create mode 100644 08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721TokenReceiver.json create mode 100644 08-Crowdfunding dApp on Core/out/IMulticall3.sol/IMulticall3.json create mode 100644 08-Crowdfunding dApp on Core/out/MockERC20.sol/MockERC20.json create mode 100644 08-Crowdfunding dApp on Core/out/MockERC721.sol/MockERC721.json create mode 100644 08-Crowdfunding dApp on Core/out/StdAssertions.sol/StdAssertions.json create mode 100644 08-Crowdfunding dApp on Core/out/StdChains.sol/StdChains.json create mode 100644 08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheats.json create mode 100644 08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheatsSafe.json create mode 100644 08-Crowdfunding dApp on Core/out/StdError.sol/stdError.json create mode 100644 08-Crowdfunding dApp on Core/out/StdInvariant.sol/StdInvariant.json create mode 100644 08-Crowdfunding dApp on Core/out/StdJson.sol/stdJson.json create mode 100644 08-Crowdfunding dApp on Core/out/StdMath.sol/stdMath.json create mode 100644 08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorage.json create mode 100644 08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorageSafe.json create mode 100644 08-Crowdfunding dApp on Core/out/StdStyle.sol/StdStyle.json create mode 100644 08-Crowdfunding dApp on Core/out/StdToml.sol/stdToml.json create mode 100644 08-Crowdfunding dApp on Core/out/StdUtils.sol/StdUtils.json create mode 100644 08-Crowdfunding dApp on Core/out/Test.sol/Test.json create mode 100644 08-Crowdfunding dApp on Core/out/Vm.sol/Vm.json create mode 100644 08-Crowdfunding dApp on Core/out/Vm.sol/VmSafe.json create mode 100644 08-Crowdfunding dApp on Core/out/build-info/9eb4378b0c18b678d852785d9c681a90.json create mode 100644 08-Crowdfunding dApp on Core/out/console.sol/console.json create mode 100644 08-Crowdfunding dApp on Core/out/safeconsole.sol/safeconsole.json create mode 100644 08-Crowdfunding dApp on Core/test/Counter.t.sol diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 936ebb4f..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "crowdfunding-dapp/lib/forge-std"] - path = crowdfunding-dapp/lib/forge-std - url = https://github.com/foundry-rs/forge-std diff --git a/08-Crowdfunding dApp on Core/.github/workflows/test.yml b/08-Crowdfunding dApp on Core/.github/workflows/test.yml deleted file mode 100644 index 762a2966..00000000 --- a/08-Crowdfunding dApp on Core/.github/workflows/test.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: CI - -on: - push: - pull_request: - workflow_dispatch: - -env: - FOUNDRY_PROFILE: ci - -jobs: - check: - strategy: - fail-fast: true - - name: Foundry project - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Show Forge version - run: | - forge --version - - - name: Run Forge fmt - run: | - forge fmt --check - id: fmt - - - name: Run Forge build - run: | - forge build --sizes - id: build - - - name: Run Forge tests - run: | - forge test -vvv - id: test diff --git a/08-Crowdfunding dApp on Core/.gitignore b/08-Crowdfunding dApp on Core/.gitignore deleted file mode 100644 index 85198aaa..00000000 --- a/08-Crowdfunding dApp on Core/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# Compiler files -cache/ -out/ - -# Ignores development broadcast logs -!/broadcast -/broadcast/*/31337/ -/broadcast/**/dry-run/ - -# Docs -docs/ - -# Dotenv file -.env diff --git a/08-Crowdfunding dApp on Core/cache/solidity-files-cache.json b/08-Crowdfunding dApp on Core/cache/solidity-files-cache.json new file mode 100644 index 00000000..98dc8e7e --- /dev/null +++ b/08-Crowdfunding dApp on Core/cache/solidity-files-cache.json @@ -0,0 +1 @@ +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1726468500289,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.26":{"path":"Base.sol/CommonBase.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"ScriptBase":{"0.8.26":{"path":"Base.sol/ScriptBase.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"TestBase":{"0.8.26":{"path":"Base.sol/TestBase.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1726468500289,"contentHash":"25b77f9806b64d497b8a46aeb8e5f6f0","sourceName":"lib/forge-std/src/StdAssertions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.26":{"path":"StdAssertions.sol/StdAssertions.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1726468500289,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.26":{"path":"StdChains.sol/StdChains.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1726468500289,"contentHash":"5f3f5d724fbd352ac5c76b011337b383","sourceName":"lib/forge-std/src/StdCheats.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.26":{"path":"StdCheats.sol/StdCheats.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"StdCheatsSafe":{"0.8.26":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1726468500289,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.26":{"path":"StdError.sol/stdError.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1726468500289,"contentHash":"f16837d0e7cb829544ae1f1319ea7643","sourceName":"lib/forge-std/src/StdInvariant.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.26":{"path":"StdInvariant.sol/StdInvariant.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1726468500289,"contentHash":"3339192c616789604138e2d8206c0702","sourceName":"lib/forge-std/src/StdJson.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.26":{"path":"StdJson.sol/stdJson.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1726468500289,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.26":{"path":"StdMath.sol/stdMath.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1726468500289,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.26":{"path":"StdStorage.sol/stdStorage.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"stdStorageSafe":{"0.8.26":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1726468500289,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.26":{"path":"StdStyle.sol/StdStyle.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1726468500289,"contentHash":"2bb543c13f276e5db311aa3b81ed1651","sourceName":"lib/forge-std/src/StdToml.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.26":{"path":"StdToml.sol/stdToml.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1726468500289,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.26":{"path":"StdUtils.sol/StdUtils.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1726468500289,"contentHash":"b6f15605355fc8c421fe42a90f94bf32","sourceName":"lib/forge-std/src/Test.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.26":{"path":"Test.sol/Test.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1726468500289,"contentHash":"4263c0ed428848f54d6e6314413e3692","sourceName":"lib/forge-std/src/Vm.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.26":{"path":"Vm.sol/Vm.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"VmSafe":{"0.8.26":{"path":"Vm.sol/VmSafe.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1726468500289,"contentHash":"19bc22856c14b56e4e55ab19c7a27c87","sourceName":"lib/forge-std/src/console.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.26":{"path":"console.sol/console.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1726468500289,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1726468500289,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.26":{"path":"IERC165.sol/IERC165.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1726468500289,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.26":{"path":"IERC20.sol/IERC20.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1726468500289,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.26":{"path":"IERC721.sol/IERC721.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"IERC721Enumerable":{"0.8.26":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"IERC721Metadata":{"0.8.26":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}},"IERC721TokenReceiver":{"0.8.26":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1726468500289,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.26":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1726468500289,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.26":{"path":"MockERC20.sol/MockERC20.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1726468500289,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.26":{"path":"MockERC721.sol/MockERC721.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1726468500289,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.26":{"path":"safeconsole.sol/safeconsole.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"src/Campaign.sol":{"lastModificationDate":1726468524769,"contentHash":"134e6cfff6a1ac307045e477c6e0ceae","sourceName":"src/Campaign.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.26","artifacts":{"Campaign":{"0.8.26":{"path":"Campaign.sol/Campaign.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"src/CampaignFactory.sol":{"lastModificationDate":1726468524809,"contentHash":"20ba5834f5943e590cf467e520cc7583","sourceName":"src/CampaignFactory.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["src/Campaign.sol"],"versionRequirement":"^0.8.26","artifacts":{"CampaignFactory":{"0.8.26":{"path":"CampaignFactory.sol/CampaignFactory.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"src/Counter.sol":{"lastModificationDate":1726468498768,"contentHash":"ae6c800a2b4c57768024d6e9423d39e8","sourceName":"src/Counter.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.13","artifacts":{"Counter":{"0.8.26":{"path":"Counter.sol/Counter.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"test/CampaignFactory.t.sol":{"lastModificationDate":1726468548238,"contentHash":"0e7e0f96e9fe4ebb4f5c1b8d9fa1a4ac","sourceName":"test/CampaignFactory.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/Campaign.sol","src/CampaignFactory.sol"],"versionRequirement":"^0.8.26","artifacts":{"CampaignFactoryTest":{"0.8.26":{"path":"CampaignFactory.t.sol/CampaignFactoryTest.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true},"test/Counter.t.sol":{"lastModificationDate":1726468498768,"contentHash":"9d959b237381565c33e0fda71b690f32","sourceName":"test/Counter.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/Counter.sol"],"versionRequirement":"^0.8.13","artifacts":{"CounterTest":{"0.8.26":{"path":"Counter.t.sol/CounterTest.json","build_id":"9eb4378b0c18b678d852785d9c681a90"}}},"seenByCompiler":true}},"builds":["9eb4378b0c18b678d852785d9c681a90"]} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/deploy.sh b/08-Crowdfunding dApp on Core/deploy.sh deleted file mode 100755 index 07015fd1..00000000 --- a/08-Crowdfunding dApp on Core/deploy.sh +++ /dev/null @@ -1 +0,0 @@ -forge create --rpc-url https://rpc.test.btcs.network --legacy ./src/CampaignFactory.sol:CampaignFactory --private-key 7f3ed3d4b4d6dca6127fca65f465c94cd541938faf126d6c481fe9b8800e502b \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/frontend/eslint.config.js b/08-Crowdfunding dApp on Core/frontend/eslint.config.js new file mode 100644 index 00000000..092408a9 --- /dev/null +++ b/08-Crowdfunding dApp on Core/frontend/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/08-Crowdfunding dApp on Core/out/Base.sol/CommonBase.json b/08-Crowdfunding dApp on Core/out/Base.sol/CommonBase.json new file mode 100644 index 00000000..bb261565 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Base.sol/CommonBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Base.sol/ScriptBase.json b/08-Crowdfunding dApp on Core/out/Base.sol/ScriptBase.json new file mode 100644 index 00000000..6b002e0d --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Base.sol/ScriptBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Base.sol/TestBase.json b/08-Crowdfunding dApp on Core/out/Base.sol/TestBase.json new file mode 100644 index 00000000..9972ae5f --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Base.sol/TestBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"TestBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Campaign.sol/Campaign.json b/08-Crowdfunding dApp on Core/out/Campaign.sol/Campaign.json new file mode 100644 index 00000000..d3dc19c6 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Campaign.sol/Campaign.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_title","type":"string","internalType":"string"},{"name":"_description","type":"string","internalType":"string"},{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"contribute","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"description","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"title","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"payable"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506040516106b13803806106b183398101604081905261002f91610125565b600080546001600160a01b0319166001600160a01b03831617905560016100568482610239565b5060026100638382610239565b505050506102f7565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009357600080fd5b81516001600160401b038111156100ac576100ac61006c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100da576100da61006c565b6040528181528382016020018510156100f257600080fd5b60005b82811015610111576020818601810151838301820152016100f5565b506000918101602001919091529392505050565b60008060006060848603121561013a57600080fd5b83516001600160401b0381111561015057600080fd5b61015c86828701610082565b602086015190945090506001600160401b0381111561017a57600080fd5b61018686828701610082565b604086015190935090506001600160a01b03811681146101a557600080fd5b809150509250925092565b600181811c908216806101c457607f821691505b6020821081036101e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023457806000526020600020601f840160051c810160208510156102115750805b601f840160051c820191505b81811015610231576000815560010161021d565b50505b505050565b81516001600160401b038111156102525761025261006c565b6102668161026084546101b0565b846101ea565b6020601f82116001811461029a57600083156102825750848201515b600019600385901b1c1916600184901b178455610231565b600084815260208120601f198516915b828110156102ca57878501518255602094850194600190920191016102aa565b50848210156102e85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ab806103066000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100595780637284e416146100845780638da5cb5b14610099578063d7bb99ba146100d1575b600080fd5b6100576100d9565b005b34801561006557600080fd5b5061006e610167565b60405161007b91906102ed565b60405180910390f35b34801561009057600080fd5b5061006e6101f5565b3480156100a557600080fd5b506000546100b9906001600160a01b031681565b6040516001600160a01b03909116815260200161007b565b610057610202565b6000546001600160a01b031633146101385760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610164573d6000803e3d6000fd5b50565b600180546101749061033b565b80601f01602080910402602001604051908101604052809291908181526020018280546101a09061033b565b80156101ed5780601f106101c2576101008083540402835291602001916101ed565b820191906000526020600020905b8154815290600101906020018083116101d057829003601f168201915b505050505081565b600280546101749061033b565b6000341161025e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161012f565b604051600090309034908381818185875af1925050503d80600081146102a0576040519150601f19603f3d011682016040523d82523d6000602084013e6102a5565b606091505b50509050806101645760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161012f565b602081526000825180602084015260005b8181101561031b57602081860181015160408684010152016102fe565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061034f57607f821691505b60208210810361036f57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a0e30cf54005bdfefebd38ebf50097a4f685d7c5233cfbf61f49bef10dcfb1a264736f6c634300081a0033","sourceMap":"58:707:23:-:0;;;165:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;253:5;:14;;-1:-1:-1;;;;;;253:14:23;-1:-1:-1;;;;;253:14:23;;;;;-1:-1:-1;277:14:23;285:6;-1:-1:-1;277:14:23;:::i;:::-;-1:-1:-1;301:11:23;:26;315:12;301:11;:26;:::i;:::-;;165:169;;;58:707;;14:127:28;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:28;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:28;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:28;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:28;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:28;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:28:o;985:724::-;1093:6;1101;1109;1162:2;1150:9;1141:7;1137:23;1133:32;1130:52;;;1178:1;1175;1168:12;1130:52;1205:16;;-1:-1:-1;;;;;1233:30:28;;1230:50;;;1276:1;1273;1266:12;1230:50;1299:61;1352:7;1343:6;1332:9;1328:22;1299:61;:::i;:::-;1406:2;1391:18;;1385:25;1289:71;;-1:-1:-1;1385:25:28;-1:-1:-1;;;;;;1422:32:28;;1419:52;;;1467:1;1464;1457:12;1419:52;1490:63;1545:7;1534:8;1523:9;1519:24;1490:63;:::i;:::-;1596:2;1581:18;;1575:25;1480:73;;-1:-1:-1;1575:25:28;-1:-1:-1;;;;;;1629:31:28;;1619:42;;1609:70;;1675:1;1672;1665:12;1609:70;1698:5;1688:15;;;985:724;;;;;:::o;1714:380::-;1793:1;1789:12;;;;1836;;;1857:61;;1911:4;1903:6;1899:17;1889:27;;1857:61;1964:2;1956:6;1953:14;1933:18;1930:38;1927:161;;2010:10;2005:3;2001:20;1998:1;1991:31;2045:4;2042:1;2035:15;2073:4;2070:1;2063:15;1927:161;;1714:380;;;:::o;2225:518::-;2327:2;2322:3;2319:11;2316:421;;;2363:5;2360:1;2353:16;2407:4;2404:1;2394:18;2477:2;2465:10;2461:19;2458:1;2454:27;2448:4;2444:38;2513:4;2501:10;2498:20;2495:47;;;-1:-1:-1;2536:4:28;2495:47;2591:2;2586:3;2582:12;2579:1;2575:20;2569:4;2565:31;2555:41;;2646:81;2664:2;2657:5;2654:13;2646:81;;;2723:1;2709:16;;2690:1;2679:13;2646:81;;;2650:3;;2316:421;2225:518;;;:::o;2919:1299::-;3039:10;;-1:-1:-1;;;;;3061:30:28;;3058:56;;;3094:18;;:::i;:::-;3123:97;3213:6;3173:38;3205:4;3199:11;3173:38;:::i;:::-;3167:4;3123:97;:::i;:::-;3269:4;3300:2;3289:14;;3317:1;3312:649;;;;4005:1;4022:6;4019:89;;;-1:-1:-1;4074:19:28;;;4068:26;4019:89;-1:-1:-1;;2876:1:28;2872:11;;;2868:24;2864:29;2854:40;2900:1;2896:11;;;2851:57;4121:81;;3282:930;;3312:649;2172:1;2165:14;;;2209:4;2196:18;;-1:-1:-1;;3348:20:28;;;3466:222;3480:7;3477:1;3474:14;3466:222;;;3562:19;;;3556:26;3541:42;;3669:4;3654:20;;;;3622:1;3610:14;;;;3496:12;3466:222;;;3470:3;3716:6;3707:7;3704:19;3701:201;;;3777:19;;;3771:26;-1:-1:-1;;3860:1:28;3856:14;;;3872:3;3852:24;3848:37;3844:42;3829:58;3814:74;;3701:201;-1:-1:-1;;;;3948:1:28;3932:14;;;3928:22;3915:36;;-1:-1:-1;2919:1299:28:o;:::-;58:707:23;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100595780637284e416146100845780638da5cb5b14610099578063d7bb99ba146100d1575b600080fd5b6100576100d9565b005b34801561006557600080fd5b5061006e610167565b60405161007b91906102ed565b60405180910390f35b34801561009057600080fd5b5061006e6101f5565b3480156100a557600080fd5b506000546100b9906001600160a01b031681565b6040516001600160a01b03909116815260200161007b565b610057610202565b6000546001600160a01b031633146101385760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610164573d6000803e3d6000fd5b50565b600180546101749061033b565b80601f01602080910402602001604051908101604052809291908181526020018280546101a09061033b565b80156101ed5780601f106101c2576101008083540402835291602001916101ed565b820191906000526020600020905b8154815290600101906020018083116101d057829003601f168201915b505050505081565b600280546101749061033b565b6000341161025e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161012f565b604051600090309034908381818185875af1925050503d80600081146102a0576040519150601f19603f3d011682016040523d82523d6000602084013e6102a5565b606091505b50509050806101645760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161012f565b602081526000825180602084015260005b8181101561031b57602081860181015160408684010152016102fe565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061034f57607f821691505b60208210810361036f57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a0e30cf54005bdfefebd38ebf50097a4f685d7c5233cfbf61f49bef10dcfb1a264736f6c634300081a0033","sourceMap":"58:707:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;589:174;;;:::i;:::-;;108:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;133:25;;;;;;;;;;;;;:::i;82:20::-;;;;;;;;;;-1:-1:-1;82:20:23;;;;-1:-1:-1;;;;;82:20:23;;;;;;-1:-1:-1;;;;;710:32:28;;;692:51;;680:2;665:18;82:20:23;546:203:28;340:243:23;;;:::i;589:174::-;656:5;;-1:-1:-1;;;;;656:5:23;642:10;:19;634:61;;;;-1:-1:-1;;;634:61:23;;956:2:28;634:61:23;;;938:21:28;995:2;975:18;;;968:30;1034:31;1014:18;;;1007:59;1083:18;;634:61:23;;;;;;;;;705:51;;713:10;;734:21;705:51;;;;;;;;;734:21;713:10;705:51;;;;;;;;;;;;;;;;;;;;;589:174::o;108:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;133:25::-;;;;;;;:::i;340:243::-;407:1;395:9;:13;387:61;;;;-1:-1:-1;;;387:61:23;;1699:2:28;387:61:23;;;1681:21:28;1738:2;1718:18;;;1711:30;1777:34;1757:18;;;1750:62;-1:-1:-1;;;1828:18:28;;;1821:33;1871:19;;387:61:23;1497:399:28;387:61:23;477:49;;459:12;;493:4;;512:9;;459:12;477:49;459:12;477:49;512:9;493:4;477:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:68;;;544:7;536:40;;;;-1:-1:-1;;;536:40:23;;2313:2:28;536:40:23;;;2295:21:28;2352:2;2332:18;;;2325:30;-1:-1:-1;;;2371:18:28;;;2364:50;2431:18;;536:40:23;2111:344:28;14:527;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;1112:380::-;1191:1;1187:12;;;;1234;;;1255:61;;1309:4;1301:6;1297:17;1287:27;;1255:61;1362:2;1354:6;1351:14;1331:18;1328:38;1325:161;;1408:10;1403:3;1399:20;1396:1;1389:31;1443:4;1440:1;1433:15;1471:4;1468:1;1461:15;1325:161;;1112:380;;;:::o","linkReferences":{}},"methodIdentifiers":{"contribute()":"d7bb99ba","description()":"7284e416","owner()":"8da5cb5b","title()":"4a79d50c","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_description\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"contribute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"title\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Campaign.sol\":\"Campaign\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/Campaign.sol\":{\"keccak256\":\"0xe133e416e03ea08cb276a98a9aaf97704f03ab916152753ea89ba51778109487\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31a25bd2dafb6a86585da119a81d8580764ea2e1a4e3be94aae8925f6dfc8e86\",\"dweb:/ipfs/QmUz6VsHiiDiDUJuqmUamJ1ydxHDfwRkUH2zVoJ4F6ARjU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"string","name":"_description","type":"string"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"function","name":"contribute"},{"inputs":[],"stateMutability":"view","type":"function","name":"description","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"title","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Campaign.sol":"Campaign"},"evmVersion":"paris","libraries":{}},"sources":{"src/Campaign.sol":{"keccak256":"0xe133e416e03ea08cb276a98a9aaf97704f03ab916152753ea89ba51778109487","urls":["bzz-raw://31a25bd2dafb6a86585da119a81d8580764ea2e1a4e3be94aae8925f6dfc8e86","dweb:/ipfs/QmUz6VsHiiDiDUJuqmUamJ1ydxHDfwRkUH2zVoJ4F6ARjU"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/CampaignFactory.sol/CampaignFactory.json b/08-Crowdfunding dApp on Core/out/CampaignFactory.sol/CampaignFactory.json new file mode 100644 index 00000000..a563b8b9 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/CampaignFactory.sol/CampaignFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"campaigns","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"createCampaign","inputs":[{"name":"title","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCampaigns","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50610aa38061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063141961bc14610046578063a6b0363314610076578063fce3f6ac1461008b575b600080fd5b6100596100543660046101c5565b6100a0565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100ca565b60405161006d91906101de565b61009e6100993660046102cf565b61012c565b005b600081815481106100b057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600080548060200260200160405190810160405280929190818152602001828054801561012257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610104575b5050505050905090565b600082823360405161013d906101b8565b6101499392919061037e565b604051809103906000f080158015610165573d6000803e3d6000fd5b50600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b0392909216919091179055505050565b6106b1806103bd83390190565b6000602082840312156101d757600080fd5b5035919050565b602080825282518282018190526000918401906040840190835b8181101561021f5783516001600160a01b03168352602093840193909201916001016101f8565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261025157600080fd5b813567ffffffffffffffff81111561026b5761026b61022a565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561029a5761029a61022a565b6040528181528382016020018510156102b257600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156102e257600080fd5b823567ffffffffffffffff8111156102f957600080fd5b61030585828601610240565b925050602083013567ffffffffffffffff81111561032257600080fd5b61032e85828601610240565b9150509250929050565b6000815180845260005b8181101561035e57602081850181015186830182015201610342565b506000602082860101526020601f19601f83011685010191505092915050565b6060815260006103916060830186610338565b82810360208401526103a38186610338565b91505060018060a01b038316604083015294935050505056fe608060405234801561001057600080fd5b506040516106b13803806106b183398101604081905261002f91610125565b600080546001600160a01b0319166001600160a01b03831617905560016100568482610239565b5060026100638382610239565b505050506102f7565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009357600080fd5b81516001600160401b038111156100ac576100ac61006c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100da576100da61006c565b6040528181528382016020018510156100f257600080fd5b60005b82811015610111576020818601810151838301820152016100f5565b506000918101602001919091529392505050565b60008060006060848603121561013a57600080fd5b83516001600160401b0381111561015057600080fd5b61015c86828701610082565b602086015190945090506001600160401b0381111561017a57600080fd5b61018686828701610082565b604086015190935090506001600160a01b03811681146101a557600080fd5b809150509250925092565b600181811c908216806101c457607f821691505b6020821081036101e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023457806000526020600020601f840160051c810160208510156102115750805b601f840160051c820191505b81811015610231576000815560010161021d565b50505b505050565b81516001600160401b038111156102525761025261006c565b6102668161026084546101b0565b846101ea565b6020601f82116001811461029a57600083156102825750848201515b600019600385901b1c1916600184901b178455610231565b600084815260208120601f198516915b828110156102ca57878501518255602094850194600190920191016102aa565b50848210156102e85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ab806103066000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100595780637284e416146100845780638da5cb5b14610099578063d7bb99ba146100d1575b600080fd5b6100576100d9565b005b34801561006557600080fd5b5061006e610167565b60405161007b91906102ed565b60405180910390f35b34801561009057600080fd5b5061006e6101f5565b3480156100a557600080fd5b506000546100b9906001600160a01b031681565b6040516001600160a01b03909116815260200161007b565b610057610202565b6000546001600160a01b031633146101385760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610164573d6000803e3d6000fd5b50565b600180546101749061033b565b80601f01602080910402602001604051908101604052809291908181526020018280546101a09061033b565b80156101ed5780601f106101c2576101008083540402835291602001916101ed565b820191906000526020600020905b8154815290600101906020018083116101d057829003601f168201915b505050505081565b600280546101749061033b565b6000341161025e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161012f565b604051600090309034908381818185875af1925050503d80600081146102a0576040519150601f19603f3d011682016040523d82523d6000602084013e6102a5565b606091505b50509050806101645760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161012f565b602081526000825180602084015260005b8181101561031b57602081860181015160408684010152016102fe565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061034f57607f821691505b60208210810361036f57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a0e30cf54005bdfefebd38ebf50097a4f685d7c5233cfbf61f49bef10dcfb1a264736f6c634300081a0033a26469706673582212200c2e13e9e9aa55dce4afa688ad22ee11bed4c851f3d4148188c1ff1f96e33b1b64736f6c634300081a0033","sourceMap":"84:399:24:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063141961bc14610046578063a6b0363314610076578063fce3f6ac1461008b575b600080fd5b6100596100543660046101c5565b6100a0565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100ca565b60405161006d91906101de565b61009e6100993660046102cf565b61012c565b005b600081815481106100b057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600080548060200260200160405190810160405280929190818152602001828054801561012257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610104575b5050505050905090565b600082823360405161013d906101b8565b6101499392919061037e565b604051809103906000f080158015610165573d6000803e3d6000fd5b50600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b0392909216919091179055505050565b6106b1806103bd83390190565b6000602082840312156101d757600080fd5b5035919050565b602080825282518282018190526000918401906040840190835b8181101561021f5783516001600160a01b03168352602093840193909201916001016101f8565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261025157600080fd5b813567ffffffffffffffff81111561026b5761026b61022a565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561029a5761029a61022a565b6040528181528382016020018510156102b257600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156102e257600080fd5b823567ffffffffffffffff8111156102f957600080fd5b61030585828601610240565b925050602083013567ffffffffffffffff81111561032257600080fd5b61032e85828601610240565b9150509250929050565b6000815180845260005b8181101561035e57602081850181015186830182015201610342565b506000602082860101526020601f19601f83011685010191505092915050565b6060815260006103916060830186610338565b82810360208401526103a38186610338565b91505060018060a01b038316604083015294935050505056fe608060405234801561001057600080fd5b506040516106b13803806106b183398101604081905261002f91610125565b600080546001600160a01b0319166001600160a01b03831617905560016100568482610239565b5060026100638382610239565b505050506102f7565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009357600080fd5b81516001600160401b038111156100ac576100ac61006c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100da576100da61006c565b6040528181528382016020018510156100f257600080fd5b60005b82811015610111576020818601810151838301820152016100f5565b506000918101602001919091529392505050565b60008060006060848603121561013a57600080fd5b83516001600160401b0381111561015057600080fd5b61015c86828701610082565b602086015190945090506001600160401b0381111561017a57600080fd5b61018686828701610082565b604086015190935090506001600160a01b03811681146101a557600080fd5b809150509250925092565b600181811c908216806101c457607f821691505b6020821081036101e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023457806000526020600020601f840160051c810160208510156102115750805b601f840160051c820191505b81811015610231576000815560010161021d565b50505b505050565b81516001600160401b038111156102525761025261006c565b6102668161026084546101b0565b846101ea565b6020601f82116001811461029a57600083156102825750848201515b600019600385901b1c1916600184901b178455610231565b600084815260208120601f198516915b828110156102ca57878501518255602094850194600190920191016102aa565b50848210156102e85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ab806103066000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100595780637284e416146100845780638da5cb5b14610099578063d7bb99ba146100d1575b600080fd5b6100576100d9565b005b34801561006557600080fd5b5061006e610167565b60405161007b91906102ed565b60405180910390f35b34801561009057600080fd5b5061006e6101f5565b3480156100a557600080fd5b506000546100b9906001600160a01b031681565b6040516001600160a01b03909116815260200161007b565b610057610202565b6000546001600160a01b031633146101385760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610164573d6000803e3d6000fd5b50565b600180546101749061033b565b80601f01602080910402602001604051908101604052809291908181526020018280546101a09061033b565b80156101ed5780601f106101c2576101008083540402835291602001916101ed565b820191906000526020600020905b8154815290600101906020018083116101d057829003601f168201915b505050505081565b600280546101749061033b565b6000341161025e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161012f565b604051600090309034908381818185875af1925050503d80600081146102a0576040519150601f19603f3d011682016040523d82523d6000602084013e6102a5565b606091505b50509050806101645760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161012f565b602081526000825180602084015260005b8181101561031b57602081860181015160408684010152016102fe565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061034f57607f821691505b60208210810361036f57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a0e30cf54005bdfefebd38ebf50097a4f685d7c5233cfbf61f49bef10dcfb1a264736f6c634300081a0033a26469706673582212200c2e13e9e9aa55dce4afa688ad22ee11bed4c851f3d4148188c1ff1f96e33b1b64736f6c634300081a0033","sourceMap":"84:399:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;115:26;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;363:32:28;;;345:51;;333:2;318:18;115:26:24;;;;;;;;385:96;;;:::i;:::-;;;;;;;:::i;148:231::-;;;;;;:::i;:::-;;:::i;:::-;;115:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;115:26:24;;-1:-1:-1;115:26:24;:::o;385:96::-;430:16;465:9;458:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;458:16:24;;;;;;;;;;;;;;;;;;;;;;;385:96;:::o;148:231::-;259:20;295:5;302:11;315:10;282:44;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;336:9:24;:36;;;;;;;;;;;;;;-1:-1:-1;;;;;;336:36:24;-1:-1:-1;;;;;336:36:24;;;;;;;;;;-1:-1:-1;;;148:231:24:o;-1:-1:-1:-;;;;;;;;:::o;14:180:28:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:28;;14:180;-1:-1:-1;14:180:28:o;407:637::-;597:2;609:21;;;679:13;;582:18;;;701:22;;;549:4;;780:15;;;754:2;739:18;;;549:4;823:195;837:6;834:1;831:13;823:195;;;902:13;;-1:-1:-1;;;;;898:39:28;886:52;;967:2;993:15;;;;958:12;;;;934:1;852:9;823:195;;;-1:-1:-1;1035:3:28;;407:637;-1:-1:-1;;;;;407:637:28:o;1049:127::-;1110:10;1105:3;1101:20;1098:1;1091:31;1141:4;1138:1;1131:15;1165:4;1162:1;1155:15;1181:726;1224:5;1277:3;1270:4;1262:6;1258:17;1254:27;1244:55;;1295:1;1292;1285:12;1244:55;1335:6;1322:20;1365:18;1357:6;1354:30;1351:56;;;1387:18;;:::i;:::-;1436:2;1430:9;1528:2;1490:17;;-1:-1:-1;;1486:31:28;;;1519:2;1482:40;1478:54;1466:67;;1563:18;1548:34;;1584:22;;;1545:62;1542:88;;;1610:18;;:::i;:::-;1646:2;1639:22;1670;;;1711:19;;;1732:4;1707:30;1704:39;-1:-1:-1;1701:59:28;;;1756:1;1753;1746:12;1701:59;1820:6;1813:4;1805:6;1801:17;1794:4;1786:6;1782:17;1769:58;1875:1;1847:19;;;1868:4;1843:30;1836:41;;;;1851:6;1181:726;-1:-1:-1;;;1181:726:28:o;1912:538::-;2000:6;2008;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2117:9;2104:23;2150:18;2142:6;2139:30;2136:50;;;2182:1;2179;2172:12;2136:50;2205;2247:7;2238:6;2227:9;2223:22;2205:50;:::i;:::-;2195:60;;;2308:2;2297:9;2293:18;2280:32;2337:18;2327:8;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2392;2436:7;2425:8;2414:9;2410:24;2392:52;:::i;:::-;2382:62;;;1912:538;;;;;:::o;2455:400::-;2497:3;2535:5;2529:12;2562:6;2557:3;2550:19;2587:1;2597:139;2611:6;2608:1;2605:13;2597:139;;;2719:4;2704:13;;;2700:24;;2694:31;2674:11;;;2670:22;;2663:63;2626:12;2597:139;;;2601:3;2781:1;2774:4;2765:6;2760:3;2756:16;2752:27;2745:38;2844:4;2837:2;2833:7;2828:2;2820:6;2816:15;2812:29;2807:3;2803:39;2799:50;2792:57;;;2455:400;;;;:::o;2860:480::-;3085:2;3074:9;3067:21;3048:4;3111:45;3152:2;3141:9;3137:18;3129:6;3111:45;:::i;:::-;3204:9;3196:6;3192:22;3187:2;3176:9;3172:18;3165:50;3232:33;3258:6;3250;3232:33;:::i;:::-;3224:41;;;3330:1;3326;3321:3;3317:11;3313:19;3305:6;3301:32;3296:2;3285:9;3281:18;3274:60;2860:480;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"campaigns(uint256)":"141961bc","createCampaign(string,string)":"fce3f6ac","getCampaigns()":"a6b03633"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"campaigns\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"createCampaign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCampaigns\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CampaignFactory.sol\":\"CampaignFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/Campaign.sol\":{\"keccak256\":\"0xe133e416e03ea08cb276a98a9aaf97704f03ab916152753ea89ba51778109487\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31a25bd2dafb6a86585da119a81d8580764ea2e1a4e3be94aae8925f6dfc8e86\",\"dweb:/ipfs/QmUz6VsHiiDiDUJuqmUamJ1ydxHDfwRkUH2zVoJ4F6ARjU\"]},\"src/CampaignFactory.sol\":{\"keccak256\":\"0x19479a8321248eae55123ab8bb82bfea3212bd0897164ae2acfab84b394a9413\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://807e88a7b9c6911409eda64dacb7fe92a7239c416952e9e6680eb36789320ab0\",\"dweb:/ipfs/QmcmPy5JEvFaFGfbnYN9jvsuzwEAKn7Tp1x2Kq5LntrgUG\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"campaigns","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createCampaign"},{"inputs":[],"stateMutability":"view","type":"function","name":"getCampaigns","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/CampaignFactory.sol":"CampaignFactory"},"evmVersion":"paris","libraries":{}},"sources":{"src/Campaign.sol":{"keccak256":"0xe133e416e03ea08cb276a98a9aaf97704f03ab916152753ea89ba51778109487","urls":["bzz-raw://31a25bd2dafb6a86585da119a81d8580764ea2e1a4e3be94aae8925f6dfc8e86","dweb:/ipfs/QmUz6VsHiiDiDUJuqmUamJ1ydxHDfwRkUH2zVoJ4F6ARjU"],"license":"MIT"},"src/CampaignFactory.sol":{"keccak256":"0x19479a8321248eae55123ab8bb82bfea3212bd0897164ae2acfab84b394a9413","urls":["bzz-raw://807e88a7b9c6911409eda64dacb7fe92a7239c416952e9e6680eb36789320ab0","dweb:/ipfs/QmcmPy5JEvFaFGfbnYN9jvsuzwEAKn7Tp1x2Kq5LntrgUG"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/CampaignFactory.t.sol/CampaignFactoryTest.json b/08-Crowdfunding dApp on Core/out/CampaignFactory.t.sol/CampaignFactoryTest.json new file mode 100644 index 00000000..b393b0da --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/CampaignFactory.t.sol/CampaignFactoryTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"campaignFactory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CampaignFactory"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_CreateCampaign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetCampaigns","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50611d448061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806385226c8111610097578063b5508aa911610066578063b5508aa9146101d9578063ba414fa6146101e1578063e20c9f71146101f9578063fa7626d41461020157600080fd5b806385226c811461019f57806390b8e0e2146101b4578063916a17c6146101bc578063b0464fdc146101d157600080fd5b80633bbef408116100d35780633bbef408146101725780633e5e3c231461017a5780633f7286f41461018257806366d9a9a01461018a57600080fd5b80630a9254e4146101055780631ed7831c1461010f5780632ade38801461012d5780632fbd685614610142575b600080fd5b61010d61020e565b005b61011761025f565b6040516101249190610d8f565b60405180910390f35b6101356102c1565b6040516101249190610e21565b601f5461015a9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610124565b61010d610403565b6101176105c8565b610117610628565b610192610688565b6040516101249190610f33565b6101a76107f5565b6040516101249190610fb3565b61010d6108c5565b6101c461092b565b604051610124919061100c565b6101c4610a11565b6101a7610af7565b6101e9610bc7565b6040519015158152602001610124565b610117610c6b565b601f546101e99060ff1681565b60405161021a90610d82565b604051809103906000f080158015610236573d6000803e3d6000fd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550565b606060168054806020026020016040519081016040528092919081815260200182805480156102b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610299575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e357838290600052602060002001805461035690611085565b80601f016020809104026020016040519081016040528092919081815260200182805461038290611085565b80156103cf5780601f106103a4576101008083540402835291602001916103cf565b820191906000526020600020905b8154815290600101906020018083116103b257829003601f168201915b505050505081526020019060010190610337565b5050505081525050815260200190600101906102e5565b50505050905090565b601f54604051633f38fdab60e21b81526101009091046001600160a01b03169063fce3f6ac90610435906004016110bf565b600060405180830381600087803b15801561044f57600080fd5b505af1158015610463573d6000803e3d6000fd5b5050601f54604051633f38fdab60e21b81526101009091046001600160a01b0316925063fce3f6ac9150610499906004016110bf565b600060405180830381600087803b1580156104b357600080fd5b505af11580156104c7573d6000803e3d6000fd5b505050506000601f60019054906101000a90046001600160a01b03166001600160a01b031663a6b036336040518163ffffffff1660e01b8152600401600060405180830381865afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610548919081019061114d565b905061055681516002610ccb565b6105948160008151811061056c5761056c61121d565b6020026020010151826000815181106105875761058761121d565b6020026020010151610d3a565b6105c5816001815181106105aa576105aa61121d565b6020026020010151826001815181106105875761058761121d565b50565b606060188054806020026020016040519081016040528092919081815260200182805480156102b7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610299575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156102b7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610299575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fa57838290600052602060002090600202016040518060400160405290816000820180546106df90611085565b80601f016020809104026020016040519081016040528092919081815260200182805461070b90611085565b80156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156107dd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161079f5790505b505050505081525050815260200190600101906106ac565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fa57838290600052602060002001805461083890611085565b80601f016020809104026020016040519081016040528092919081815260200182805461086490611085565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b505050505081526020019060010190610819565b601f54604051633f38fdab60e21b81526101009091046001600160a01b03169063fce3f6ac906108f7906004016110bf565b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b50505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103fa5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156109f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109bb5790505b5050505050815250508152602001906001019061094f565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610adf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610aa15790505b50505050508152505081526020019060010190610a35565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fa578382906000526020600020018054610b3a90611085565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6690611085565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b505050505081526020019060010190610b1b565b60085460009060ff1615610bdf575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190611233565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102b7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610299575050505050905090565b60405163260a5b1560e21b81526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015610d1e57600080fd5b505afa158015610d32573d6000803e3d6000fd5b505050505050565b6040516328a9b0fb60e11b81526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401610d06565b610ac28061124d83390190565b602080825282518282018190526000918401906040840190835b81811015610dd05783516001600160a01b0316835260209384019390920191600101610da9565b509095945050505050565b6000815180845260005b81811015610e0157602081850181015186830182015201610de5565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610ec757605f198a8503018352610eb1848651610ddb565b6020958601959094509290920191600101610e95565b509197505050602094850194929092019150600101610e49565b50929695505050505050565b600081518084526020840193506020830160005b82811015610f295781516001600160e01b031916865260209586019590910190600101610f01565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157603f198786030184528151805160408752610f816040880182610ddb565b9050602082015191508681036020880152610f9c8183610eed565b965050506020938401939190910190600101610f5b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157603f19878603018452610ff7858351610ddb565b94506020938401939190910190600101610fdb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157868503603f19018452815180516001600160a01b0316865260209081015160409187018290529061106f90870182610eed565b9550506020938401939190910190600101611034565b600181811c9082168061109957607f821691505b6020821081036110b957634e487b7160e01b600052602260045260246000fd5b50919050565b6040808252600d908201526c2a32b9ba1021b0b6b830b4b3b760991b60608201526080602082018190526017908201527f54686973206973206120746573742063616d706169676e00000000000000000060a082015260c00190565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461114857600080fd5b919050565b60006020828403121561115f57600080fd5b815167ffffffffffffffff81111561117657600080fd5b8201601f8101841361118757600080fd5b805167ffffffffffffffff8111156111a1576111a161111b565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156111ce576111ce61111b565b6040529182526020818401810192908101878411156111ec57600080fd5b6020850194505b838510156112125761120485611131565b8152602094850194016111f3565b509695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561124557600080fd5b505191905056fe6080604052348015600f57600080fd5b50610aa38061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063141961bc14610046578063a6b0363314610076578063fce3f6ac1461008b575b600080fd5b6100596100543660046101c5565b6100a0565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100ca565b60405161006d91906101de565b61009e6100993660046102cf565b61012c565b005b600081815481106100b057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600080548060200260200160405190810160405280929190818152602001828054801561012257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610104575b5050505050905090565b600082823360405161013d906101b8565b6101499392919061037e565b604051809103906000f080158015610165573d6000803e3d6000fd5b50600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b0392909216919091179055505050565b6106b1806103bd83390190565b6000602082840312156101d757600080fd5b5035919050565b602080825282518282018190526000918401906040840190835b8181101561021f5783516001600160a01b03168352602093840193909201916001016101f8565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261025157600080fd5b813567ffffffffffffffff81111561026b5761026b61022a565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561029a5761029a61022a565b6040528181528382016020018510156102b257600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156102e257600080fd5b823567ffffffffffffffff8111156102f957600080fd5b61030585828601610240565b925050602083013567ffffffffffffffff81111561032257600080fd5b61032e85828601610240565b9150509250929050565b6000815180845260005b8181101561035e57602081850181015186830182015201610342565b506000602082860101526020601f19601f83011685010191505092915050565b6060815260006103916060830186610338565b82810360208401526103a38186610338565b91505060018060a01b038316604083015294935050505056fe608060405234801561001057600080fd5b506040516106b13803806106b183398101604081905261002f91610125565b600080546001600160a01b0319166001600160a01b03831617905560016100568482610239565b5060026100638382610239565b505050506102f7565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009357600080fd5b81516001600160401b038111156100ac576100ac61006c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100da576100da61006c565b6040528181528382016020018510156100f257600080fd5b60005b82811015610111576020818601810151838301820152016100f5565b506000918101602001919091529392505050565b60008060006060848603121561013a57600080fd5b83516001600160401b0381111561015057600080fd5b61015c86828701610082565b602086015190945090506001600160401b0381111561017a57600080fd5b61018686828701610082565b604086015190935090506001600160a01b03811681146101a557600080fd5b809150509250925092565b600181811c908216806101c457607f821691505b6020821081036101e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023457806000526020600020601f840160051c810160208510156102115750805b601f840160051c820191505b81811015610231576000815560010161021d565b50505b505050565b81516001600160401b038111156102525761025261006c565b6102668161026084546101b0565b846101ea565b6020601f82116001811461029a57600083156102825750848201515b600019600385901b1c1916600184901b178455610231565b600084815260208120601f198516915b828110156102ca57878501518255602094850194600190920191016102aa565b50848210156102e85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ab806103066000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100595780637284e416146100845780638da5cb5b14610099578063d7bb99ba146100d1575b600080fd5b6100576100d9565b005b34801561006557600080fd5b5061006e610167565b60405161007b91906102ed565b60405180910390f35b34801561009057600080fd5b5061006e6101f5565b3480156100a557600080fd5b506000546100b9906001600160a01b031681565b6040516001600160a01b03909116815260200161007b565b610057610202565b6000546001600160a01b031633146101385760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610164573d6000803e3d6000fd5b50565b600180546101749061033b565b80601f01602080910402602001604051908101604052809291908181526020018280546101a09061033b565b80156101ed5780601f106101c2576101008083540402835291602001916101ed565b820191906000526020600020905b8154815290600101906020018083116101d057829003601f168201915b505050505081565b600280546101749061033b565b6000341161025e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161012f565b604051600090309034908381818185875af1925050503d80600081146102a0576040519150601f19603f3d011682016040523d82523d6000602084013e6102a5565b606091505b50509050806101645760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161012f565b602081526000825180602084015260005b8181101561031b57602081860181015160408684010152016102fe565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061034f57607f821691505b60208210810361036f57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a0e30cf54005bdfefebd38ebf50097a4f685d7c5233cfbf61f49bef10dcfb1a264736f6c634300081a0033a26469706673582212200c2e13e9e9aa55dce4afa688ad22ee11bed4c851f3d4148188c1ff1f96e33b1b64736f6c634300081a0033a2646970667358221220d8b872d89acacf941c3cd66639e184c9d1de357a60c3be775645b4afc5fa84fa64736f6c634300081a0033","sourceMap":"168:843:26:-:0;;;3126:44:2;;;3166:4;-1:-1:-1;;3126:44:2;;;;;;;;1016:26:12;;;;;;;;;;;168:843:26;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c806385226c8111610097578063b5508aa911610066578063b5508aa9146101d9578063ba414fa6146101e1578063e20c9f71146101f9578063fa7626d41461020157600080fd5b806385226c811461019f57806390b8e0e2146101b4578063916a17c6146101bc578063b0464fdc146101d157600080fd5b80633bbef408116100d35780633bbef408146101725780633e5e3c231461017a5780633f7286f41461018257806366d9a9a01461018a57600080fd5b80630a9254e4146101055780631ed7831c1461010f5780632ade38801461012d5780632fbd685614610142575b600080fd5b61010d61020e565b005b61011761025f565b6040516101249190610d8f565b60405180910390f35b6101356102c1565b6040516101249190610e21565b601f5461015a9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610124565b61010d610403565b6101176105c8565b610117610628565b610192610688565b6040516101249190610f33565b6101a76107f5565b6040516101249190610fb3565b61010d6108c5565b6101c461092b565b604051610124919061100c565b6101c4610a11565b6101a7610af7565b6101e9610bc7565b6040519015158152602001610124565b610117610c6b565b601f546101e99060ff1681565b60405161021a90610d82565b604051809103906000f080158015610236573d6000803e3d6000fd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550565b606060168054806020026020016040519081016040528092919081815260200182805480156102b757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610299575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103fa57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103e357838290600052602060002001805461035690611085565b80601f016020809104026020016040519081016040528092919081815260200182805461038290611085565b80156103cf5780601f106103a4576101008083540402835291602001916103cf565b820191906000526020600020905b8154815290600101906020018083116103b257829003601f168201915b505050505081526020019060010190610337565b5050505081525050815260200190600101906102e5565b50505050905090565b601f54604051633f38fdab60e21b81526101009091046001600160a01b03169063fce3f6ac90610435906004016110bf565b600060405180830381600087803b15801561044f57600080fd5b505af1158015610463573d6000803e3d6000fd5b5050601f54604051633f38fdab60e21b81526101009091046001600160a01b0316925063fce3f6ac9150610499906004016110bf565b600060405180830381600087803b1580156104b357600080fd5b505af11580156104c7573d6000803e3d6000fd5b505050506000601f60019054906101000a90046001600160a01b03166001600160a01b031663a6b036336040518163ffffffff1660e01b8152600401600060405180830381865afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610548919081019061114d565b905061055681516002610ccb565b6105948160008151811061056c5761056c61121d565b6020026020010151826000815181106105875761058761121d565b6020026020010151610d3a565b6105c5816001815181106105aa576105aa61121d565b6020026020010151826001815181106105875761058761121d565b50565b606060188054806020026020016040519081016040528092919081815260200182805480156102b7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610299575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156102b7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610299575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103fa57838290600052602060002090600202016040518060400160405290816000820180546106df90611085565b80601f016020809104026020016040519081016040528092919081815260200182805461070b90611085565b80156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156107dd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161079f5790505b505050505081525050815260200190600101906106ac565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103fa57838290600052602060002001805461083890611085565b80601f016020809104026020016040519081016040528092919081815260200182805461086490611085565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b505050505081526020019060010190610819565b601f54604051633f38fdab60e21b81526101009091046001600160a01b03169063fce3f6ac906108f7906004016110bf565b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b50505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103fa5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156109f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109bb5790505b5050505050815250508152602001906001019061094f565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103fa5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610adf57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610aa15790505b50505050508152505081526020019060010190610a35565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103fa578382906000526020600020018054610b3a90611085565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6690611085565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b505050505081526020019060010190610b1b565b60085460009060ff1615610bdf575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190611233565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102b7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610299575050505050905090565b60405163260a5b1560e21b81526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b158015610d1e57600080fd5b505afa158015610d32573d6000803e3d6000fd5b505050505050565b6040516328a9b0fb60e11b81526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f690604401610d06565b610ac28061124d83390190565b602080825282518282018190526000918401906040840190835b81811015610dd05783516001600160a01b0316835260209384019390920191600101610da9565b509095945050505050565b6000815180845260005b81811015610e0157602081850181015186830182015201610de5565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610ec757605f198a8503018352610eb1848651610ddb565b6020958601959094509290920191600101610e95565b509197505050602094850194929092019150600101610e49565b50929695505050505050565b600081518084526020840193506020830160005b82811015610f295781516001600160e01b031916865260209586019590910190600101610f01565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157603f198786030184528151805160408752610f816040880182610ddb565b9050602082015191508681036020880152610f9c8183610eed565b965050506020938401939190910190600101610f5b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157603f19878603018452610ff7858351610ddb565b94506020938401939190910190600101610fdb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610ee157868503603f19018452815180516001600160a01b0316865260209081015160409187018290529061106f90870182610eed565b9550506020938401939190910190600101611034565b600181811c9082168061109957607f821691505b6020821081036110b957634e487b7160e01b600052602260045260246000fd5b50919050565b6040808252600d908201526c2a32b9ba1021b0b6b830b4b3b760991b60608201526080602082018190526017908201527f54686973206973206120746573742063616d706169676e00000000000000000060a082015260c00190565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461114857600080fd5b919050565b60006020828403121561115f57600080fd5b815167ffffffffffffffff81111561117657600080fd5b8201601f8101841361118757600080fd5b805167ffffffffffffffff8111156111a1576111a161111b565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156111ce576111ce61111b565b6040529182526020818401810192908101878411156111ec57600080fd5b6020850194505b838510156112125761120485611131565b8152602094850194016111f3565b509695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561124557600080fd5b505191905056fe6080604052348015600f57600080fd5b50610aa38061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063141961bc14610046578063a6b0363314610076578063fce3f6ac1461008b575b600080fd5b6100596100543660046101c5565b6100a0565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100ca565b60405161006d91906101de565b61009e6100993660046102cf565b61012c565b005b600081815481106100b057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060600080548060200260200160405190810160405280929190818152602001828054801561012257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610104575b5050505050905090565b600082823360405161013d906101b8565b6101499392919061037e565b604051809103906000f080158015610165573d6000803e3d6000fd5b50600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630180546001600160a01b0319166001600160a01b0392909216919091179055505050565b6106b1806103bd83390190565b6000602082840312156101d757600080fd5b5035919050565b602080825282518282018190526000918401906040840190835b8181101561021f5783516001600160a01b03168352602093840193909201916001016101f8565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261025157600080fd5b813567ffffffffffffffff81111561026b5761026b61022a565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561029a5761029a61022a565b6040528181528382016020018510156102b257600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156102e257600080fd5b823567ffffffffffffffff8111156102f957600080fd5b61030585828601610240565b925050602083013567ffffffffffffffff81111561032257600080fd5b61032e85828601610240565b9150509250929050565b6000815180845260005b8181101561035e57602081850181015186830182015201610342565b506000602082860101526020601f19601f83011685010191505092915050565b6060815260006103916060830186610338565b82810360208401526103a38186610338565b91505060018060a01b038316604083015294935050505056fe608060405234801561001057600080fd5b506040516106b13803806106b183398101604081905261002f91610125565b600080546001600160a01b0319166001600160a01b03831617905560016100568482610239565b5060026100638382610239565b505050506102f7565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009357600080fd5b81516001600160401b038111156100ac576100ac61006c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100da576100da61006c565b6040528181528382016020018510156100f257600080fd5b60005b82811015610111576020818601810151838301820152016100f5565b506000918101602001919091529392505050565b60008060006060848603121561013a57600080fd5b83516001600160401b0381111561015057600080fd5b61015c86828701610082565b602086015190945090506001600160401b0381111561017a57600080fd5b61018686828701610082565b604086015190935090506001600160a01b03811681146101a557600080fd5b809150509250925092565b600181811c908216806101c457607f821691505b6020821081036101e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023457806000526020600020601f840160051c810160208510156102115750805b601f840160051c820191505b81811015610231576000815560010161021d565b50505b505050565b81516001600160401b038111156102525761025261006c565b6102668161026084546101b0565b846101ea565b6020601f82116001811461029a57600083156102825750848201515b600019600385901b1c1916600184901b178455610231565b600084815260208120601f198516915b828110156102ca57878501518255602094850194600190920191016102aa565b50848210156102e85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103ab806103066000396000f3fe60806040526004361061004a5760003560e01c80633ccfd60b1461004f5780634a79d50c146100595780637284e416146100845780638da5cb5b14610099578063d7bb99ba146100d1575b600080fd5b6100576100d9565b005b34801561006557600080fd5b5061006e610167565b60405161007b91906102ed565b60405180910390f35b34801561009057600080fd5b5061006e6101f5565b3480156100a557600080fd5b506000546100b9906001600160a01b031681565b6040516001600160a01b03909116815260200161007b565b610057610202565b6000546001600160a01b031633146101385760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e65722063616e2077697468647261772066756e647300000060448201526064015b60405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015610164573d6000803e3d6000fd5b50565b600180546101749061033b565b80601f01602080910402602001604051908101604052809291908181526020018280546101a09061033b565b80156101ed5780601f106101c2576101008083540402835291602001916101ed565b820191906000526020600020905b8154815290600101906020018083116101d057829003601f168201915b505050505081565b600280546101749061033b565b6000341161025e5760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b606482015260840161012f565b604051600090309034908381818185875af1925050503d80600081146102a0576040519150601f19603f3d011682016040523d82523d6000602084013e6102a5565b606091505b50509050806101645760405162461bcd60e51b81526020600482015260146024820152734661696c656420746f2073656e642066756e647360601b604482015260640161012f565b602081526000825180602084015260005b8181101561031b57602081860181015160408684010152016102fe565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061034f57607f821691505b60208210810361036f57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a0e30cf54005bdfefebd38ebf50097a4f685d7c5233cfbf61f49bef10dcfb1a264736f6c634300081a0033a26469706673582212200c2e13e9e9aa55dce4afa688ad22ee11bed4c851f3d4148188c1ff1f96e33b1b64736f6c634300081a0033a2646970667358221220d8b872d89acacf941c3cd66639e184c9d1de357a60c3be775645b4afc5fa84fa64736f6c634300081a0033","sourceMap":"168:843:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;256:80;;;:::i;:::-;;2907:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3823:151;;;:::i;:::-;;;;;;;:::i;211:38:26:-;;;;;;;;-1:-1:-1;;;;;211:38:26;;;;;;-1:-1:-1;;;;;2881:32:28;;;2863:51;;2851:2;2836:18;211:38:26;2692:228:28;511:498:26;;;:::i;3684:133:5:-;;;:::i;3385:141::-;;;:::i;3193:186::-;;;:::i;:::-;;;;;;;:::i;3047:140::-;;;:::i;:::-;;;;;;;:::i;342:163:26:-;;;:::i;3532:146:5:-;;;:::i;:::-;;;;;;;:::i;2754:147::-;;;:::i;2459:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6512:14:28;;6505:22;6487:41;;6475:2;6460:18;1243:204:1;6347:187:28;2606:142:5;;;:::i;1016:26:12:-;;;;;;;;;256:80:26;308:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;290:15;;:39;;;;;-1:-1:-1;;;;;290:39:26;;;;;-1:-1:-1;;;;;290:39:26;;;;;;256:80::o;2907:134:5:-;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2999:35:5;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;3823:151::-;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3926:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;511:498:26:-;557:15;;:108;;-1:-1:-1;;;557:108:26;;:15;;;;-1:-1:-1;;;;;557:15:26;;:30;;:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;675:15:26;;:108;;-1:-1:-1;;;675:108:26;;:15;;;;-1:-1:-1;;;;;675:15:26;;-1:-1:-1;675:30:26;;-1:-1:-1;675:108:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:26;823:15;;;;;;;;;-1:-1:-1;;;;;823:15:26;-1:-1:-1;;;;;823:28:26;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;823:30:26;;;;;;;;;;;;:::i;:::-;794:59;;863:29;872:9;:16;890:1;863:8;:29::i;:::-;902:45;911:9;921:1;911:12;;;;;;;;:::i;:::-;;;;;;;933:9;943:1;933:12;;;;;;;;:::i;:::-;;;;;;;902:8;:45::i;:::-;957;966:9;976:1;966:12;;;;;;;;:::i;:::-;;;;;;;988:9;998:1;988:12;;;;;;;;:::i;957:45::-;547:462;511:498::o;3684:133:5:-;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3775:35:5;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3480:39:5;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;3193:186::-;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3317:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:140;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;342:163:26;390:15;;:108;;-1:-1:-1;;;390:108:26;;:15;;;;-1:-1:-1;;;;;390:15:26;;:30;;:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;342:163::o;3532:146:5:-;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:147;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:141;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;9273:51:28;;;-1:-1:-1;;;9340:18:28;;;9333:34;1428:1:1;;1377:7;;9246:18:28;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2606:142:5:-;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2702:39:5;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;2270:110:1:-;2349:24;;-1:-1:-1;;;2349:24:1;;;;;9741:25:28;;;9782:18;;;9775:34;;;2349:11:1;;;;9714:18:28;;2349:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2270:110;;:::o;3454:::-;3533:24;;-1:-1:-1;;;3533:24:1;;-1:-1:-1;;;;;10012:32:28;;;3533:24:1;;;9994:51:28;10081:32;;10061:18;;;10054:60;3533:11:1;;;;9967:18:28;;3533:24:1;9820:300:28;-1:-1:-1;;;;;;;;:::o;14:637:28:-;204:2;216:21;;;286:13;;189:18;;;308:22;;;156:4;;387:15;;;361:2;346:18;;;156:4;430:195;444:6;441:1;438:13;430:195;;;509:13;;-1:-1:-1;;;;;505:39:28;493:52;;574:2;600:15;;;;565:12;;;;541:1;459:9;430:195;;;-1:-1:-1;642:3:28;;14:637;-1:-1:-1;;;;;14:637:28:o;656:400::-;698:3;736:5;730:12;763:6;758:3;751:19;788:1;798:139;812:6;809:1;806:13;798:139;;;920:4;905:13;;;901:24;;895:31;875:11;;;871:22;;864:63;827:12;798:139;;;802:3;982:1;975:4;966:6;961:3;957:16;953:27;946:38;1045:4;1038:2;1034:7;1029:2;1021:6;1017:15;1013:29;1008:3;1004:39;1000:50;993:57;;;656:400;;;;:::o;1061:1626::-;1265:4;1313:2;1302:9;1298:18;1343:2;1332:9;1325:21;1366:6;1401;1395:13;1432:6;1424;1417:22;1470:2;1459:9;1455:18;1448:25;;1532:2;1522:6;1519:1;1515:14;1504:9;1500:30;1496:39;1482:53;;1570:2;1562:6;1558:15;1591:1;1601:1057;1615:6;1612:1;1609:13;1601:1057;;;-1:-1:-1;;1680:22:28;;;1676:36;1664:49;;1736:13;;1823:9;;-1:-1:-1;;;;;1819:35:28;1804:51;;1902:2;1894:11;;;1888:18;1788:2;1926:15;;;1919:27;;;2007:19;;1776:15;;;2039:24;;;2194:21;;;2097:2;2147:1;2143:16;;;2131:29;;2127:38;;;2085:15;;;;-1:-1:-1;2253:296:28;2269:8;2264:3;2261:17;2253:296;;;2375:2;2371:7;2362:6;2354;2350:19;2346:33;2339:5;2332:48;2407:42;2442:6;2431:8;2425:15;2407:42;:::i;:::-;2492:2;2478:17;;;;2397:52;;-1:-1:-1;2521:14:28;;;;;2297:1;2288:11;2253:296;;;-1:-1:-1;2572:6:28;;-1:-1:-1;;;2613:2:28;2636:12;;;;2601:15;;;;;-1:-1:-1;1637:1:28;1630:9;1601:1057;;;-1:-1:-1;2675:6:28;;1061:1626;-1:-1:-1;;;;;;1061:1626:28:o;2925:446::-;2977:3;3015:5;3009:12;3042:6;3037:3;3030:19;3074:4;3069:3;3065:14;3058:21;;3113:4;3106:5;3102:16;3136:1;3146:200;3160:6;3157:1;3154:13;3146:200;;;3225:13;;-1:-1:-1;;;;;;3221:40:28;3209:53;;3291:4;3282:14;;;;3319:17;;;;3182:1;3175:9;3146:200;;;-1:-1:-1;3362:3:28;;2925:446;-1:-1:-1;;;;2925:446:28:o;3376:1143::-;3594:4;3642:2;3631:9;3627:18;3672:2;3661:9;3654:21;3695:6;3730;3724:13;3761:6;3753;3746:22;3799:2;3788:9;3784:18;3777:25;;3861:2;3851:6;3848:1;3844:14;3833:9;3829:30;3825:39;3811:53;;3899:2;3891:6;3887:15;3920:1;3930:560;3944:6;3941:1;3938:13;3930:560;;;4037:2;4033:7;4021:9;4013:6;4009:22;4005:36;4000:3;3993:49;4071:6;4065:13;4117:2;4111:9;4148:2;4140:6;4133:18;4178:48;4222:2;4214:6;4210:15;4196:12;4178:48;:::i;:::-;4164:62;;4275:2;4271;4267:11;4261:18;4239:40;;4328:6;4320;4316:19;4311:2;4303:6;4299:15;4292:44;4359:51;4403:6;4387:14;4359:51;:::i;:::-;4349:61;-1:-1:-1;;;4445:2:28;4468:12;;;;4433:15;;;;;3966:1;3959:9;3930:560;;4524:782;4686:4;4734:2;4723:9;4719:18;4764:2;4753:9;4746:21;4787:6;4822;4816:13;4853:6;4845;4838:22;4891:2;4880:9;4876:18;4869:25;;4953:2;4943:6;4940:1;4936:14;4925:9;4921:30;4917:39;4903:53;;4991:2;4983:6;4979:15;5012:1;5022:255;5036:6;5033:1;5030:13;5022:255;;;5129:2;5125:7;5113:9;5105:6;5101:22;5097:36;5092:3;5085:49;5157:40;5190:6;5181;5175:13;5157:40;:::i;:::-;5147:50;-1:-1:-1;5232:2:28;5255:12;;;;5220:15;;;;;5058:1;5051:9;5022:255;;5311:1031;5513:4;5561:2;5550:9;5546:18;5591:2;5580:9;5573:21;5614:6;5649;5643:13;5680:6;5672;5665:22;5718:2;5707:9;5703:18;5696:25;;5780:2;5770:6;5767:1;5763:14;5752:9;5748:30;5744:39;5730:53;;5818:2;5810:6;5806:15;5839:1;5849:464;5863:6;5860:1;5857:13;5849:464;;;5928:22;;;-1:-1:-1;;5924:36:28;5912:49;;5984:13;;6029:9;;-1:-1:-1;;;;;6025:35:28;6010:51;;6108:2;6100:11;;;6094:18;6149:2;6132:15;;;6125:27;;;6094:18;6175:58;;6217:15;;6094:18;6175:58;:::i;:::-;6165:68;-1:-1:-1;;6268:2:28;6291:12;;;;6256:15;;;;;5885:1;5878:9;5849:464;;6539:380;6618:1;6614:12;;;;6661;;;6682:61;;6736:4;6728:6;6724:17;6714:27;;6682:61;6789:2;6781:6;6778:14;6758:18;6755:38;6752:161;;6835:10;6830:3;6826:20;6823:1;6816:31;6870:4;6867:1;6860:15;6898:4;6895:1;6888:15;6752:161;;6539:380;;;:::o;6924:584::-;7227:2;7209:21;;;7266:2;7246:18;;;7239:30;-1:-1:-1;;;7300:2:28;7285:18;;7278:43;7359:3;7352:4;7337:20;;7330:33;;;7400:2;7379:19;;;7372:31;7440:25;7434:3;7419:19;;7412:54;7498:3;7483:19;;6924:584::o;7513:127::-;7574:10;7569:3;7565:20;7562:1;7555:31;7605:4;7602:1;7595:15;7629:4;7626:1;7619:15;7645:177;7724:13;;-1:-1:-1;;;;;7766:31:28;;7756:42;;7746:70;;7812:1;7809;7802:12;7746:70;7645:177;;;:::o;7827:1135::-;7922:6;7975:2;7963:9;7954:7;7950:23;7946:32;7943:52;;;7991:1;7988;7981:12;7943:52;8024:9;8018:16;8057:18;8049:6;8046:30;8043:50;;;8089:1;8086;8079:12;8043:50;8112:22;;8165:4;8157:13;;8153:27;-1:-1:-1;8143:55:28;;8194:1;8191;8184:12;8143:55;8227:2;8221:9;8253:18;8245:6;8242:30;8239:56;;;8275:18;;:::i;:::-;8321:6;8318:1;8314:14;8357:2;8351:9;8420:2;8416:7;8411:2;8407;8403:11;8399:25;8391:6;8387:38;8491:6;8479:10;8476:22;8455:18;8443:10;8440:34;8437:62;8434:88;;;8502:18;;:::i;:::-;8538:2;8531:22;8588;;;8638:2;8668:11;;;8664:20;;;8588:22;8626:15;;8696:19;;;8693:39;;;8728:1;8725;8718:12;8693:39;8760:2;8756;8752:11;8741:22;;8772:159;8788:6;8783:3;8780:15;8772:159;;;8854:34;8884:3;8854:34;:::i;:::-;8842:47;;8918:2;8805:12;;;;8909;8772:159;;;-1:-1:-1;8950:6:28;7827:1135;-1:-1:-1;;;;;;7827:1135:28:o;8967:127::-;9028:10;9023:3;9019:20;9016:1;9009:31;9059:4;9056:1;9049:15;9083:4;9080:1;9073:15;9378:184;9448:6;9501:2;9489:9;9480:7;9476:23;9472:32;9469:52;;;9517:1;9514;9507:12;9469:52;-1:-1:-1;9540:16:28;;9378:184;-1:-1:-1;9378:184:28:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","campaignFactory()":"2fbd6856","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_CreateCampaign()":"90b8e0e2","test_GetCampaigns()":"3bbef408"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"campaignFactory\",\"outputs\":[{\"internalType\":\"contract CampaignFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CreateCampaign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetCampaigns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/CampaignFactory.t.sol\":\"CampaignFactoryTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc\",\"dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/Campaign.sol\":{\"keccak256\":\"0xe133e416e03ea08cb276a98a9aaf97704f03ab916152753ea89ba51778109487\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31a25bd2dafb6a86585da119a81d8580764ea2e1a4e3be94aae8925f6dfc8e86\",\"dweb:/ipfs/QmUz6VsHiiDiDUJuqmUamJ1ydxHDfwRkUH2zVoJ4F6ARjU\"]},\"src/CampaignFactory.sol\":{\"keccak256\":\"0x19479a8321248eae55123ab8bb82bfea3212bd0897164ae2acfab84b394a9413\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://807e88a7b9c6911409eda64dacb7fe92a7239c416952e9e6680eb36789320ab0\",\"dweb:/ipfs/QmcmPy5JEvFaFGfbnYN9jvsuzwEAKn7Tp1x2Kq5LntrgUG\"]},\"test/CampaignFactory.t.sol\":{\"keccak256\":\"0x3197cf237686e9a349a2986f14e7efd5da36c2b4ecf3332bd8cfa1415964c9d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d55aa47b178450db0dff3932457df18ee0204249f004d51e9c68035a49b5ac1\",\"dweb:/ipfs/QmTTW9mSr5Ta7mFofLiFC1XWQDX4esztwAvBn2yJ3SfwPt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"campaignFactory","outputs":[{"internalType":"contract CampaignFactory","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CreateCampaign"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_GetCampaigns"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/CampaignFactory.t.sol":"CampaignFactoryTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b","urls":["bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc","dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/Campaign.sol":{"keccak256":"0xe133e416e03ea08cb276a98a9aaf97704f03ab916152753ea89ba51778109487","urls":["bzz-raw://31a25bd2dafb6a86585da119a81d8580764ea2e1a4e3be94aae8925f6dfc8e86","dweb:/ipfs/QmUz6VsHiiDiDUJuqmUamJ1ydxHDfwRkUH2zVoJ4F6ARjU"],"license":"MIT"},"src/CampaignFactory.sol":{"keccak256":"0x19479a8321248eae55123ab8bb82bfea3212bd0897164ae2acfab84b394a9413","urls":["bzz-raw://807e88a7b9c6911409eda64dacb7fe92a7239c416952e9e6680eb36789320ab0","dweb:/ipfs/QmcmPy5JEvFaFGfbnYN9jvsuzwEAKn7Tp1x2Kq5LntrgUG"],"license":"MIT"},"test/CampaignFactory.t.sol":{"keccak256":"0x3197cf237686e9a349a2986f14e7efd5da36c2b4ecf3332bd8cfa1415964c9d1","urls":["bzz-raw://8d55aa47b178450db0dff3932457df18ee0204249f004d51e9c68035a49b5ac1","dweb:/ipfs/QmTTW9mSr5Ta7mFofLiFC1XWQDX4esztwAvBn2yJ3SfwPt"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Counter.sol/Counter.json b/08-Crowdfunding dApp on Core/out/Counter.sol/Counter.json new file mode 100644 index 00000000..d9cd921a --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Counter.sol/Counter.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"increment","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"number","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setNumber","inputs":[{"name":"newNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b5060f78061001e6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80633fb5c1cb1460415780638381f58a146053578063d09de08a14606d575b600080fd5b6051604c3660046083565b600055565b005b605b60005481565b60405190815260200160405180910390f35b6051600080549080607c83609b565b9190505550565b600060208284031215609457600080fd5b5035919050565b60006001820160ba57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220380554e236eca25e41ce3f83305e720d4442aaad4e06b3f2ca8b7900b823776c64736f6c634300081a0033","sourceMap":"65:192:25:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c80633fb5c1cb1460415780638381f58a146053578063d09de08a14606d575b600080fd5b6051604c3660046083565b600055565b005b605b60005481565b60405190815260200160405180910390f35b6051600080549080607c83609b565b9190505550565b600060208284031215609457600080fd5b5035919050565b60006001820160ba57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220380554e236eca25e41ce3f83305e720d4442aaad4e06b3f2ca8b7900b823776c64736f6c634300081a0033","sourceMap":"65:192:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;116:80;;;;;;:::i;:::-;171:6;:18;116:80;;;88:21;;;;;;;;;345:25:28;;;333:2;318:18;88:21:25;;;;;;;202:53;;240:6;:8;;;:6;:8;;;:::i;:::-;;;;;;202:53::o;14:180:28:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:28;;14:180;-1:-1:-1;14:180:28:o;381:232::-;420:3;441:17;;;438:140;;500:10;495:3;491:20;488:1;481:31;535:4;532:1;525:15;563:4;560:1;553:15;438:140;-1:-1:-1;605:1:28;594:13;;381:232::o","linkReferences":{}},"methodIdentifiers":{"increment()":"d09de08a","number()":"8381f58a","setNumber(uint256)":"3fb5c1cb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"increment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"number\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newNumber\",\"type\":\"uint256\"}],\"name\":\"setNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Counter.sol\":\"Counter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/Counter.sol\":{\"keccak256\":\"0x09277f949d59a9521708c870dc39c2c434ad8f86a5472efda6a732ef728c0053\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://94cd5258357da018bf911aeda60ed9f5b130dce27445669ee200313cd3389200\",\"dweb:/ipfs/QmNbEfWAqXCtfQpk6u7TpGa8sTHXFLpUz7uebz2FVbchSC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"increment"},{"inputs":[],"stateMutability":"view","type":"function","name":"number","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNumber"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Counter.sol":"Counter"},"evmVersion":"paris","libraries":{}},"sources":{"src/Counter.sol":{"keccak256":"0x09277f949d59a9521708c870dc39c2c434ad8f86a5472efda6a732ef728c0053","urls":["bzz-raw://94cd5258357da018bf911aeda60ed9f5b130dce27445669ee200313cd3389200","dweb:/ipfs/QmNbEfWAqXCtfQpk6u7TpGa8sTHXFLpUz7uebz2FVbchSC"],"license":"UNLICENSED"}},"version":1},"id":25} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Counter.t.sol/CounterTest.json b/08-Crowdfunding dApp on Core/out/Counter.t.sol/CounterTest.json new file mode 100644 index 00000000..a230aa9e --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Counter.t.sol/CounterTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"counter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Counter"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_SetNumber","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Increment","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b506111f98061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806366d9a9a011610097578063b5508aa911610066578063b5508aa9146101e4578063ba414fa6146101ec578063e20c9f7114610204578063fa7626d41461020c57600080fd5b806366d9a9a01461019d57806385226c81146101b2578063916a17c6146101c7578063b0464fdc146101dc57600080fd5b80633f7286f4116100d35780633f7286f41461014a5780634820a105146101525780635c7f60d71461015a57806361bc221a1461016d57600080fd5b80630a9254e4146101055780631ed7831c1461010f5780632ade38801461012d5780633e5e3c2314610142575b600080fd5b61010d610219565b005b6101176102c0565b6040516101249190610d4c565b60405180910390f35b610135610322565b6040516101249190610dde565b610117610464565b6101176104c4565b61010d610524565b61010d610168366004610eaa565b61060f565b601f546101859061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610124565b6101a56106f4565b6040516101249190610f09565b6101ba610861565b6040516101249190610f89565b6101cf610931565b6040516101249190610fe2565b6101cf610a17565b6101ba610afd565b6101f4610bcd565b6040519015158152602001610124565b610117610c71565b601f546101f49060ff1681565b60405161022590610d3f565b604051809103906000f080158015610241573d6000803e3d6000fd5b50601f8054610100600160a81b0319166101006001600160a01b0393841681029190911791829055604051633fb5c1cb60e01b815260006004820152910490911690633fb5c1cb90602401600060405180830381600087803b1580156102a657600080fd5b505af11580156102ba573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561031857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102fa575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561045b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104445783829060005260206000200180546103b79061105b565b80601f01602080910402602001604051908101604052809291908181526020018280546103e39061105b565b80156104305780601f1061040557610100808354040283529160200191610430565b820191906000526020600020905b81548152906001019060200180831161041357829003601f168201915b505050505081526020019060010190610398565b505050508152505081526020019060010190610346565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610318576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102fa575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610318576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102fa575050505050905090565b601f60019054906101000a90046001600160a01b03166001600160a01b031663d09de08a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505061060d601f60019054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106069190611095565b6001610cd1565b565b601f54604051633fb5c1cb60e01b8152600481018390526101009091046001600160a01b031690633fb5c1cb90602401600060405180830381600087803b15801561065957600080fd5b505af115801561066d573d6000803e3d6000fd5b505050506106f1601f60019054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb9190611095565b82610cd1565b50565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561045b578382906000526020600020906002020160405180604001604052908160008201805461074b9061105b565b80601f01602080910402602001604051908101604052809291908181526020018280546107779061105b565b80156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561084957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161080b5790505b50505050508152505081526020019060010190610718565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561045b5783829060005260206000200180546108a49061105b565b80601f01602080910402602001604051908101604052809291908181526020018280546108d09061105b565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b505050505081526020019060010190610885565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561045b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156109ff57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109c15790505b50505050508152505081526020019060010190610955565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561045b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ae557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610aa75790505b50505050508152505081526020019060010190610a3b565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561045b578382906000526020600020018054610b409061105b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061105b565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b505050505081526020019060010190610b21565b60085460009060ff1615610be5575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190611095565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610318576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102fa575050505050905090565b60405163260a5b1560e21b81526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050505050565b610115806110af83390190565b602080825282518282018190526000918401906040840190835b81811015610d8d5783516001600160a01b0316835260209384019390920191600101610d66565b509095945050505050565b6000815180845260005b81811015610dbe57602081850181015186830182015201610da2565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610e8457605f198a8503018352610e6e848651610d98565b6020958601959094509290920191600101610e52565b509197505050602094850194929092019150600101610e06565b50929695505050505050565b600060208284031215610ebc57600080fd5b5035919050565b600081518084526020840193506020830160005b82811015610eff5781516001600160e01b031916865260209586019590910190600101610ed7565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57603f198786030184528151805160408752610f576040880182610d98565b9050602082015191508681036020880152610f728183610ec3565b965050506020938401939190910190600101610f31565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57603f19878603018452610fcd858351610d98565b94506020938401939190910190600101610fb1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57868503603f19018452815180516001600160a01b0316865260209081015160409187018290529061104590870182610ec3565b955050602093840193919091019060010161100a565b600181811c9082168061106f57607f821691505b60208210810361108f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156110a757600080fd5b505191905056fe6080604052348015600f57600080fd5b5060f78061001e6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80633fb5c1cb1460415780638381f58a146053578063d09de08a14606d575b600080fd5b6051604c3660046083565b600055565b005b605b60005481565b60405190815260200160405180910390f35b6051600080549080607c83609b565b9190505550565b600060208284031215609457600080fd5b5035919050565b60006001820160ba57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220380554e236eca25e41ce3f83305e720d4442aaad4e06b3f2ca8b7900b823776c64736f6c634300081a0033a2646970667358221220752a6ca01d0acf9c019ab5c0194b32b04ce0fded0728c2af94e54d5cc1102e4b64736f6c634300081a0033","sourceMap":"160:402:27:-:0;;;3126:44:2;;;3166:4;-1:-1:-1;;3126:44:2;;;;;;;;1016:26:12;;;;;;;;;;;160:402:27;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c806366d9a9a011610097578063b5508aa911610066578063b5508aa9146101e4578063ba414fa6146101ec578063e20c9f7114610204578063fa7626d41461020c57600080fd5b806366d9a9a01461019d57806385226c81146101b2578063916a17c6146101c7578063b0464fdc146101dc57600080fd5b80633f7286f4116100d35780633f7286f41461014a5780634820a105146101525780635c7f60d71461015a57806361bc221a1461016d57600080fd5b80630a9254e4146101055780631ed7831c1461010f5780632ade38801461012d5780633e5e3c2314610142575b600080fd5b61010d610219565b005b6101176102c0565b6040516101249190610d4c565b60405180910390f35b610135610322565b6040516101249190610dde565b610117610464565b6101176104c4565b61010d610524565b61010d610168366004610eaa565b61060f565b601f546101859061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610124565b6101a56106f4565b6040516101249190610f09565b6101ba610861565b6040516101249190610f89565b6101cf610931565b6040516101249190610fe2565b6101cf610a17565b6101ba610afd565b6101f4610bcd565b6040519015158152602001610124565b610117610c71565b601f546101f49060ff1681565b60405161022590610d3f565b604051809103906000f080158015610241573d6000803e3d6000fd5b50601f8054610100600160a81b0319166101006001600160a01b0393841681029190911791829055604051633fb5c1cb60e01b815260006004820152910490911690633fb5c1cb90602401600060405180830381600087803b1580156102a657600080fd5b505af11580156102ba573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561031857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102fa575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101561045b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104445783829060005260206000200180546103b79061105b565b80601f01602080910402602001604051908101604052809291908181526020018280546103e39061105b565b80156104305780601f1061040557610100808354040283529160200191610430565b820191906000526020600020905b81548152906001019060200180831161041357829003601f168201915b505050505081526020019060010190610398565b505050508152505081526020019060010190610346565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610318576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102fa575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610318576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102fa575050505050905090565b601f60019054906101000a90046001600160a01b03166001600160a01b031663d09de08a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505061060d601f60019054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106069190611095565b6001610cd1565b565b601f54604051633fb5c1cb60e01b8152600481018390526101009091046001600160a01b031690633fb5c1cb90602401600060405180830381600087803b15801561065957600080fd5b505af115801561066d573d6000803e3d6000fd5b505050506106f1601f60019054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb9190611095565b82610cd1565b50565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561045b578382906000526020600020906002020160405180604001604052908160008201805461074b9061105b565b80601f01602080910402602001604051908101604052809291908181526020018280546107779061105b565b80156107c45780601f10610799576101008083540402835291602001916107c4565b820191906000526020600020905b8154815290600101906020018083116107a757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561084957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161080b5790505b50505050508152505081526020019060010190610718565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561045b5783829060005260206000200180546108a49061105b565b80601f01602080910402602001604051908101604052809291908181526020018280546108d09061105b565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b505050505081526020019060010190610885565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101561045b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156109ff57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109c15790505b50505050508152505081526020019060010190610955565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101561045b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ae557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610aa75790505b50505050508152505081526020019060010190610a3b565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561045b578382906000526020600020018054610b409061105b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061105b565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b505050505081526020019060010190610b21565b60085460009060ff1615610be5575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b602483015260009163667f9d7090604401602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190611095565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610318576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102fa575050505050905090565b60405163260a5b1560e21b81526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050505050565b610115806110af83390190565b602080825282518282018190526000918401906040840190835b81811015610d8d5783516001600160a01b0316835260209384019390920191600101610d66565b509095945050505050565b6000815180845260005b81811015610dbe57602081850181015186830182015201610da2565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57603f19878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610e8457605f198a8503018352610e6e848651610d98565b6020958601959094509290920191600101610e52565b509197505050602094850194929092019150600101610e06565b50929695505050505050565b600060208284031215610ebc57600080fd5b5035919050565b600081518084526020840193506020830160005b82811015610eff5781516001600160e01b031916865260209586019590910190600101610ed7565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57603f198786030184528151805160408752610f576040880182610d98565b9050602082015191508681036020880152610f728183610ec3565b965050506020938401939190910190600101610f31565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57603f19878603018452610fcd858351610d98565b94506020938401939190910190600101610fb1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e9e57868503603f19018452815180516001600160a01b0316865260209081015160409187018290529061104590870182610ec3565b955050602093840193919091019060010161100a565b600181811c9082168061106f57607f821691505b60208210810361108f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156110a757600080fd5b505191905056fe6080604052348015600f57600080fd5b5060f78061001e6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80633fb5c1cb1460415780638381f58a146053578063d09de08a14606d575b600080fd5b6051604c3660046083565b600055565b005b605b60005481565b60405190815260200160405180910390f35b6051600080549080607c83609b565b9190505550565b600060208284031215609457600080fd5b5035919050565b60006001820160ba57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220380554e236eca25e41ce3f83305e720d4442aaad4e06b3f2ca8b7900b823776c64736f6c634300081a0033a2646970667358221220752a6ca01d0acf9c019ab5c0194b32b04ce0fded0728c2af94e54d5cc1102e4b64736f6c634300081a0033","sourceMap":"160:402:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;224:94;;;:::i;:::-;;2907:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3823:151;;;:::i;:::-;;;;;;;:::i;3684:133::-;;;:::i;3385:141::-;;;:::i;324:108:27:-;;;:::i;438:122::-;;;;;;:::i;:::-;;:::i;195:22::-;;;;;;;;-1:-1:-1;;;;;195:22:27;;;;;;-1:-1:-1;;;;;3058:32:28;;;3040:51;;3028:2;3013:18;195:22:27;2877:220:28;3193:186:5;;;:::i;:::-;;;;;;;:::i;3047:140::-;;;:::i;:::-;;;;;;;:::i;3532:146::-;;;:::i;:::-;;;;;;;:::i;2754:147::-;;;:::i;2459:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6689:14:28;;6682:22;6664:41;;6652:2;6637:18;1243:204:1;6524:187:28;2606:142:5;;;:::i;1016:26:12:-;;;;;;;;;224:94:27;268:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;258:7:27;:23;;-1:-1:-1;;;;;;258:23:27;;-1:-1:-1;;;;;258:23:27;;;;;;;;;;;;;291:20;;-1:-1:-1;;;291:20:27;;-1:-1:-1;291:20:27;;;6870:25:28;291:7:27;;;;;;:17;;6843:18:28;;291:20:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;224:94::o;2907:134:5:-;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2999:35:5;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;3823:151::-;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3926:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;3684:133::-;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3775:35:5;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3480:39:5;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;324:108:27:-;367:7;;;;;;;;;-1:-1:-1;;;;;367:7:27;-1:-1:-1;;;;;367:17:27;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;396:29;405:7;;;;;;;;;-1:-1:-1;;;;;405:7:27;-1:-1:-1;;;;;405:14:27;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;423:1;396:8;:29::i;:::-;324:108::o;438:122::-;494:7;;:20;;-1:-1:-1;;;494:20:27;;;;;6870:25:28;;;494:7:27;;;;-1:-1:-1;;;;;494:7:27;;:17;;6843:18:28;;494:20:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:29;533:7;;;;;;;;;-1:-1:-1;;;;;533:7:27;-1:-1:-1;;;;;533:14:27;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;551:1;524:8;:29::i;:::-;438:122;:::o;3193:186:5:-;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3317:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:140;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3532:146;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:147;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:141;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7836:51:28;;;-1:-1:-1;;;7903:18:28;;;7896:34;1428:1:1;;1377:7;;7809:18:28;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2606:142:5:-;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2702:39:5;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;2270:110:1:-;2349:24;;-1:-1:-1;;;2349:24:1;;;;;8304:25:28;;;8345:18;;;8338:34;;;2349:11:1;;;;8277:18:28;;2349:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2270:110;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:637:28:-;204:2;216:21;;;286:13;;189:18;;;308:22;;;156:4;;387:15;;;361:2;346:18;;;156:4;430:195;444:6;441:1;438:13;430:195;;;509:13;;-1:-1:-1;;;;;505:39:28;493:52;;574:2;600:15;;;;565:12;;;;541:1;459:9;430:195;;;-1:-1:-1;642:3:28;;14:637;-1:-1:-1;;;;;14:637:28:o;656:400::-;698:3;736:5;730:12;763:6;758:3;751:19;788:1;798:139;812:6;809:1;806:13;798:139;;;920:4;905:13;;;901:24;;895:31;875:11;;;871:22;;864:63;827:12;798:139;;;802:3;982:1;975:4;966:6;961:3;957:16;953:27;946:38;1045:4;1038:2;1034:7;1029:2;1021:6;1017:15;1013:29;1008:3;1004:39;1000:50;993:57;;;656:400;;;;:::o;1061:1626::-;1265:4;1313:2;1302:9;1298:18;1343:2;1332:9;1325:21;1366:6;1401;1395:13;1432:6;1424;1417:22;1470:2;1459:9;1455:18;1448:25;;1532:2;1522:6;1519:1;1515:14;1504:9;1500:30;1496:39;1482:53;;1570:2;1562:6;1558:15;1591:1;1601:1057;1615:6;1612:1;1609:13;1601:1057;;;-1:-1:-1;;1680:22:28;;;1676:36;1664:49;;1736:13;;1823:9;;-1:-1:-1;;;;;1819:35:28;1804:51;;1902:2;1894:11;;;1888:18;1788:2;1926:15;;;1919:27;;;2007:19;;1776:15;;;2039:24;;;2194:21;;;2097:2;2147:1;2143:16;;;2131:29;;2127:38;;;2085:15;;;;-1:-1:-1;2253:296:28;2269:8;2264:3;2261:17;2253:296;;;2375:2;2371:7;2362:6;2354;2350:19;2346:33;2339:5;2332:48;2407:42;2442:6;2431:8;2425:15;2407:42;:::i;:::-;2492:2;2478:17;;;;2397:52;;-1:-1:-1;2521:14:28;;;;;2297:1;2288:11;2253:296;;;-1:-1:-1;2572:6:28;;-1:-1:-1;;;2613:2:28;2636:12;;;;2601:15;;;;;-1:-1:-1;1637:1:28;1630:9;1601:1057;;;-1:-1:-1;2675:6:28;;1061:1626;-1:-1:-1;;;;;;1061:1626:28:o;2692:180::-;2751:6;2804:2;2792:9;2783:7;2779:23;2775:32;2772:52;;;2820:1;2817;2810:12;2772:52;-1:-1:-1;2843:23:28;;2692:180;-1:-1:-1;2692:180:28:o;3102:446::-;3154:3;3192:5;3186:12;3219:6;3214:3;3207:19;3251:4;3246:3;3242:14;3235:21;;3290:4;3283:5;3279:16;3313:1;3323:200;3337:6;3334:1;3331:13;3323:200;;;3402:13;;-1:-1:-1;;;;;;3398:40:28;3386:53;;3468:4;3459:14;;;;3496:17;;;;3359:1;3352:9;3323:200;;;-1:-1:-1;3539:3:28;;3102:446;-1:-1:-1;;;;3102:446:28:o;3553:1143::-;3771:4;3819:2;3808:9;3804:18;3849:2;3838:9;3831:21;3872:6;3907;3901:13;3938:6;3930;3923:22;3976:2;3965:9;3961:18;3954:25;;4038:2;4028:6;4025:1;4021:14;4010:9;4006:30;4002:39;3988:53;;4076:2;4068:6;4064:15;4097:1;4107:560;4121:6;4118:1;4115:13;4107:560;;;4214:2;4210:7;4198:9;4190:6;4186:22;4182:36;4177:3;4170:49;4248:6;4242:13;4294:2;4288:9;4325:2;4317:6;4310:18;4355:48;4399:2;4391:6;4387:15;4373:12;4355:48;:::i;:::-;4341:62;;4452:2;4448;4444:11;4438:18;4416:40;;4505:6;4497;4493:19;4488:2;4480:6;4476:15;4469:44;4536:51;4580:6;4564:14;4536:51;:::i;:::-;4526:61;-1:-1:-1;;;4622:2:28;4645:12;;;;4610:15;;;;;4143:1;4136:9;4107:560;;4701:782;4863:4;4911:2;4900:9;4896:18;4941:2;4930:9;4923:21;4964:6;4999;4993:13;5030:6;5022;5015:22;5068:2;5057:9;5053:18;5046:25;;5130:2;5120:6;5117:1;5113:14;5102:9;5098:30;5094:39;5080:53;;5168:2;5160:6;5156:15;5189:1;5199:255;5213:6;5210:1;5207:13;5199:255;;;5306:2;5302:7;5290:9;5282:6;5278:22;5274:36;5269:3;5262:49;5334:40;5367:6;5358;5352:13;5334:40;:::i;:::-;5324:50;-1:-1:-1;5409:2:28;5432:12;;;;5397:15;;;;;5235:1;5228:9;5199:255;;5488:1031;5690:4;5738:2;5727:9;5723:18;5768:2;5757:9;5750:21;5791:6;5826;5820:13;5857:6;5849;5842:22;5895:2;5884:9;5880:18;5873:25;;5957:2;5947:6;5944:1;5940:14;5929:9;5925:30;5921:39;5907:53;;5995:2;5987:6;5983:15;6016:1;6026:464;6040:6;6037:1;6034:13;6026:464;;;6105:22;;;-1:-1:-1;;6101:36:28;6089:49;;6161:13;;6206:9;;-1:-1:-1;;;;;6202:35:28;6187:51;;6285:2;6277:11;;;6271:18;6326:2;6309:15;;;6302:27;;;6271:18;6352:58;;6394:15;;6271:18;6352:58;:::i;:::-;6342:68;-1:-1:-1;;6445:2:28;6468:12;;;;6433:15;;;;;6062:1;6055:9;6026:464;;6906:380;6985:1;6981:12;;;;7028;;;7049:61;;7103:4;7095:6;7091:17;7081:27;;7049:61;7156:2;7148:6;7145:14;7125:18;7122:38;7119:161;;7202:10;7197:3;7193:20;7190:1;7183:31;7237:4;7234:1;7227:15;7265:4;7262:1;7255:15;7119:161;;6906:380;;;:::o;7291:184::-;7361:6;7414:2;7402:9;7393:7;7389:23;7385:32;7382:52;;;7430:1;7427;7420:12;7382:52;-1:-1:-1;7453:16:28;;7291:184;-1:-1:-1;7291:184:28:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","counter()":"61bc221a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_SetNumber(uint256)":"5c7f60d7","test_Increment()":"4820a105"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"counter\",\"outputs\":[{\"internalType\":\"contract Counter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SetNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Increment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Counter.t.sol\":\"CounterTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc\",\"dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/Counter.sol\":{\"keccak256\":\"0x09277f949d59a9521708c870dc39c2c434ad8f86a5472efda6a732ef728c0053\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://94cd5258357da018bf911aeda60ed9f5b130dce27445669ee200313cd3389200\",\"dweb:/ipfs/QmNbEfWAqXCtfQpk6u7TpGa8sTHXFLpUz7uebz2FVbchSC\"]},\"test/Counter.t.sol\":{\"keccak256\":\"0xa96172b360a569286d78c44ddad9da0b697e02fc85411ad8d8c4bbd5328852aa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://89a9118eed4363cc65b10d7f890f81d4a2f1beca17bed041a6cd8b144e97a745\",\"dweb:/ipfs/QmX3pTmCtqUvUQwhYvCW966XWXVx6scmJAjipSUH7NuxTK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"counter","outputs":[{"internalType":"contract Counter","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SetNumber"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_Increment"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Counter.t.sol":"CounterTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b","urls":["bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc","dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/Counter.sol":{"keccak256":"0x09277f949d59a9521708c870dc39c2c434ad8f86a5472efda6a732ef728c0053","urls":["bzz-raw://94cd5258357da018bf911aeda60ed9f5b130dce27445669ee200313cd3389200","dweb:/ipfs/QmNbEfWAqXCtfQpk6u7TpGa8sTHXFLpUz7uebz2FVbchSC"],"license":"UNLICENSED"},"test/Counter.t.sol":{"keccak256":"0xa96172b360a569286d78c44ddad9da0b697e02fc85411ad8d8c4bbd5328852aa","urls":["bzz-raw://89a9118eed4363cc65b10d7f890f81d4a2f1beca17bed041a6cd8b144e97a745","dweb:/ipfs/QmX3pTmCtqUvUQwhYvCW966XWXVx6scmJAjipSUH7NuxTK"],"license":"UNLICENSED"}},"version":1},"id":27} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IERC165.sol/IERC165.json b/08-Crowdfunding dApp on Core/out/IERC165.sol/IERC165.json new file mode 100644 index 00000000..2ff7f842 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IERC165.sol/IERC165.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IERC20.sol/IERC20.json b/08-Crowdfunding dApp on Core/out/IERC20.sol/IERC20.json new file mode 100644 index 00000000..7e238c81 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IERC20.sol/IERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.This includes the optional name, symbol, and decimals metadata.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"balanceOf(address)\":{\"notice\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"balanceOf(address)":{"notice":"Returns the amount of tokens owned by `account`."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC20.sol":"IERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721.json b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721.json new file mode 100644 index 00000000..8a217d85 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x80ac58cd.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Enumerable.json b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Enumerable.json new file mode 100644 index 00000000..f56cf59d --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Enumerable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenByIndex","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x780e9d63.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenByIndex(uint256)\":{\"details\":\"Throws if `_index` >= `totalSupply()`.\",\"params\":{\"_index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT, (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.\",\"params\":{\"_index\":\"A counter less than `balanceOf(_owner)`\",\"_owner\":\"An address where we are interested in NFTs owned by them\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Enumerate NFTs assigned to an owner\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenByIndex(uint256)":{"details":"Throws if `_index` >= `totalSupply()`.","params":{"_index":"A counter less than `totalSupply()`"},"returns":{"_0":"The token identifier for the `_index`th NFT, (sort order not specified)"}},"tokenOfOwnerByIndex(address,uint256)":{"details":"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.","params":{"_index":"A counter less than `balanceOf(_owner)`","_owner":"An address where we are interested in NFTs owned by them"},"returns":{"_0":"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)"}},"totalSupply()":{"returns":{"_0":"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"tokenByIndex(uint256)":{"notice":"Enumerate valid NFTs"},"tokenOfOwnerByIndex(address,uint256)":{"notice":"Enumerate NFTs assigned to an owner"},"totalSupply()":{"notice":"Count NFTs tracked by this contract"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Enumerable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Metadata.json b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Metadata.json new file mode 100644 index 00000000..dc78e513 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721Metadata.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"_name","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x5b5e139f.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721TokenReceiver.json b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721TokenReceiver.json new file mode 100644 index 00000000..3735be60 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IERC721.sol/IERC721TokenReceiver.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note: the ERC-165 identifier for this interface is 0x150b7a02.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.\",\"params\":{\"_data\":\"Additional data with no specified format\",\"_from\":\"The address which previously owned the token\",\"_operator\":\"The address which called `safeTransferFrom` function\",\"_tokenId\":\"The NFT identifier which is being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))` unless throwing\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handle the receipt of an NFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.","params":{"_data":"Additional data with no specified format","_from":"The address which previously owned the token","_operator":"The address which called `safeTransferFrom` function","_tokenId":"The NFT identifier which is being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))` unless throwing"}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC721Received(address,address,uint256,bytes)":{"notice":"Handle the receipt of an NFT"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721TokenReceiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/IMulticall3.sol/IMulticall3.json b/08-Crowdfunding dApp on Core/out/IMulticall3.sol/IMulticall3.json new file mode 100644 index 00000000..42c635cf --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/IMulticall3.sol/IMulticall3.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/MockERC20.sol/MockERC20.json b/08-Crowdfunding dApp on Core/out/MockERC20.sol/MockERC20.json new file mode 100644 index 00000000..6d5a5158 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/MockERC20.sol/MockERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50610e7c8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101b5578063a9059cbb146101bd578063d505accf146101d0578063dd62ed3e146101e357600080fd5b80633644e5151461016457806370a082311461016c5780637ecebe001461019557600080fd5b806306fdde03146100d4578063095ea7b3146100f25780631624f6c61461011557806318160ddd1461012a57806323b872dd1461013c578063313ce5671461014f575b600080fd5b6100dc61021c565b6040516100e9919061097b565b60405180910390f35b6101056101003660046109e5565b6102ae565b60405190151581526020016100e9565b610128610123366004610ac5565b61031b565b005b6003545b6040519081526020016100e9565b61010561014a366004610b3e565b6103ba565b60025460405160ff90911681526020016100e9565b61012e6104cf565b61012e61017a366004610b7b565b6001600160a01b031660009081526004602052604090205490565b61012e6101a3366004610b7b565b60086020526000908152604090205481565b6100dc6104f5565b6101056101cb3660046109e5565b610504565b6101286101de366004610b96565b61059b565b61012e6101f1366004610c01565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60606000805461022b90610c34565b80601f016020809104026020016040519081016040528092919081815260200182805461025790610c34565b80156102a45780601f10610279576101008083540402835291602001916102a4565b820191906000526020600020905b81548152906001019060200180831161028757829003601f168201915b5050505050905090565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103099086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103695760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b60448201526064015b60405180910390fd5b60006103758482610cbd565b5060016103828382610cbd565b506002805460ff191660ff831617905561039a6107f9565b6006556103a5610812565b60075550506009805460ff1916600117905550565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000198114610416576103f181846108b5565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604090205461043990846108b5565b6001600160a01b0380871660009081526004602052604080822093909355908616815220546104689084610918565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104bc9087815260200190565b60405180910390a3506001949350505050565b60006006546104dc6107f9565b146104ee576104e9610812565b905090565b5060075490565b60606001805461022b90610c34565b3360009081526004602052604081205461051e90836108b5565b33600090815260046020526040808220929092556001600160a01b0385168152205461054a9083610918565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103099086815260200190565b428410156105eb5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610360565b600060016105f76104cf565b6001600160a01b038a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061064583610d92565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016106be92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561071c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107525750876001600160a01b0316816001600160a01b0316145b61078f5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610360565b6001600160a01b0381811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b60006109778061080b63ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516108449190610dab565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66108756107f9565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000818310156109075760405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152606401610360565b6109118284610e20565b9392505050565b6000806109258385610e33565b9050838110156109115760405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152606401610360565b4690565b602081526000825180602084015260005b818110156109a9576020818601810151604086840101520161098c565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146109e057600080fd5b919050565b600080604083850312156109f857600080fd5b610a01836109c9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a3657600080fd5b813567ffffffffffffffff811115610a5057610a50610a0f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610a7f57610a7f610a0f565b604052818152838201602001851015610a9757600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff811681146109e057600080fd5b600080600060608486031215610ada57600080fd5b833567ffffffffffffffff811115610af157600080fd5b610afd86828701610a25565b935050602084013567ffffffffffffffff811115610b1a57600080fd5b610b2686828701610a25565b925050610b3560408501610ab4565b90509250925092565b600080600060608486031215610b5357600080fd5b610b5c846109c9565b9250610b6a602085016109c9565b929592945050506040919091013590565b600060208284031215610b8d57600080fd5b610911826109c9565b600080600080600080600060e0888a031215610bb157600080fd5b610bba886109c9565b9650610bc8602089016109c9565b95506040880135945060608801359350610be460808901610ab4565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610c1457600080fd5b610c1d836109c9565b9150610c2b602084016109c9565b90509250929050565b600181811c90821680610c4857607f821691505b602082108103610c6857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610cb857806000526020600020601f840160051c81016020851015610c955750805b601f840160051c820191505b81811015610cb55760008155600101610ca1565b50505b505050565b815167ffffffffffffffff811115610cd757610cd7610a0f565b610ceb81610ce58454610c34565b84610c6e565b6020601f821160018114610d1f5760008315610d075750848201515b600019600385901b1c1916600184901b178455610cb5565b600084815260208120601f198516915b82811015610d4f5787850151825560209485019460019092019101610d2f565b5084821015610d6d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201610da457610da4610d7c565b5060010190565b6000808354610db981610c34565b600182168015610dd05760018114610de557610e15565b60ff1983168652811515820286019350610e15565b86600052602060002060005b83811015610e0d57815488820152600190910190602001610df1565b505081860193505b509195945050505050565b8181038181111561031557610315610d7c565b8082018082111561031557610315610d7c56fea26469706673582212200be1833ca3b58d453badd22cc8310919bbeb95806556a32802ba464d745702d964736f6c634300081a0033","sourceMap":"369:7950:20:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101b5578063a9059cbb146101bd578063d505accf146101d0578063dd62ed3e146101e357600080fd5b80633644e5151461016457806370a082311461016c5780637ecebe001461019557600080fd5b806306fdde03146100d4578063095ea7b3146100f25780631624f6c61461011557806318160ddd1461012a57806323b872dd1461013c578063313ce5671461014f575b600080fd5b6100dc61021c565b6040516100e9919061097b565b60405180910390f35b6101056101003660046109e5565b6102ae565b60405190151581526020016100e9565b610128610123366004610ac5565b61031b565b005b6003545b6040519081526020016100e9565b61010561014a366004610b3e565b6103ba565b60025460405160ff90911681526020016100e9565b61012e6104cf565b61012e61017a366004610b7b565b6001600160a01b031660009081526004602052604090205490565b61012e6101a3366004610b7b565b60086020526000908152604090205481565b6100dc6104f5565b6101056101cb3660046109e5565b610504565b6101286101de366004610b96565b61059b565b61012e6101f1366004610c01565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60606000805461022b90610c34565b80601f016020809104026020016040519081016040528092919081815260200182805461025790610c34565b80156102a45780601f10610279576101008083540402835291602001916102a4565b820191906000526020600020905b81548152906001019060200180831161028757829003601f168201915b5050505050905090565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103099086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103695760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b60448201526064015b60405180910390fd5b60006103758482610cbd565b5060016103828382610cbd565b506002805460ff191660ff831617905561039a6107f9565b6006556103a5610812565b60075550506009805460ff1916600117905550565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000198114610416576103f181846108b5565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604090205461043990846108b5565b6001600160a01b0380871660009081526004602052604080822093909355908616815220546104689084610918565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104bc9087815260200190565b60405180910390a3506001949350505050565b60006006546104dc6107f9565b146104ee576104e9610812565b905090565b5060075490565b60606001805461022b90610c34565b3360009081526004602052604081205461051e90836108b5565b33600090815260046020526040808220929092556001600160a01b0385168152205461054a9083610918565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103099086815260200190565b428410156105eb5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610360565b600060016105f76104cf565b6001600160a01b038a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061064583610d92565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016106be92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561071c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107525750876001600160a01b0316816001600160a01b0316145b61078f5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610360565b6001600160a01b0381811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b60006109778061080b63ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516108449190610dab565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66108756107f9565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000818310156109075760405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152606401610360565b6109118284610e20565b9392505050565b6000806109258385610e33565b9050838110156109115760405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152606401610360565b4690565b602081526000825180602084015260005b818110156109a9576020818601810151604086840101520161098c565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146109e057600080fd5b919050565b600080604083850312156109f857600080fd5b610a01836109c9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a3657600080fd5b813567ffffffffffffffff811115610a5057610a50610a0f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610a7f57610a7f610a0f565b604052818152838201602001851015610a9757600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff811681146109e057600080fd5b600080600060608486031215610ada57600080fd5b833567ffffffffffffffff811115610af157600080fd5b610afd86828701610a25565b935050602084013567ffffffffffffffff811115610b1a57600080fd5b610b2686828701610a25565b925050610b3560408501610ab4565b90509250925092565b600080600060608486031215610b5357600080fd5b610b5c846109c9565b9250610b6a602085016109c9565b929592945050506040919091013590565b600060208284031215610b8d57600080fd5b610911826109c9565b600080600080600080600060e0888a031215610bb157600080fd5b610bba886109c9565b9650610bc8602089016109c9565b95506040880135945060608801359350610be460808901610ab4565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610c1457600080fd5b610c1d836109c9565b9150610c2b602084016109c9565b90509250929050565b600181811c90821680610c4857607f821691505b602082108103610c6857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610cb857806000526020600020601f840160051c81016020851015610c955750805b601f840160051c820191505b81811015610cb55760008155600101610ca1565b50505b505050565b815167ffffffffffffffff811115610cd757610cd7610a0f565b610ceb81610ce58454610c34565b84610c6e565b6020601f821160018114610d1f5760008315610d075750848201515b600019600385901b1c1916600184901b178455610cb5565b600084815260208120601f198516915b82811015610d4f5787850151825560209485019460019092019101610d2f565b5084821015610d6d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201610da457610da4610d7c565b5060010190565b6000808354610db981610c34565b600182168015610dd05760018114610de557610e15565b60ff1983168652811515820286019350610e15565b86600052602060002060005b83811015610e0d57815488820152600190910190602001610df1565b505081860193505b509195945050505050565b8181038181111561031557610315610d7c565b8082018082111561031557610315610d7c56fea26469706673582212200be1833ca3b58d453badd22cc8310919bbeb95806556a32802ba464d745702d964736f6c634300081a0033","sourceMap":"369:7950:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;677:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3057:221;;;;;;:::i;:::-;;:::i;:::-;;;1194:14:28;;1187:22;1169:41;;1157:2;1142:18;3057:221:20;1029:187:28;2504:365:20;;;;;;:::i;:::-;;:::i;:::-;;1322:100;1403:12;;1322:100;;;3004:25:28;;;2992:2;2977:18;1322:100:20;2858:177:28;3578:472:20;;;;;;:::i;:::-;;:::i;877:92::-;953:9;;877:92;;953:9;;;;3561:36:28;;3549:2;3534:18;877:92:20;3419:184:28;5427:178:20;;;:::i;1428:116::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1520:17:20;1494:7;1520:17;;;:10;:17;;;;;;;1428:116;1970:41;;;;;;:::i;:::-;;;;;;;;;;;;;;775:96;;;:::i;3284:288::-;;;;;;:::i;:::-;;:::i;4239:1182::-;;;;;;:::i;:::-;;:::i;1550:142::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1659:17:20;;;1633:7;1659:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;1550:142;677:92;725:13;757:5;750:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;677:92;:::o;3057:221::-;3167:10;3140:4;3156:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3156:31:20;;;;;;;;;;:40;;;3212:37;3140:4;;3156:31;;3212:37;;;;3190:6;3004:25:28;;2992:2;2977:18;;2858:177;3212:37:20;;;;;;;;-1:-1:-1;3267:4:20;3057:221;;;;;:::o;2504:365::-;2611:11;;;;2610:12;2602:44;;;;-1:-1:-1;;;2602:44:20;;5646:2:28;2602:44:20;;;5628:21:28;5685:2;5665:18;;;5658:30;-1:-1:-1;;;5704:18:28;;;5697:49;5763:18;;2602:44:20;;;;;;;;;2657:5;:13;2665:5;2657;:13;:::i;:::-;-1:-1:-1;2680:7:20;:17;2690:7;2680;:17;:::i;:::-;-1:-1:-1;2707:9:20;:21;;-1:-1:-1;;2707:21:20;;;;;;;2758:14;:12;:14::i;:::-;2739:16;:33;2809:24;:22;:24::i;:::-;2782;:51;-1:-1:-1;;2844:11:20;:18;;-1:-1:-1;;2844:18:20;2858:4;2844:18;;;-1:-1:-1;2504:365:20:o;3578:472::-;-1:-1:-1;;;;;3709:16:20;;3675:4;3709:16;;;:10;:16;;;;;;;;3726:10;3709:28;;;;;;;;-1:-1:-1;;3788:22:20;;3784:80;;3843:21;3848:7;3857:6;3843:4;:21::i;:::-;-1:-1:-1;;;;;3812:16:20;;;;;;:10;:16;;;;;;;;3829:10;3812:28;;;;;;;:52;3784:80;-1:-1:-1;;;;;3899:16:20;;;;;;:10;:16;;;;;;3894:30;;3917:6;3894:4;:30::i;:::-;-1:-1:-1;;;;;3875:16:20;;;;;;;:10;:16;;;;;;:49;;;;3956:14;;;;;;;3951:28;;3972:6;3951:4;:28::i;:::-;-1:-1:-1;;;;;3934:14:20;;;;;;;:10;:14;;;;;;;:45;;;;3995:26;;;;;;;;;;4014:6;3004:25:28;;2992:2;2977:18;;2858:177;3995:26:20;;;;;;;;-1:-1:-1;4039:4:20;;3578:472;-1:-1:-1;;;;3578:472:20:o;5427:178::-;5484:7;5528:16;;5510:14;:12;:14::i;:::-;:34;:88;;5574:24;:22;:24::i;:::-;5503:95;;5427:178;:::o;5510:88::-;-1:-1:-1;5547:24:20;;;5427:178::o;775:96::-;825:13;857:7;850:14;;;;;:::i;3284:288::-;3420:10;3363:4;3409:22;;;:10;:22;;;;;;3404:36;;3433:6;3404:4;:36::i;:::-;3390:10;3379:22;;;;:10;:22;;;;;;:61;;;;-1:-1:-1;;;;;3472:14:20;;;;;;3467:28;;3488:6;3467:4;:28::i;:::-;-1:-1:-1;;;;;3450:14:20;;;;;;:10;:14;;;;;;;:45;;;;3511:32;;3520:10;;3511:32;;;;3536:6;3004:25:28;;2992:2;2977:18;;2858:177;4239:1182:20;4416:15;4404:8;:27;;4396:63;;;;-1:-1:-1;;;4396:63:20;;8118:2:28;4396:63:20;;;8100:21:28;8157:2;8137:18;;;8130:30;8196:25;8176:18;;;8169:53;8239:18;;4396:63:20;7916:347:28;4396:63:20;4470:24;4497:717;4617:18;:16;:18::i;:::-;-1:-1:-1;;;;;5026:13:20;;;;;;:6;:13;;;;;:15;;4732:157;;4919:5;;4954:7;;4991:5;;5026:15;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;4692:413:20;;;;;;8827:25:28;;;;-1:-1:-1;;;;;8888:32:28;;;8868:18;;;8861:60;8957:32;;;;8937:18;;;8930:60;9006:18;;;8999:34;9049:19;;;9042:35;9093:19;;;9086:35;;;8799:19;;4692:413:20;;;;;;;;;;;;4657:470;;;;;;4547:598;;;;;;;;-1:-1:-1;;;9390:27:28;;9442:1;9433:11;;9426:27;;;;9478:2;9469:12;;9462:28;9515:2;9506:12;;9132:392;4547:598:20;;;;-1:-1:-1;;4547:598:20;;;;;;;;;4520:639;;4547:598;4520:639;;;;4497:717;;;;;;;;;9756:25:28;9829:4;9817:17;;9797:18;;;9790:45;9851:18;;;9844:34;;;9894:18;;;9887:34;;;9728:19;;4497:717:20;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4497:717:20;;-1:-1:-1;;4497:717:20;;;-1:-1:-1;;;;;;;5233:30:20;;;;;;:59;;;5287:5;-1:-1:-1;;;;;5267:25:20;:16;-1:-1:-1;;;;;5267:25:20;;5233:59;5225:86;;;;-1:-1:-1;;;5225:86:20;;10134:2:28;5225:86:20;;;10116:21:28;10173:2;10153:18;;;10146:30;-1:-1:-1;;;10192:18:28;;;10185:44;10246:18;;5225:86:20;9932:338:28;5225:86:20;-1:-1:-1;;;;;5322:28:20;;;;;;;:10;:28;;;;;;;;:37;;;;;;;;;;;;;:45;;;5383:31;3004:25:28;;;5322:37:20;;5383:31;;;;;2977:18:28;5383:31:20;;;;;;;4386:1035;4239:1182;;;;;;;:::o;8017:300::-;8063:15;8140:12;;8297:13;;;;:::i;:::-;8287:23;;8080:237;;8017:300;:::o;5611:404::-;5676:7;5753:95;5882:5;5866:23;;;;;;:::i;:::-;;;;;;;;5907:14;5939;:12;:14::i;:::-;5725:273;;;;;;11338:25:28;;;;11379:18;;11372:34;;;;11422:18;;;11415:34;11465:18;;;11458:34;5979:4:20;11508:19:28;;;11501:61;11310:19;;5725:273:20;;;;;;;;;;;;5702:306;;;;;;5695:313;;5611:404;:::o;7038:154::-;7097:7;7129:1;7124;:6;;7116:47;;;;-1:-1:-1;;;7116:47:20;;11775:2:28;7116:47:20;;;11757:21:28;11814:2;11794:18;;;11787:30;11853;11833:18;;;11826:58;11901:18;;7116:47:20;11573:352:28;7116:47:20;7180:5;7184:1;7180;:5;:::i;:::-;7173:12;7038:154;-1:-1:-1;;;7038:154:20:o;6859:173::-;6918:7;;6949:5;6953:1;6949;:5;:::i;:::-;6937:17;;6977:1;6972;:6;;6964:43;;;;-1:-1:-1;;;6964:43:20;;12395:2:28;6964:43:20;;;12377:21:28;12434:2;12414:18;;;12407:30;12473:26;12453:18;;;12446:54;12517:18;;6964:43:20;12193:348:28;7735:276:20;7918:9;;7735:276::o;14:527:28:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:173::-;614:20;;-1:-1:-1;;;;;663:31:28;;653:42;;643:70;;709:1;706;699:12;643:70;546:173;;;:::o;724:300::-;792:6;800;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;892:29;911:9;892:29;:::i;:::-;882:39;990:2;975:18;;;;962:32;;-1:-1:-1;;;724:300:28:o;1221:127::-;1282:10;1277:3;1273:20;1270:1;1263:31;1313:4;1310:1;1303:15;1337:4;1334:1;1327:15;1353:726;1396:5;1449:3;1442:4;1434:6;1430:17;1426:27;1416:55;;1467:1;1464;1457:12;1416:55;1507:6;1494:20;1537:18;1529:6;1526:30;1523:56;;;1559:18;;:::i;:::-;1608:2;1602:9;1700:2;1662:17;;-1:-1:-1;;1658:31:28;;;1691:2;1654:40;1650:54;1638:67;;1735:18;1720:34;;1756:22;;;1717:62;1714:88;;;1782:18;;:::i;:::-;1818:2;1811:22;1842;;;1883:19;;;1904:4;1879:30;1876:39;-1:-1:-1;1873:59:28;;;1928:1;1925;1918:12;1873:59;1992:6;1985:4;1977:6;1973:17;1966:4;1958:6;1954:17;1941:58;2047:1;2019:19;;;2040:4;2015:30;2008:41;;;;2023:6;1353:726;-1:-1:-1;;;1353:726:28:o;2084:156::-;2150:20;;2210:4;2199:16;;2189:27;;2179:55;;2230:1;2227;2220:12;2245:608;2340:6;2348;2356;2409:2;2397:9;2388:7;2384:23;2380:32;2377:52;;;2425:1;2422;2415:12;2377:52;2465:9;2452:23;2498:18;2490:6;2487:30;2484:50;;;2530:1;2527;2520:12;2484:50;2553;2595:7;2586:6;2575:9;2571:22;2553:50;:::i;:::-;2543:60;;;2656:2;2645:9;2641:18;2628:32;2685:18;2675:8;2672:32;2669:52;;;2717:1;2714;2707:12;2669:52;2740;2784:7;2773:8;2762:9;2758:24;2740:52;:::i;:::-;2730:62;;;2811:36;2843:2;2832:9;2828:18;2811:36;:::i;:::-;2801:46;;2245:608;;;;;:::o;3040:374::-;3117:6;3125;3133;3186:2;3174:9;3165:7;3161:23;3157:32;3154:52;;;3202:1;3199;3192:12;3154:52;3225:29;3244:9;3225:29;:::i;:::-;3215:39;;3273:38;3307:2;3296:9;3292:18;3273:38;:::i;:::-;3040:374;;3263:48;;-1:-1:-1;;;3380:2:28;3365:18;;;;3352:32;;3040:374::o;3790:186::-;3849:6;3902:2;3890:9;3881:7;3877:23;3873:32;3870:52;;;3918:1;3915;3908:12;3870:52;3941:29;3960:9;3941:29;:::i;3981:808::-;4092:6;4100;4108;4116;4124;4132;4140;4193:3;4181:9;4172:7;4168:23;4164:33;4161:53;;;4210:1;4207;4200:12;4161:53;4233:29;4252:9;4233:29;:::i;:::-;4223:39;;4281:38;4315:2;4304:9;4300:18;4281:38;:::i;:::-;4271:48;-1:-1:-1;4388:2:28;4373:18;;4360:32;;-1:-1:-1;4489:2:28;4474:18;;4461:32;;-1:-1:-1;4538:37:28;4570:3;4555:19;;4538:37;:::i;:::-;3981:808;;;;-1:-1:-1;3981:808:28;;;;4528:47;4648:3;4633:19;;4620:33;;-1:-1:-1;4752:3:28;4737:19;;;4724:33;;3981:808;-1:-1:-1;;3981:808:28:o;4794:260::-;4862:6;4870;4923:2;4911:9;4902:7;4898:23;4894:32;4891:52;;;4939:1;4936;4929:12;4891:52;4962:29;4981:9;4962:29;:::i;:::-;4952:39;;5010:38;5044:2;5033:9;5029:18;5010:38;:::i;:::-;5000:48;;4794:260;;;;;:::o;5059:380::-;5138:1;5134:12;;;;5181;;;5202:61;;5256:4;5248:6;5244:17;5234:27;;5202:61;5309:2;5301:6;5298:14;5278:18;5275:38;5272:161;;5355:10;5350:3;5346:20;5343:1;5336:31;5390:4;5387:1;5380:15;5418:4;5415:1;5408:15;5272:161;;5059:380;;;:::o;5918:518::-;6020:2;6015:3;6012:11;6009:421;;;6056:5;6053:1;6046:16;6100:4;6097:1;6087:18;6170:2;6158:10;6154:19;6151:1;6147:27;6141:4;6137:38;6206:4;6194:10;6191:20;6188:47;;;-1:-1:-1;6229:4:28;6188:47;6284:2;6279:3;6275:12;6272:1;6268:20;6262:4;6258:31;6248:41;;6339:81;6357:2;6350:5;6347:13;6339:81;;;6416:1;6402:16;;6383:1;6372:13;6339:81;;;6343:3;;6009:421;5918:518;;;:::o;6612:1299::-;6738:3;6732:10;6765:18;6757:6;6754:30;6751:56;;;6787:18;;:::i;:::-;6816:97;6906:6;6866:38;6898:4;6892:11;6866:38;:::i;:::-;6860:4;6816:97;:::i;:::-;6962:4;6993:2;6982:14;;7010:1;7005:649;;;;7698:1;7715:6;7712:89;;;-1:-1:-1;7767:19:28;;;7761:26;7712:89;-1:-1:-1;;6569:1:28;6565:11;;;6561:24;6557:29;6547:40;6593:1;6589:11;;;6544:57;7814:81;;6975:930;;7005:649;5865:1;5858:14;;;5902:4;5889:18;;-1:-1:-1;;7041:20:28;;;7159:222;7173:7;7170:1;7167:14;7159:222;;;7255:19;;;7249:26;7234:42;;7362:4;7347:20;;;;7315:1;7303:14;;;;7189:12;7159:222;;;7163:3;7409:6;7400:7;7397:19;7394:201;;;7470:19;;;7464:26;-1:-1:-1;;7553:1:28;7549:14;;;7565:3;7545:24;7541:37;7537:42;7522:58;7507:74;;7394:201;-1:-1:-1;;;;7641:1:28;7625:14;;;7621:22;7608:36;;-1:-1:-1;6612:1299:28:o;8268:127::-;8329:10;8324:3;8320:20;8317:1;8310:31;8360:4;8357:1;8350:15;8384:4;8381:1;8374:15;8400:135;8439:3;8460:17;;;8457:43;;8480:18;;:::i;:::-;-1:-1:-1;8527:1:28;8516:13;;8400:135::o;10275:799::-;10405:3;10434:1;10467:6;10461:13;10497:36;10523:9;10497:36;:::i;:::-;10564:1;10549:17;;10575:133;;;;10722:1;10717:332;;;;10542:507;;10575:133;-1:-1:-1;;10608:24:28;;10596:37;;10681:14;;10674:22;10662:35;;10653:45;;;-1:-1:-1;10575:133:28;;10717:332;10748:6;10745:1;10738:17;10796:4;10793:1;10783:18;10823:1;10837:166;10851:6;10848:1;10845:13;10837:166;;;10931:14;;10918:11;;;10911:35;10987:1;10974:15;;;;10873:4;10866:12;10837:166;;;10841:3;;11032:6;11027:3;11023:16;11016:23;;10542:507;-1:-1:-1;11065:3:28;;10275:799;-1:-1:-1;;;;;10275:799:28:o;11930:128::-;11997:9;;;12018:11;;;12015:37;;;12032:18;;:::i;12063:125::-;12128:9;;;12149:10;;;12146:36;;;12162:18;;:::i","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","initialize(string,string,uint8)":"1624f6c6","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"},\"initialize(string,string,uint8)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"notice\":\"This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"},"initialize(string,string,uint8)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC20.sol":"MockERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/MockERC721.sol/MockERC721.json b/08-Crowdfunding dApp on Core/out/MockERC721.sol/MockERC721.json new file mode 100644 index 00000000..a0989cb5 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/MockERC721.sol/MockERC721.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50610f838061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610a33565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610a9d565b34801561014557600080fd5b5061016f610154366004610ab0565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610ae0565b6103c6565b005b61019a6101aa366004610b0a565b6104ad565b61019a6101bd366004610b0a565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610bf7565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610ab0565b610809565b34801561020e57600080fd5b5061022261021d366004610c60565b610860565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108c3565b34801561025157600080fd5b5061019a610260366004610c7b565b6108d2565b61019a610273366004610cb7565b61093e565b34801561028457600080fd5b5061012c610293366004610ab0565b50606090565b3480156102a557600080fd5b506101026102b4366004610d33565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610d66565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610d66565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610db6565b90915550506001600160a01b038216600090815260036020526040812080549161063283610dcd565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610de6565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b60006107ea8382610e51565b5060016107f78282610e51565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b03168061085b5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108a75760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610d66565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109498484846104ad565b823b15806109d55750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610986903390899088908890600401610f10565b6020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190610de6565b6001600160e01b031916145b610a145760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b6001600160e01b031981168114610a3057600080fd5b50565b600060208284031215610a4557600080fd5b8135610a5081610a1a565b9392505050565b6000815180845260005b81811015610a7d57602081850181015186830182015201610a61565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a506020830184610a57565b600060208284031215610ac257600080fd5b5035919050565b80356001600160a01b038116811461085b57600080fd5b60008060408385031215610af357600080fd5b610afc83610ac9565b946020939093013593505050565b600080600060608486031215610b1f57600080fd5b610b2884610ac9565b9250610b3660208501610ac9565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff841115610b7857610b78610b47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610ba757610ba7610b47565b604052838152905080828401851015610bbf57600080fd5b83836020830137600060208583010152509392505050565b600082601f830112610be857600080fd5b610a5083833560208501610b5d565b60008060408385031215610c0a57600080fd5b823567ffffffffffffffff811115610c2157600080fd5b610c2d85828601610bd7565b925050602083013567ffffffffffffffff811115610c4a57600080fd5b610c5685828601610bd7565b9150509250929050565b600060208284031215610c7257600080fd5b610a5082610ac9565b60008060408385031215610c8e57600080fd5b610c9783610ac9565b915060208301358015158114610cac57600080fd5b809150509250929050565b60008060008060808587031215610ccd57600080fd5b610cd685610ac9565b9350610ce460208601610ac9565b925060408501359150606085013567ffffffffffffffff811115610d0757600080fd5b8501601f81018713610d1857600080fd5b610d2787823560208401610b5d565b91505092959194509250565b60008060408385031215610d4657600080fd5b610d4f83610ac9565b9150610d5d60208401610ac9565b90509250929050565b600181811c90821680610d7a57607f821691505b602082108103610d9a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610dc557610dc5610da0565b506000190190565b600060018201610ddf57610ddf610da0565b5060010190565b600060208284031215610df857600080fd5b8151610a5081610a1a565b601f82111561079057806000526020600020601f840160051c81016020851015610e2a5750805b601f840160051c820191505b81811015610e4a5760008155600101610e36565b5050505050565b815167ffffffffffffffff811115610e6b57610e6b610b47565b610e7f81610e798454610d66565b84610e03565b6020601f821160018114610eb35760008315610e9b5750848201515b600019600385901b1c1916600184901b178455610e4a565b600084815260208120601f198516915b82811015610ee35787850151825560209485019460019092019101610ec3565b5084821015610f015786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f4390830184610a57565b969550505050505056fea2646970667358221220d4269184a7ba4a0e72bb3ef98656d67b0e4a8ec210f21802d041f8fb8c99a18864736f6c634300081a0033","sourceMap":"403:7498:21:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610a33565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610a9d565b34801561014557600080fd5b5061016f610154366004610ab0565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610ae0565b6103c6565b005b61019a6101aa366004610b0a565b6104ad565b61019a6101bd366004610b0a565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610bf7565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610ab0565b610809565b34801561020e57600080fd5b5061022261021d366004610c60565b610860565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108c3565b34801561025157600080fd5b5061019a610260366004610c7b565b6108d2565b61019a610273366004610cb7565b61093e565b34801561028457600080fd5b5061012c610293366004610ab0565b50606090565b3480156102a557600080fd5b506101026102b4366004610d33565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610d66565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610d66565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610db6565b90915550506001600160a01b038216600090815260036020526040812080549161063283610dcd565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610de6565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b60006107ea8382610e51565b5060016107f78282610e51565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b03168061085b5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108a75760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610d66565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109498484846104ad565b823b15806109d55750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610986903390899088908890600401610f10565b6020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190610de6565b6001600160e01b031916145b610a145760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b6001600160e01b031981168114610a3057600080fd5b50565b600060208284031215610a4557600080fd5b8135610a5081610a1a565b9392505050565b6000815180845260005b81811015610a7d57602081850181015186830182015201610a61565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a506020830184610a57565b600060208284031215610ac257600080fd5b5035919050565b80356001600160a01b038116811461085b57600080fd5b60008060408385031215610af357600080fd5b610afc83610ac9565b946020939093013593505050565b600080600060608486031215610b1f57600080fd5b610b2884610ac9565b9250610b3660208501610ac9565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff841115610b7857610b78610b47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610ba757610ba7610b47565b604052838152905080828401851015610bbf57600080fd5b83836020830137600060208583010152509392505050565b600082601f830112610be857600080fd5b610a5083833560208501610b5d565b60008060408385031215610c0a57600080fd5b823567ffffffffffffffff811115610c2157600080fd5b610c2d85828601610bd7565b925050602083013567ffffffffffffffff811115610c4a57600080fd5b610c5685828601610bd7565b9150509250929050565b600060208284031215610c7257600080fd5b610a5082610ac9565b60008060408385031215610c8e57600080fd5b610c9783610ac9565b915060208301358015158114610cac57600080fd5b809150509250929050565b60008060008060808587031215610ccd57600080fd5b610cd685610ac9565b9350610ce460208601610ac9565b925060408501359150606085013567ffffffffffffffff811115610d0757600080fd5b8501601f81018713610d1857600080fd5b610d2787823560208401610b5d565b91505092959194509250565b60008060408385031215610d4657600080fd5b610d4f83610ac9565b9150610d5d60208401610ac9565b90509250929050565b600181811c90821680610d7a57607f821691505b602082108103610d9a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610dc557610dc5610da0565b506000190190565b600060018201610ddf57610ddf610da0565b5060010190565b600060208284031215610df857600080fd5b8151610a5081610a1a565b601f82111561079057806000526020600020601f840160051c81016020851015610e2a5750805b601f840160051c820191505b81811015610e4a5760008155600101610e36565b5050505050565b815167ffffffffffffffff811115610e6b57610e6b610b47565b610e7f81610e798454610d66565b84610e03565b6020601f821160018114610eb35760008315610e9b5750848201515b600019600385901b1c1916600184901b178455610e4a565b600084815260208120601f198516915b82811015610ee35787850151825560209485019460019092019101610ec3565b5084821015610f015786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f4390830184610a57565b969550505050505056fea2646970667358221220d4269184a7ba4a0e72bb3ef98656d67b0e4a8ec210f21802d041f8fb8c99a18864736f6c634300081a0033","sourceMap":"403:7498:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5376:332;;;;;;;;;;-1:-1:-1;5376:332:21;;;;;:::i;:::-;;:::i;:::-;;;565:14:28;;558:22;540:41;;528:2;513:18;5376:332:21;;;;;;;;693:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1949:120::-;;;;;;;;;;-1:-1:-1;1949:120:21;;;;;:::i;:::-;2020:7;2046:16;;;:12;:16;;;;;;-1:-1:-1;;;;;2046:16:21;;1949:120;;;;-1:-1:-1;;;;;1617:32:28;;;1599:51;;1587:2;1572:18;1949:120:21;1453:203:28;3128:301:21;;;;;;:::i;:::-;;:::i;:::-;;3654:693;;;;;;:::i;:::-;;:::i;4353:386::-;;;;;;:::i;:::-;;:::i;2728:212::-;;;;;;;;;;-1:-1:-1;2728:212:21;;;;;:::i;:::-;;:::i;1280:158::-;;;;;;;;;;-1:-1:-1;1280:158:21;;;;;:::i;:::-;;:::i;1444:177::-;;;;;;;;;;-1:-1:-1;1444:177:21;;;;;:::i;:::-;;:::i;:::-;;;4483:25:28;;;4471:2;4456:18;1444:177:21;4337::28;791:96:21;;;;;;;;;;;;;:::i;3435:213::-;;;;;;;;;;-1:-1:-1;3435:213:21;;;;;:::i;:::-;;:::i;4745:443::-;;;;;;:::i;:::-;;:::i;893:85::-;;;;;;;;;;-1:-1:-1;893:85:21;;;;;:::i;:::-;-1:-1:-1;961:13:21;;893:85;2075:161;;;;;;;;;;-1:-1:-1;2075:161:21;;;;;:::i;:::-;-1:-1:-1;;;;;2195:24:21;;;2172:4;2195:24;;;:17;:24;;;;;;;;:34;;;;;;;;;;;;;;;2075:161;5376:332;5461:4;-1:-1:-1;;;;;;;;;5484:25:21;;;;:100;;-1:-1:-1;;;;;;;;;;5559:25:21;;;5484:100;:175;;;-1:-1:-1;;;;;;;;;;5634:25:21;;;5484:175;5477:182;5376:332;-1:-1:-1;;5376:332:21:o;693:92::-;741:13;773:5;766:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:92;:::o;3128:301::-;3216:13;3232:12;;;:8;:12;;;;;;-1:-1:-1;;;;;3232:12:21;3263:10;:19;;;:59;;-1:-1:-1;;;;;;3286:24:21;;;;;;:17;:24;;;;;;;;3311:10;3286:36;;;;;;;;;;3263:59;3255:86;;;;-1:-1:-1;;;3255:86:21;;6441:2:28;3255:86:21;;;6423:21:28;6480:2;6460:18;;;6453:30;-1:-1:-1;;;6499:18:28;;;6492:44;6553:18;;3255:86:21;;;;;;;;;3352:16;;;;:12;:16;;;;;;:26;;-1:-1:-1;;;;;;3352:26:21;-1:-1:-1;;;;;3352:26:21;;;;;;;;;3394:28;;3352:16;;3394:28;;;;;;;3206:223;3128:301;;:::o;3654:693::-;3772:12;;;;:8;:12;;;;;;-1:-1:-1;;;;;3764:20:21;;;3772:12;;3764:20;3756:43;;;;-1:-1:-1;;;3756:43:21;;6784:2:28;3756:43:21;;;6766:21:28;6823:2;6803:18;;;6796:30;-1:-1:-1;;;6842:18:28;;;6835:40;6892:18;;3756:43:21;6582:334:28;3756:43:21;-1:-1:-1;;;;;3818:16:21;;3810:46;;;;-1:-1:-1;;;3810:46:21;;7123:2:28;3810:46:21;;;7105:21:28;7162:2;7142:18;;;7135:30;-1:-1:-1;;;7181:18:28;;;7174:47;7238:18;;3810:46:21;6921:341:28;3810:46:21;3888:10;-1:-1:-1;;;;;3888:18:21;;;;:57;;-1:-1:-1;;;;;;3910:23:21;;;;;;:17;:23;;;;;;;;3934:10;3910:35;;;;;;;;;;3888:57;:91;;;-1:-1:-1;3963:16:21;;;;:12;:16;;;;;;-1:-1:-1;;;;;3963:16:21;3949:10;:30;3888:91;3867:152;;;;-1:-1:-1;;;3867:152:21;;6441:2:28;3867:152:21;;;6423:21:28;6480:2;6460:18;;;6453:30;-1:-1:-1;;;6499:18:28;;;6492:44;6553:18;;3867:152:21;6239:338:28;3867:152:21;-1:-1:-1;;;;;4195:16:21;;;;;;:10;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4224:14:21;;;;;;:10;:14;;;;;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;4251:12:21;;;;:8;:12;;;;;;;;:17;;-1:-1:-1;;;;;4251:17:21;;;-1:-1:-1;;;;;;4251:17:21;;;;;;;;4286:12;:16;;;;;;4279:23;;;;;;;4318:22;;4260:2;;4251:17;;4318:22;;;;;;3654:693;;;:::o;4353:386::-;4459:26;4472:4;4478:2;4482;4459:12;:26::i;:::-;7833:18;;7878:14;;4517:173;;-1:-1:-1;4553:67:21;;-1:-1:-1;;;4553:67:21;;;4595:10;4553:67;;;7947:51:28;-1:-1:-1;;;;;8034:32:28;;;8014:18;;;8007:60;8083:18;;;8076:34;;;8146:3;8126:18;;;8119:31;-1:-1:-1;8166:19:28;;;8159:30;4644:46:21;;4553:41;;;;4644:46;;8206:19:28;;4553:67:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4553:137:21;;4517:173;4496:236;;;;-1:-1:-1;;;4496:236:21;;8692:2:28;4496:236:21;;;8674:21:28;8731:2;8711:18;;;8704:30;-1:-1:-1;;;8750:18:28;;;8743:46;8806:18;;4496:236:21;8490:340:28;4496:236:21;4353:386;;;:::o;2728:212::-;2818:11;;;;2817:12;2809:44;;;;-1:-1:-1;;;2809:44:21;;9037:2:28;2809:44:21;;;9019:21:28;9076:2;9056:18;;;9049:30;-1:-1:-1;;;9095:18:28;;;9088:49;9154:18;;2809:44:21;8835:343:28;2809:44:21;2864:5;:13;2872:5;2864;:13;:::i;:::-;-1:-1:-1;2887:7:21;:17;2897:7;2887;:17;:::i;:::-;-1:-1:-1;;2915:11:21;:18;;-1:-1:-1;;2915:18:21;2929:4;2915:18;;;-1:-1:-1;2728:212:21:o;1280:158::-;1347:13;1389:12;;;:8;:12;;;;;;-1:-1:-1;;;;;1389:12:21;;1372:59;;;;-1:-1:-1;;;1372:59:21;;11509:2:28;1372:59:21;;;11491:21:28;11548:2;11528:18;;;11521:30;-1:-1:-1;;;11567:18:28;;;11560:40;11617:18;;1372:59:21;11307:334:28;1372:59:21;1280:158;;;:::o;1444:177::-;1516:7;-1:-1:-1;;;;;1543:19:21;;1535:44;;;;-1:-1:-1;;;1535:44:21;;11848:2:28;1535:44:21;;;11830:21:28;11887:2;11867:18;;;11860:30;-1:-1:-1;;;11906:18:28;;;11899:42;11958:18;;1535:44:21;11646:336:28;1535:44:21;-1:-1:-1;;;;;;1597:17:21;;;;;:10;:17;;;;;;;1444:177::o;791:96::-;841:13;873:7;866:14;;;;;:::i;3435:213::-;3547:10;3529:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;3529:39:21;;;;;;;;;;;;:50;;-1:-1:-1;;3529:50:21;;;;;;;;;;3595:46;;540:41:28;;;3529:39:21;;3547:10;3595:46;;513:18:28;3595:46:21;;;;;;;3435:213;;:::o;4745:443::-;4906:26;4919:4;4925:2;4929;4906:12;:26::i;:::-;7833:18;;7878:14;;4964:175;;-1:-1:-1;5000:69:21;;-1:-1:-1;;;5000:69:21;;;5093:46;-1:-1:-1;;;;;5000:41:21;;;5093:46;;5000:69;;5042:10;;5054:4;;5060:2;;5064:4;;5000:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5000:139:21;;4964:175;4943:238;;;;-1:-1:-1;;;4943:238:21;;8692:2:28;4943:238:21;;;8674:21:28;8731:2;8711:18;;;8704:30;-1:-1:-1;;;8750:18:28;;;8743:46;8806:18;;4943:238:21;8490:340:28;4943:238:21;4745:443;;;;:::o;14:131:28:-;-1:-1:-1;;;;;;88:32:28;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;150:245::-;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:28:o;592:400::-;634:3;672:5;666:12;699:6;694:3;687:19;724:1;734:139;748:6;745:1;742:13;734:139;;;856:4;841:13;;;837:24;;831:31;811:11;;;807:22;;800:63;763:12;734:139;;;738:3;918:1;911:4;902:6;897:3;893:16;889:27;882:38;981:4;974:2;970:7;965:2;957:6;953:15;949:29;944:3;940:39;936:50;929:57;;;592:400;;;;:::o;997:220::-;1146:2;1135:9;1128:21;1109:4;1166:45;1207:2;1196:9;1192:18;1184:6;1166:45;:::i;1222:226::-;1281:6;1334:2;1322:9;1313:7;1309:23;1305:32;1302:52;;;1350:1;1347;1340:12;1302:52;-1:-1:-1;1395:23:28;;1222:226;-1:-1:-1;1222:226:28:o;1661:173::-;1729:20;;-1:-1:-1;;;;;1778:31:28;;1768:42;;1758:70;;1824:1;1821;1814:12;1839:300;1907:6;1915;1968:2;1956:9;1947:7;1943:23;1939:32;1936:52;;;1984:1;1981;1974:12;1936:52;2007:29;2026:9;2007:29;:::i;:::-;1997:39;2105:2;2090:18;;;;2077:32;;-1:-1:-1;;;1839:300:28:o;2144:374::-;2221:6;2229;2237;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:29;2348:9;2329:29;:::i;:::-;2319:39;;2377:38;2411:2;2400:9;2396:18;2377:38;:::i;:::-;2144:374;;2367:48;;-1:-1:-1;;;2484:2:28;2469:18;;;;2456:32;;2144:374::o;2523:127::-;2584:10;2579:3;2575:20;2572:1;2565:31;2615:4;2612:1;2605:15;2639:4;2636:1;2629:15;2655:716;2720:5;2752:1;2776:18;2768:6;2765:30;2762:56;;;2798:18;;:::i;:::-;-1:-1:-1;2953:2:28;2947:9;-1:-1:-1;;2866:2:28;2845:15;;2841:29;;3011:2;2999:15;2995:29;2983:42;;3076:22;;;3055:18;3040:34;;3037:62;3034:88;;;3102:18;;:::i;:::-;3138:2;3131:22;3186;;;3171:6;-1:-1:-1;3171:6:28;3223:16;;;3220:25;-1:-1:-1;3217:45:28;;;3258:1;3255;3248:12;3217:45;3308:6;3303:3;3296:4;3288:6;3284:17;3271:44;3363:1;3356:4;3347:6;3339;3335:19;3331:30;3324:41;;2655:716;;;;;:::o;3376:222::-;3419:5;3472:3;3465:4;3457:6;3453:17;3449:27;3439:55;;3490:1;3487;3480:12;3439:55;3512:80;3588:3;3579:6;3566:20;3559:4;3551:6;3547:17;3512:80;:::i;3603:538::-;3691:6;3699;3752:2;3740:9;3731:7;3727:23;3723:32;3720:52;;;3768:1;3765;3758:12;3720:52;3808:9;3795:23;3841:18;3833:6;3830:30;3827:50;;;3873:1;3870;3863:12;3827:50;3896;3938:7;3929:6;3918:9;3914:22;3896:50;:::i;:::-;3886:60;;;3999:2;3988:9;3984:18;3971:32;4028:18;4018:8;4015:32;4012:52;;;4060:1;4057;4050:12;4012:52;4083;4127:7;4116:8;4105:9;4101:24;4083:52;:::i;:::-;4073:62;;;3603:538;;;;;:::o;4146:186::-;4205:6;4258:2;4246:9;4237:7;4233:23;4229:32;4226:52;;;4274:1;4271;4264:12;4226:52;4297:29;4316:9;4297:29;:::i;4519:347::-;4584:6;4592;4645:2;4633:9;4624:7;4620:23;4616:32;4613:52;;;4661:1;4658;4651:12;4613:52;4684:29;4703:9;4684:29;:::i;:::-;4674:39;;4763:2;4752:9;4748:18;4735:32;4810:5;4803:13;4796:21;4789:5;4786:32;4776:60;;4832:1;4829;4822:12;4776:60;4855:5;4845:15;;;4519:347;;;;;:::o;4871:713::-;4966:6;4974;4982;4990;5043:3;5031:9;5022:7;5018:23;5014:33;5011:53;;;5060:1;5057;5050:12;5011:53;5083:29;5102:9;5083:29;:::i;:::-;5073:39;;5131:38;5165:2;5154:9;5150:18;5131:38;:::i;:::-;5121:48;-1:-1:-1;5238:2:28;5223:18;;5210:32;;-1:-1:-1;5317:2:28;5302:18;;5289:32;5344:18;5333:30;;5330:50;;;5376:1;5373;5366:12;5330:50;5399:22;;5452:4;5444:13;;5440:27;-1:-1:-1;5430:55:28;;5481:1;5478;5471:12;5430:55;5504:74;5570:7;5565:2;5552:16;5547:2;5543;5539:11;5504:74;:::i;:::-;5494:84;;;4871:713;;;;;;;:::o;5589:260::-;5657:6;5665;5718:2;5706:9;5697:7;5693:23;5689:32;5686:52;;;5734:1;5731;5724:12;5686:52;5757:29;5776:9;5757:29;:::i;:::-;5747:39;;5805:38;5839:2;5828:9;5824:18;5805:38;:::i;:::-;5795:48;;5589:260;;;;;:::o;5854:380::-;5933:1;5929:12;;;;5976;;;5997:61;;6051:4;6043:6;6039:17;6029:27;;5997:61;6104:2;6096:6;6093:14;6073:18;6070:38;6067:161;;6150:10;6145:3;6141:20;6138:1;6131:31;6185:4;6182:1;6175:15;6213:4;6210:1;6203:15;6067:161;;5854:380;;;:::o;7267:127::-;7328:10;7323:3;7319:20;7316:1;7309:31;7359:4;7356:1;7349:15;7383:4;7380:1;7373:15;7399:136;7438:3;7466:5;7456:39;;7475:18;;:::i;:::-;-1:-1:-1;;;7511:18:28;;7399:136::o;7540:135::-;7579:3;7600:17;;;7597:43;;7620:18;;:::i;:::-;-1:-1:-1;7667:1:28;7656:13;;7540:135::o;8236:249::-;8305:6;8358:2;8346:9;8337:7;8333:23;8329:32;8326:52;;;8374:1;8371;8364:12;8326:52;8406:9;8400:16;8425:30;8449:5;8425:30;:::i;9309:518::-;9411:2;9406:3;9403:11;9400:421;;;9447:5;9444:1;9437:16;9491:4;9488:1;9478:18;9561:2;9549:10;9545:19;9542:1;9538:27;9532:4;9528:38;9597:4;9585:10;9582:20;9579:47;;;-1:-1:-1;9620:4:28;9579:47;9675:2;9670:3;9666:12;9663:1;9659:20;9653:4;9649:31;9639:41;;9730:81;9748:2;9741:5;9738:13;9730:81;;;9807:1;9793:16;;9774:1;9763:13;9730:81;;;9734:3;;9309:518;;;:::o;10003:1299::-;10129:3;10123:10;10156:18;10148:6;10145:30;10142:56;;;10178:18;;:::i;:::-;10207:97;10297:6;10257:38;10289:4;10283:11;10257:38;:::i;:::-;10251:4;10207:97;:::i;:::-;10353:4;10384:2;10373:14;;10401:1;10396:649;;;;11089:1;11106:6;11103:89;;;-1:-1:-1;11158:19:28;;;11152:26;11103:89;-1:-1:-1;;9960:1:28;9956:11;;;9952:24;9948:29;9938:40;9984:1;9980:11;;;9935:57;11205:81;;10366:930;;10396:649;9256:1;9249:14;;;9293:4;9280:18;;-1:-1:-1;;10432:20:28;;;10550:222;10564:7;10561:1;10558:14;10550:222;;;10646:19;;;10640:26;10625:42;;10753:4;10738:20;;;;10706:1;10694:14;;;;10580:12;10550:222;;;10554:3;10800:6;10791:7;10788:19;10785:201;;;10861:19;;;10855:26;-1:-1:-1;;10944:1:28;10940:14;;;10956:3;10936:24;10932:37;10928:42;10913:58;10898:74;;10785:201;-1:-1:-1;;;;11032:1:28;11016:14;;;11012:22;10999:36;;-1:-1:-1;10003:1299:28:o;11987:485::-;-1:-1:-1;;;;;12218:32:28;;;12200:51;;12287:32;;12282:2;12267:18;;12260:60;12351:2;12336:18;;12329:34;;;12399:3;12394:2;12379:18;;12372:31;;;-1:-1:-1;;12420:46:28;;12446:19;;12438:6;12420:46;:::i;:::-;12412:54;11987:485;-1:-1:-1;;;;;;11987:485:28:o","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","initialize(string,string)":"4cd88b76","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"initialize(string,string)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"}},\"notice\":\"This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"MockERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"initialize(string,string)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"MockERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdAssertions.sol/StdAssertions.json b/08-Crowdfunding dApp on Core/out/StdAssertions.sol/StdAssertions.json new file mode 100644 index 00000000..917dab09 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdAssertions.sol/StdAssertions.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":1} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdChains.sol/StdChains.json b/08-Crowdfunding dApp on Core/out/StdChains.sol/StdChains.json new file mode 100644 index 00000000..bcee958a --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdChains.sol/StdChains.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":2} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheats.json b/08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheats.json new file mode 100644 index 00000000..2ca60dce --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheats.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc\",\"dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b","urls":["bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc","dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheatsSafe.json b/08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheatsSafe.json new file mode 100644 index 00000000..9f8882fb --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdCheats.sol/StdCheatsSafe.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc\",\"dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b","urls":["bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc","dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdError.sol/stdError.json b/08-Crowdfunding dApp on Core/out/StdError.sol/stdError.json new file mode 100644 index 00000000..a6d1c385 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdError.sol/stdError.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x61024f610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063986c5f6811610070578063986c5f68146100d8578063b22dc54d146100e0578063b67689da146100e8578063d160e4de146100f0578063fa784a44146100f857600080fd5b806305ee8612146100a257806310332977146100c05780631de45560146100c85780638995290f146100d0575b600080fd5b6100aa610100565b6040516100b791906101cb565b60405180910390f35b6100aa61013b565b6100aa61014d565b6100aa61015f565b6100aa610171565b6100aa610183565b6100aa610195565b6100aa6101a7565b6100aa6101b9565b604051603260248201526044015b60408051601f198184030181529190526020810180516001600160e01b0316634e487b7160e01b17905281565b6040516001602482015260440161010e565b6040516021602482015260440161010e565b6040516011602482015260440161010e565b6040516041602482015260440161010e565b6040516031602482015260440161010e565b6040516051602482015260440161010e565b6040516022602482015260440161010e565b6040516012602482015260440161010e565b602081526000825180602084015260005b818110156101f957602081860181015160408684010152016101dc565b506000604082850101526040601f19601f8301168401019150509291505056fea2646970667358221220446b22a299767d64f26907d72ed939ebe83c4769ed91aba51664670e1e0897ba64736f6c634300081a0033","sourceMap":"162:850:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;162:850:4;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063986c5f6811610070578063986c5f68146100d8578063b22dc54d146100e0578063b67689da146100e8578063d160e4de146100f0578063fa784a44146100f857600080fd5b806305ee8612146100a257806310332977146100c05780631de45560146100c85780638995290f146100d0575b600080fd5b6100aa610100565b6040516100b791906101cb565b60405180910390f35b6100aa61013b565b6100aa61014d565b6100aa61015f565b6100aa610171565b6100aa610183565b6100aa610195565b6100aa6101a7565b6100aa6101b9565b604051603260248201526044015b60408051601f198184030181529190526020810180516001600160e01b0316634e487b7160e01b17905281565b6040516001602482015260440161010e565b6040516021602482015260440161010e565b6040516011602482015260440161010e565b6040516041602482015260440161010e565b6040516031602482015260440161010e565b6040516051602482015260440161010e565b6040516022602482015260440161010e565b6040516012602482015260440161010e565b602081526000825180602084015260005b818110156101f957602081860181015160408684010152016101dc565b506000604082850101526040601f19601f8301168401019150509291505056fea2646970667358221220446b22a299767d64f26907d72ed939ebe83c4769ed91aba51664670e1e0897ba64736f6c634300081a0033","sourceMap":"162:850:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:86;;;:::i;461:91::-;;;:::i;277:87::-;;;:::i;831:88::-;;;:::i;654:80::-;;;:::i;925:84::-;;;:::i;558:90::-;;;:::i;370:85::-;;;:::i;740:::-;778:47;;820:4;778:47;;;705:36:28;678:18;;778:47:4;;;;-1:-1:-1;;778:47:4;;;;;;;;;;;;;;-1:-1:-1;;;;;778:47:4;-1:-1:-1;;;778:47:4;;;740:85;:::o;185:86::-;224:47;;266:4;224:47;;;705:36:28;678:18;;224:47:4;552:195:28;461:91:4;505:47;;547:4;505:47;;;705:36:28;678:18;;505:47:4;552:195:28;277:87:4;317:47;;359:4;317:47;;;705:36:28;678:18;;317:47:4;552:195:28;831:88:4;872:47;;914:4;872:47;;;705:36:28;678:18;;872:47:4;552:195:28;654:80:4;687:47;;729:4;687:47;;;705:36:28;678:18;;687:47:4;552:195:28;925:84:4;962:47;;1004:4;962:47;;;705:36:28;678:18;;962:47:4;552:195:28;558:90:4;601:47;;643:4;601:47;;;705:36:28;678:18;;601:47:4;552:195:28;370:85:4;408:47;;450:4;408:47;;;705:36:28;678:18;;408:47:4;552:195:28;14:533;169:2;158:9;151:21;132:4;201:6;195:13;244:6;239:2;228:9;224:18;217:34;269:1;279:140;293:6;290:1;287:13;279:140;;;404:2;388:14;;;384:23;;378:30;373:2;354:17;;;350:26;343:66;308:10;279:140;;;283:3;468:1;463:2;454:6;443:9;439:22;435:31;428:42;538:2;531;527:7;522:2;514:6;510:15;506:29;495:9;491:45;487:54;479:62;;;14:533;;;;:::o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdError.sol":"stdError"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdInvariant.sol/StdInvariant.json b/08-Crowdfunding dApp on Core/out/StdInvariant.sol/StdInvariant.json new file mode 100644 index 00000000..e75eb3e9 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdInvariant.sol/StdInvariant.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdJson.sol/stdJson.json b/08-Crowdfunding dApp on Core/out/StdJson.sol/stdJson.json new file mode 100644 index 00000000..67c8ed82 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdJson.sol/stdJson.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205cca328cc73532902aea5f783a7b9205027592065669c90592f37f7b0d741c0864736f6c634300081a0033","sourceMap":"610:5612:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;610:5612:6;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205cca328cc73532902aea5f783a7b9205027592065669c90592f37f7b0d741c0864736f6c634300081a0033","sourceMap":"610:5612:6:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdMath.sol/stdMath.json b/08-Crowdfunding dApp on Core/out/StdMath.sol/stdMath.json new file mode 100644 index 00000000..96bf97d8 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdMath.sol/stdMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d1db306526320eed1995b3a4c80810ba360f4ce2950dcf2f5b9e13a26290a164736f6c634300081a0033","sourceMap":"65:1294:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:1294:7;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d1db306526320eed1995b3a4c80810ba360f4ce2950dcf2f5b9e13a26290a164736f6c634300081a0033","sourceMap":"65:1294:7:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorage.json b/08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorage.json new file mode 100644 index 00000000..c69e9225 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorage.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba950955411ba9da1e0df735d00a01a3e84e2128537fbea49af5b2f878059ffe64736f6c634300081a0033","sourceMap":"12759:5081:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;12759:5081:8;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba950955411ba9da1e0df735d00a01a3e84e2128537fbea49af5b2f878059ffe64736f6c634300081a0033","sourceMap":"12759:5081:8:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorageSafe.json b/08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorageSafe.json new file mode 100644 index 00000000..2917e23a --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdStorage.sol/stdStorageSafe.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fcf9c9e464e128bbc1aa5c3ea3a5accb105455cb65ebefc0cd663f89b183186d64736f6c634300081a0033","sourceMap":"450:12307:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;450:12307:8;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fcf9c9e464e128bbc1aa5c3ea3a5accb105455cb65ebefc0cd663f89b183186d64736f6c634300081a0033","sourceMap":"450:12307:8:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdStyle.sol/StdStyle.json b/08-Crowdfunding dApp on Core/out/StdStyle.sol/StdStyle.json new file mode 100644 index 00000000..6c48a1f4 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdStyle.sol/StdStyle.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c72b847b78e88e9faa5dff601041b57f7c17101e293a1ff6a2476794af80151b64736f6c634300081a0033","sourceMap":"100:10361:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;100:10361:9;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c72b847b78e88e9faa5dff601041b57f7c17101e293a1ff6a2476794af80151b64736f6c634300081a0033","sourceMap":"100:10361:9:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdToml.sol/stdToml.json b/08-Crowdfunding dApp on Core/out/StdToml.sol/stdToml.json new file mode 100644 index 00000000..2df7016b --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdToml.sol/stdToml.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088f4372e58215e9b4986536436093fc700e3974a66f2430837219ca6364f9c3664736f6c634300081a0033","sourceMap":"610:5612:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;610:5612:10;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088f4372e58215e9b4986536436093fc700e3974a66f2430837219ca6364f9c3664736f6c634300081a0033","sourceMap":"610:5612:10:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdToml.sol\":\"stdToml\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdToml.sol":"stdToml"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":10} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/StdUtils.sol/StdUtils.json b/08-Crowdfunding dApp on Core/out/StdUtils.sol/StdUtils.json new file mode 100644 index 00000000..46d87f1f --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/StdUtils.sol/StdUtils.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"}},"version":1},"id":11} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Test.sol/Test.json b/08-Crowdfunding dApp on Core/out/Test.sol/Test.json new file mode 100644 index 00000000..73d2fb54 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Test.sol/Test.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc\",\"dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Test.sol":"Test"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc5ea928967b29cc7fc36a29b016ce9bec71ae9442cb4b2cbe698df73416e706b","urls":["bzz-raw://79a8ad483b37fda26df82658e6f30e1cad694e382ae539e99470fe6486d69cbc","dweb:/ipfs/QmbX7zrdX2niV4rgavwxm9iBuMo6d4sragQRuDzbCFoeaw"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Vm.sol/Vm.json b/08-Crowdfunding dApp on Core/out/Vm.sol/Vm.json new file mode 100644 index 00000000..6e3daff6 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Vm.sol/Vm.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assumeNoRevert","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"blobBaseFee","inputs":[{"name":"newBlobBaseFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blobhashes","inputs":[{"name":"hashes","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcastRawTransaction","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"copyStorage","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"},{"name":"constructorArgs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dumpState","inputs":[{"name":"pathToStateJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ensNamehash","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envExists","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"checkTopic0","type":"bool","internalType":"bool"},{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"checkTopic0","type":"bool","internalType":"bool"},{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectPartialRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlobBaseFee","inputs":[],"outputs":[{"name":"blobBaseFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlobhashes","inputs":[],"outputs":[{"name":"hashes","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getFoundryVersion","inputs":[],"outputs":[{"name":"version","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"indexOf","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isContext","inputs":[{"name":"context","type":"uint8","internalType":"enum VmSafe.ForgeContext"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastCallGas","inputs":[],"outputs":[{"name":"gas","type":"tuple","internalType":"struct VmSafe.Gas","components":[{"name":"gasLimit","type":"uint64","internalType":"uint64"},{"name":"gasTotalUsed","type":"uint64","internalType":"uint64"},{"name":"gasMemoryUsed","type":"uint64","internalType":"uint64"},{"name":"gasRefunded","type":"int64","internalType":"int64"},{"name":"gasRemaining","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"loadAllocs","inputs":[{"name":"pathToAllocsJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockFunction","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonTypeArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptAddress","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecretUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"publicKeyP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"randomAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUintToHex","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setArbitraryStorage","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockhash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"signCompact","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopExpectSafeMemory","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","assumeNoRevert()":"285b366a","blobBaseFee(uint256)":"6d315d7e","blobhashes(bytes32[])":"129de7eb","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","broadcastRawTransaction(bytes)":"8c0c72e0","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","copyStorage(address,address)":"203dac0d","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deal(address,uint256)":"c88a5e6d","deleteSnapshot(uint256)":"a6368557","deleteSnapshots()":"421ae469","deployCode(string)":"9a8325a0","deployCode(string,bytes)":"29ce9dde","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","difficulty(uint256)":"46cc92d9","dumpState(string)":"709ecd3f","ensNamehash(string)":"8c374c65","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envExists(string)":"ce8365f9","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectEmitAnonymous()":"2e5f270c","expectEmitAnonymous(address)":"6fc68705","expectEmitAnonymous(bool,bool,bool,bool,bool)":"c948db5e","expectEmitAnonymous(bool,bool,bool,bool,bool,address)":"71c95899","expectPartialRevert(bytes4)":"11fb5b9c","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getBlobBaseFee()":"1f6d6ef7","getBlobhashes()":"f56ff18b","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getFoundryVersion()":"ea991bb5","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","indexOf(string,string)":"8a0807b7","isContext(uint8)":"64af255d","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","isPersistent(address)":"d92d8efd","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","lastCallGas()":"2b589b28","load(address,bytes32)":"667f9d70","loadAllocs(string)":"b3a056d7","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","mockFunction(address,address,bytes)":"adf84d21","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonType(string,string)":"a9da313b","parseJsonType(string,string,string)":"e3f5ae33","parseJsonTypeArray(string,string,string)":"0175d535","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","pauseTracing()":"c94d1f90","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","prevrandao(uint256)":"9cb1c0d4","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptAddress(string)":"62ee05f4","promptSecret(string)":"1e279d41","promptSecretUint(string)":"69ca02b7","promptUint(string)":"652fd489","publicKeyP256(uint256)":"c453949e","randomAddress()":"d5bee9f5","randomUint()":"25124730","randomUint(uint256,uint256)":"d61b051b","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetGasMetering()":"be367dd3","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","resumeTracing()":"72a09ccb","revertTo(uint256)":"44d7f0a4","revertToAndDelete(uint256)":"03e0aca9","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpc(string,string)":"1206c8a8","rpc(string,string,string)":"0199a220","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeJsonType(string,bytes)":"6d4f96a6","serializeJsonType(string,string,string,bytes)":"6f93bccb","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","serializeUintToHex(string,string,uint256)":"ae5a2ae8","setArbitraryStorage(address)":"e1631837","setBlockhash(uint256,bytes32)":"5314b54a","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(address,bytes32)":"8c1aa205","sign(bytes32)":"799cd333","sign(uint256,bytes32)":"e341eaa4","signCompact((address,uint256,uint256,uint256),bytes32)":"3d0e292f","signCompact(address,bytes32)":"8e2f97bf","signCompact(bytes32)":"a282dc4b","signCompact(uint256,bytes32)":"cc2a781f","signP256(uint256,bytes32)":"83211b40","skip(bool)":"dd82d13e","sleep(uint256)":"fa9d8713","snapshot()":"9711715a","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startMappingRecording()":"3e9705c0","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","startStateDiffRecording()":"cf22e3c9","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopExpectSafeMemory()":"0956441b","stopMappingRecording()":"0d4aae9b","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","txGasPrice(uint256)":"48f50c0f","unixTime()":"625387dc","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assumeNoRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBlobBaseFee\",\"type\":\"uint256\"}],\"name\":\"blobBaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashes\",\"type\":\"bytes32[]\"}],\"name\":\"blobhashes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"broadcastRawTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"copyStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToStateJson\",\"type\":\"string\"}],\"name\":\"dumpState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ensNamehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic0\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic0\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectPartialRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blobBaseFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobhashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFoundryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"indexOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum VmSafe.ForgeContext\",\"name\":\"context\",\"type\":\"uint8\"}],\"name\":\"isContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCallGas\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTotalUsed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMemoryUsed\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"gasRefunded\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"gasRemaining\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.Gas\",\"name\":\"gas\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToAllocsJson\",\"type\":\"string\"}],\"name\":\"loadAllocs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mockFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrevrandao\",\"type\":\"uint256\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecretUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"publicKeyP256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUintToHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setArbitraryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"setBlockhash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopExpectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"allowCheatcodes(address)\":{\"notice\":\"In forking mode, explicitly grant the given address cheatcode access.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"assumeNoRevert()\":{\"notice\":\"Discard this run's fuzz inputs and generate new ones if next call reverted.\"},\"blobBaseFee(uint256)\":{\"notice\":\"Sets `block.blobbasefee`\"},\"blobhashes(bytes32[])\":{\"notice\":\"Sets the blobhashes in the transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"broadcastRawTransaction(bytes)\":{\"notice\":\"Takes a signed transaction and broadcasts it to the network.\"},\"chainId(uint256)\":{\"notice\":\"Sets `block.chainid`.\"},\"clearMockedCalls()\":{\"notice\":\"Clears all mocked calls.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"coinbase(address)\":{\"notice\":\"Sets `block.coinbase`.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"copyStorage(address,address)\":{\"notice\":\"Utility cheatcode to copy storage of `from` contract to another `to` contract.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createFork(string)\":{\"notice\":\"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork.\"},\"createFork(string,bytes32)\":{\"notice\":\"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork.\"},\"createFork(string,uint256)\":{\"notice\":\"Creates a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createSelectFork(string)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork.\"},\"createSelectFork(string,bytes32)\":{\"notice\":\"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork.\"},\"createSelectFork(string,uint256)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deal(address,uint256)\":{\"notice\":\"Sets an address' balance.\"},\"deleteSnapshot(uint256)\":{\"notice\":\"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist.\"},\"deleteSnapshots()\":{\"notice\":\"Removes _all_ snapshots previously created by `snapshot`.\"},\"deployCode(string)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"deployCode(string,bytes)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionaly accepts abi-encoded constructor arguments.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"difficulty(uint256)\":{\"notice\":\"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions.\"},\"dumpState(string)\":{\"notice\":\"Dump a genesis JSON file's `allocs` to disk.\"},\"ensNamehash(string)\":{\"notice\":\"Returns ENS namehash for provided string.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envExists(string)\":{\"notice\":\"Gets the environment variable `name` and returns true if it exists, else returns false.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"etch(address,bytes)\":{\"notice\":\"Sets an address' code.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"expectCall(address,bytes)\":{\"notice\":\"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match.\"},\"expectCall(address,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified calldata.\"},\"expectCall(address,uint256,bytes)\":{\"notice\":\"Expects a call to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCall(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCallMinGas(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectCallMinGas(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectEmit()\":{\"notice\":\"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmit(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmit(bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmit(bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmitAnonymous()\":{\"notice\":\"Prepare an expected anonymous log with all topic and data checks enabled. Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmitAnonymous(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmitAnonymous(bool,bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmitAnonymous(bool,bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectPartialRevert(bytes4)\":{\"notice\":\"Expects an error on next call that starts with the revert data.\"},\"expectRevert()\":{\"notice\":\"Expects an error on next call with any revert data.\"},\"expectRevert(bytes)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes4)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectSafeMemory(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"expectSafeMemoryCall(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"fee(uint256)\":{\"notice\":\"Sets `block.basefee`.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getBlobBaseFee()\":{\"notice\":\"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlobhashes()\":{\"notice\":\"Gets the blockhashes from the current transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getFoundryVersion()\":{\"notice\":\"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get the nonce of a `Wallet`.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"indexOf(string,string)\":{\"notice\":\"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`.\"},\"isContext(uint8)\":{\"notice\":\"Returns true if `forge` command was executed in given context.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"isPersistent(address)\":{\"notice\":\"Returns true if the account is marked as persistent.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"lastCallGas()\":{\"notice\":\"Gets the gas used in the last call.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"loadAllocs(string)\":{\"notice\":\"Load a genesis JSON file's `allocs` into the in-memory revm state.\"},\"makePersistent(address)\":{\"notice\":\"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks.\"},\"makePersistent(address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address,address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address[])\":{\"notice\":\"See `makePersistent(address)`.\"},\"mockCall(address,bytes,bytes)\":{\"notice\":\"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked.\"},\"mockCall(address,uint256,bytes,bytes)\":{\"notice\":\"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity.\"},\"mockCallRevert(address,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with specified revert data.\"},\"mockCallRevert(address,uint256,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with a specific `msg.value`, with specified revert data.\"},\"mockFunction(address,address,bytes)\":{\"notice\":\"Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls `target` with the same calldata. This functionality is similar to a delegate call made to `target` contract from `callee`. Can be used to substitute a call to a function with another implementation that captures the primary logic of the original function but is easier to reason about. If calldata is not a strict match then partial match by selector is attempted.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonType(string,string)\":{\"notice\":\"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonType(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonTypeArray(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"pauseTracing()\":{\"notice\":\"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging.\"},\"prank(address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address.\"},\"prank(address,address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input.\"},\"prevrandao(bytes32)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"prevrandao(uint256)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptAddress(string)\":{\"notice\":\"Prompts the user for an address in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"promptSecretUint(string)\":{\"notice\":\"Prompts the user for hidden uint256 in the terminal (usually pk).\"},\"promptUint(string)\":{\"notice\":\"Prompts the user for uint256 in the terminal.\"},\"publicKeyP256(uint256)\":{\"notice\":\"Derives secp256r1 public key from the provided `privateKey`.\"},\"randomAddress()\":{\"notice\":\"Returns a random `address`.\"},\"randomUint()\":{\"notice\":\"Returns a random uint256 value.\"},\"randomUint(uint256,uint256)\":{\"notice\":\"Returns random uin256 value between the provided range (=min..=max).\"},\"readCallers()\":{\"notice\":\"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetGasMetering()\":{\"notice\":\"Reset gas metering (i.e. gas usage is set to gas limit).\"},\"resetNonce(address)\":{\"notice\":\"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"resumeTracing()\":{\"notice\":\"Unpauses collection of call traces.\"},\"revertTo(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`.\"},\"revertToAndDelete(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist.\"},\"revokePersistent(address)\":{\"notice\":\"Revokes persistent status from the address, previously added via `makePersistent`.\"},\"revokePersistent(address[])\":{\"notice\":\"See `revokePersistent(address)`.\"},\"roll(uint256)\":{\"notice\":\"Sets `block.height`.\"},\"rollFork(bytes32)\":{\"notice\":\"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block.\"},\"rollFork(uint256)\":{\"notice\":\"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork.\"},\"rollFork(uint256,bytes32)\":{\"notice\":\"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block.\"},\"rollFork(uint256,uint256)\":{\"notice\":\"Updates the given fork to given block number.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpc(string,string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the given endpoint.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"selectFork(uint256)\":{\"notice\":\"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeJsonType(string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeJsonType(string,string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUintToHex(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"setArbitraryStorage(address)\":{\"notice\":\"Utility cheatcode to set arbitrary storage for given target address.\"},\"setBlockhash(uint256,bytes32)\":{\"notice\":\"Set blockhash for the current block. It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"setNonce(address,uint64)\":{\"notice\":\"Sets the nonce of an account. Must be higher than the current nonce of the account.\"},\"setNonceUnsafe(address,uint64)\":{\"notice\":\"Sets the nonce of an account to an arbitrary value.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address.\"},\"sign(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signCompact((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signCompact(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address.\"},\"signCompact(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"signCompact(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"skip(bool)\":{\"notice\":\"Marks a test as skipped. Must be called at the top of the test.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"snapshot()\":{\"notice\":\"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertTo`.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startPrank(address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called.\"},\"startPrank(address,address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopExpectSafeMemory()\":{\"notice\":\"Stops all safe memory expectation in the current subcontext.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"stopPrank()\":{\"notice\":\"Resets subsequent calls' `msg.sender` to be `address(this)`.\"},\"store(address,bytes32,bytes32)\":{\"notice\":\"Stores a value to an address' storage slot.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"transact(bytes32)\":{\"notice\":\"Fetches the given transaction from the active fork and executes it on the current state.\"},\"transact(uint256,bytes32)\":{\"notice\":\"Fetches the given transaction from the given fork and executes it on the current state.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"txGasPrice(uint256)\":{\"notice\":\"Sets `tx.gasprice`.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"warp(uint256)\":{\"notice\":\"Sets `block.timestamp`.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used in tests, but it is not recommended to use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"pure","type":"function","name":"assumeNoRevert"},{"inputs":[{"internalType":"uint256","name":"newBlobBaseFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"blobBaseFee"},{"inputs":[{"internalType":"bytes32[]","name":"hashes","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"blobhashes"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"broadcastRawTransaction"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"copyStorage"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshots"},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"pathToStateJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"dumpState"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"pure","type":"function","name":"ensNamehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envExists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bool","name":"checkTopic0","type":"bool"},{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bool","name":"checkTopic0","type":"bool"},{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectPartialRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobBaseFee","outputs":[{"internalType":"uint256","name":"blobBaseFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobhashes","outputs":[{"internalType":"bytes32[]","name":"hashes","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFoundryVersion","outputs":[{"internalType":"string","name":"version","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"indexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum VmSafe.ForgeContext","name":"context","type":"uint8"}],"stateMutability":"view","type":"function","name":"isContext","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastCallGas","outputs":[{"internalType":"struct VmSafe.Gas","name":"gas","type":"tuple","components":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasTotalUsed","type":"uint64"},{"internalType":"uint64","name":"gasMemoryUsed","type":"uint64"},{"internalType":"int64","name":"gasRefunded","type":"int64"},{"internalType":"uint64","name":"gasRemaining","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"pathToAllocsJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"loadAllocs"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockFunction"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"pauseTracing"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[{"internalType":"uint256","name":"newPrevrandao","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecretUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"publicKeyP256","outputs":[{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetGasMetering"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"resumeTracing"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUintToHex","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setArbitraryStorage"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockhash"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopExpectSafeMemory"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"allowCheatcodes(address)":{"notice":"In forking mode, explicitly grant the given address cheatcode access."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"assumeNoRevert()":{"notice":"Discard this run's fuzz inputs and generate new ones if next call reverted."},"blobBaseFee(uint256)":{"notice":"Sets `block.blobbasefee`"},"blobhashes(bytes32[])":{"notice":"Sets the blobhashes in the transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"broadcastRawTransaction(bytes)":{"notice":"Takes a signed transaction and broadcasts it to the network."},"chainId(uint256)":{"notice":"Sets `block.chainid`."},"clearMockedCalls()":{"notice":"Clears all mocked calls."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"coinbase(address)":{"notice":"Sets `block.coinbase`."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"copyStorage(address,address)":{"notice":"Utility cheatcode to copy storage of `from` contract to another `to` contract."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createFork(string)":{"notice":"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork."},"createFork(string,bytes32)":{"notice":"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork."},"createFork(string,uint256)":{"notice":"Creates a new fork with the given endpoint and block and returns the identifier of the fork."},"createSelectFork(string)":{"notice":"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork."},"createSelectFork(string,bytes32)":{"notice":"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork."},"createSelectFork(string,uint256)":{"notice":"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deal(address,uint256)":{"notice":"Sets an address' balance."},"deleteSnapshot(uint256)":{"notice":"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist."},"deleteSnapshots()":{"notice":"Removes _all_ snapshots previously created by `snapshot`."},"deployCode(string)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"deployCode(string,bytes)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionaly accepts abi-encoded constructor arguments."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"difficulty(uint256)":{"notice":"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions."},"dumpState(string)":{"notice":"Dump a genesis JSON file's `allocs` to disk."},"ensNamehash(string)":{"notice":"Returns ENS namehash for provided string."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envExists(string)":{"notice":"Gets the environment variable `name` and returns true if it exists, else returns false."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"etch(address,bytes)":{"notice":"Sets an address' code."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"expectCall(address,bytes)":{"notice":"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match."},"expectCall(address,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified calldata."},"expectCall(address,uint256,bytes)":{"notice":"Expects a call to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value`, gas, and calldata."},"expectCall(address,uint256,uint64,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata."},"expectCallMinGas(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectCallMinGas(address,uint256,uint64,bytes,uint64)":{"notice":"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectEmit()":{"notice":"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmit(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmit(bool,bool,bool,bool)":{"notice":"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmit(bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmitAnonymous()":{"notice":"Prepare an expected anonymous log with all topic and data checks enabled. Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmitAnonymous(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmitAnonymous(bool,bool,bool,bool,bool)":{"notice":"Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmitAnonymous(bool,bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectPartialRevert(bytes4)":{"notice":"Expects an error on next call that starts with the revert data."},"expectRevert()":{"notice":"Expects an error on next call with any revert data."},"expectRevert(bytes)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes4)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectSafeMemory(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) โˆช [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"expectSafeMemoryCall(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) โˆช [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"fee(uint256)":{"notice":"Sets `block.basefee`."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getBlobBaseFee()":{"notice":"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlobhashes()":{"notice":"Gets the blockhashes from the current transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getFoundryVersion()":{"notice":"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get the nonce of a `Wallet`."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"indexOf(string,string)":{"notice":"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`."},"isContext(uint8)":{"notice":"Returns true if `forge` command was executed in given context."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"isPersistent(address)":{"notice":"Returns true if the account is marked as persistent."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"lastCallGas()":{"notice":"Gets the gas used in the last call."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"loadAllocs(string)":{"notice":"Load a genesis JSON file's `allocs` into the in-memory revm state."},"makePersistent(address)":{"notice":"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks."},"makePersistent(address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address,address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address[])":{"notice":"See `makePersistent(address)`."},"mockCall(address,bytes,bytes)":{"notice":"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked."},"mockCall(address,uint256,bytes,bytes)":{"notice":"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity."},"mockCallRevert(address,bytes,bytes)":{"notice":"Reverts a call to an address with specified revert data."},"mockCallRevert(address,uint256,bytes,bytes)":{"notice":"Reverts a call to an address with a specific `msg.value`, with specified revert data."},"mockFunction(address,address,bytes)":{"notice":"Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls `target` with the same calldata. This functionality is similar to a delegate call made to `target` contract from `callee`. Can be used to substitute a call to a function with another implementation that captures the primary logic of the original function but is easier to reason about. If calldata is not a strict match then partial match by selector is attempted."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonType(string,string)":{"notice":"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`."},"parseJsonType(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`."},"parseJsonTypeArray(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"pauseTracing()":{"notice":"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging."},"prank(address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address."},"prank(address,address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input."},"prevrandao(bytes32)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"prevrandao(uint256)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptAddress(string)":{"notice":"Prompts the user for an address in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"promptSecretUint(string)":{"notice":"Prompts the user for hidden uint256 in the terminal (usually pk)."},"promptUint(string)":{"notice":"Prompts the user for uint256 in the terminal."},"publicKeyP256(uint256)":{"notice":"Derives secp256r1 public key from the provided `privateKey`."},"randomAddress()":{"notice":"Returns a random `address`."},"randomUint()":{"notice":"Returns a random uint256 value."},"randomUint(uint256,uint256)":{"notice":"Returns random uin256 value between the provided range (=min..=max)."},"readCallers()":{"notice":"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetGasMetering()":{"notice":"Reset gas metering (i.e. gas usage is set to gas limit)."},"resetNonce(address)":{"notice":"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"resumeTracing()":{"notice":"Unpauses collection of call traces."},"revertTo(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`."},"revertToAndDelete(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist."},"revokePersistent(address)":{"notice":"Revokes persistent status from the address, previously added via `makePersistent`."},"revokePersistent(address[])":{"notice":"See `revokePersistent(address)`."},"roll(uint256)":{"notice":"Sets `block.height`."},"rollFork(bytes32)":{"notice":"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block."},"rollFork(uint256)":{"notice":"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork."},"rollFork(uint256,bytes32)":{"notice":"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block."},"rollFork(uint256,uint256)":{"notice":"Updates the given fork to given block number."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpc(string,string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the given endpoint."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"selectFork(uint256)":{"notice":"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeJsonType(string,bytes)":{"notice":"See `serializeJson`."},"serializeJsonType(string,string,string,bytes)":{"notice":"See `serializeJson`."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"serializeUintToHex(string,string,uint256)":{"notice":"See `serializeJson`."},"setArbitraryStorage(address)":{"notice":"Utility cheatcode to set arbitrary storage for given target address."},"setBlockhash(uint256,bytes32)":{"notice":"Set blockhash for the current block. It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"setNonce(address,uint64)":{"notice":"Sets the nonce of an account. Must be higher than the current nonce of the account."},"setNonceUnsafe(address,uint64)":{"notice":"Sets the nonce of an account to an arbitrary value."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address."},"sign(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signCompact((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signCompact(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address."},"signCompact(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"signCompact(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"skip(bool)":{"notice":"Marks a test as skipped. Must be called at the top of the test."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"snapshot()":{"notice":"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertTo`."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startPrank(address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called."},"startPrank(address,address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopExpectSafeMemory()":{"notice":"Stops all safe memory expectation in the current subcontext."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"stopPrank()":{"notice":"Resets subsequent calls' `msg.sender` to be `address(this)`."},"store(address,bytes32,bytes32)":{"notice":"Stores a value to an address' storage slot."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"transact(bytes32)":{"notice":"Fetches the given transaction from the active fork and executes it on the current state."},"transact(uint256,bytes32)":{"notice":"Fetches the given transaction from the given fork and executes it on the current state."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"txGasPrice(uint256)":{"notice":"Sets `tx.gasprice`."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"warp(uint256)":{"notice":"Sets `block.timestamp`."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":13} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/Vm.sol/VmSafe.json b/08-Crowdfunding dApp on Core/out/Vm.sol/VmSafe.json new file mode 100644 index 00000000..79f976db --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/Vm.sol/VmSafe.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assumeNoRevert","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcastRawTransaction","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"copyStorage","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"},{"name":"constructorArgs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"ensNamehash","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envExists","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlobBaseFee","inputs":[],"outputs":[{"name":"blobBaseFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getFoundryVersion","inputs":[],"outputs":[{"name":"version","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"indexOf","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isContext","inputs":[{"name":"context","type":"uint8","internalType":"enum VmSafe.ForgeContext"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastCallGas","inputs":[],"outputs":[{"name":"gas","type":"tuple","internalType":"struct VmSafe.Gas","components":[{"name":"gasLimit","type":"uint64","internalType":"uint64"},{"name":"gasTotalUsed","type":"uint64","internalType":"uint64"},{"name":"gasMemoryUsed","type":"uint64","internalType":"uint64"},{"name":"gasRefunded","type":"int64","internalType":"int64"},{"name":"gasRemaining","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonTypeArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptAddress","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecretUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"publicKeyP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"randomAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"rpc","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUintToHex","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setArbitraryStorage","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"signCompact","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","assumeNoRevert()":"285b366a","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","broadcastRawTransaction(bytes)":"8c0c72e0","closeFile(string)":"48c3241f","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","copyStorage(address,address)":"203dac0d","createDir(string,bool)":"168b64d3","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deployCode(string)":"9a8325a0","deployCode(string,bytes)":"29ce9dde","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","ensNamehash(string)":"8c374c65","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envExists(string)":"ce8365f9","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getBlobBaseFee()":"1f6d6ef7","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getFoundryVersion()":"ea991bb5","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","indexOf(string,string)":"8a0807b7","isContext(uint8)":"64af255d","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","lastCallGas()":"2b589b28","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonType(string,string)":"a9da313b","parseJsonType(string,string,string)":"e3f5ae33","parseJsonTypeArray(string,string,string)":"0175d535","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","pauseTracing()":"c94d1f90","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptAddress(string)":"62ee05f4","promptSecret(string)":"1e279d41","promptSecretUint(string)":"69ca02b7","promptUint(string)":"652fd489","publicKeyP256(uint256)":"c453949e","randomAddress()":"d5bee9f5","randomUint()":"25124730","randomUint(uint256,uint256)":"d61b051b","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetGasMetering()":"be367dd3","resumeGasMetering()":"2bcd50e0","resumeTracing()":"72a09ccb","rpc(string,string)":"1206c8a8","rpc(string,string,string)":"0199a220","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeJsonType(string,bytes)":"6d4f96a6","serializeJsonType(string,string,string,bytes)":"6f93bccb","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","serializeUintToHex(string,string,uint256)":"ae5a2ae8","setArbitraryStorage(address)":"e1631837","setEnv(string,string)":"3d5923ee","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(address,bytes32)":"8c1aa205","sign(bytes32)":"799cd333","sign(uint256,bytes32)":"e341eaa4","signCompact((address,uint256,uint256,uint256),bytes32)":"3d0e292f","signCompact(address,bytes32)":"8e2f97bf","signCompact(bytes32)":"a282dc4b","signCompact(uint256,bytes32)":"cc2a781f","signP256(uint256,bytes32)":"83211b40","sleep(uint256)":"fa9d8713","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startMappingRecording()":"3e9705c0","startStateDiffRecording()":"cf22e3c9","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopMappingRecording()":"0d4aae9b","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","unixTime()":"625387dc","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assumeNoRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"broadcastRawTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"copyStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ensNamehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blobBaseFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFoundryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"indexOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum VmSafe.ForgeContext\",\"name\":\"context\",\"type\":\"uint8\"}],\"name\":\"isContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCallGas\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTotalUsed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMemoryUsed\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"gasRefunded\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"gasRemaining\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.Gas\",\"name\":\"gas\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecretUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"publicKeyP256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUintToHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setArbitraryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"assumeNoRevert()\":{\"notice\":\"Discard this run's fuzz inputs and generate new ones if next call reverted.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"broadcastRawTransaction(bytes)\":{\"notice\":\"Takes a signed transaction and broadcasts it to the network.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"copyStorage(address,address)\":{\"notice\":\"Utility cheatcode to copy storage of `from` contract to another `to` contract.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deployCode(string)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"deployCode(string,bytes)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionaly accepts abi-encoded constructor arguments.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"ensNamehash(string)\":{\"notice\":\"Returns ENS namehash for provided string.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envExists(string)\":{\"notice\":\"Gets the environment variable `name` and returns true if it exists, else returns false.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getBlobBaseFee()\":{\"notice\":\"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getFoundryVersion()\":{\"notice\":\"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get the nonce of a `Wallet`.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"indexOf(string,string)\":{\"notice\":\"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`.\"},\"isContext(uint8)\":{\"notice\":\"Returns true if `forge` command was executed in given context.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"lastCallGas()\":{\"notice\":\"Gets the gas used in the last call.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonType(string,string)\":{\"notice\":\"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonType(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonTypeArray(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"pauseTracing()\":{\"notice\":\"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptAddress(string)\":{\"notice\":\"Prompts the user for an address in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"promptSecretUint(string)\":{\"notice\":\"Prompts the user for hidden uint256 in the terminal (usually pk).\"},\"promptUint(string)\":{\"notice\":\"Prompts the user for uint256 in the terminal.\"},\"publicKeyP256(uint256)\":{\"notice\":\"Derives secp256r1 public key from the provided `privateKey`.\"},\"randomAddress()\":{\"notice\":\"Returns a random `address`.\"},\"randomUint()\":{\"notice\":\"Returns a random uint256 value.\"},\"randomUint(uint256,uint256)\":{\"notice\":\"Returns random uin256 value between the provided range (=min..=max).\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetGasMetering()\":{\"notice\":\"Reset gas metering (i.e. gas usage is set to gas limit).\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"resumeTracing()\":{\"notice\":\"Unpauses collection of call traces.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpc(string,string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the given endpoint.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeJsonType(string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeJsonType(string,string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUintToHex(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"setArbitraryStorage(address)\":{\"notice\":\"Utility cheatcode to set arbitrary storage for given target address.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address.\"},\"sign(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signCompact((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signCompact(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address.\"},\"signCompact(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"signCompact(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may result in Script simulations differing from on-chain execution. It is recommended to only use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4\",\"dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"pure","type":"function","name":"assumeNoRevert"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"broadcastRawTransaction"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"copyStorage"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"pure","type":"function","name":"ensNamehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envExists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobBaseFee","outputs":[{"internalType":"uint256","name":"blobBaseFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFoundryVersion","outputs":[{"internalType":"string","name":"version","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"indexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum VmSafe.ForgeContext","name":"context","type":"uint8"}],"stateMutability":"view","type":"function","name":"isContext","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastCallGas","outputs":[{"internalType":"struct VmSafe.Gas","name":"gas","type":"tuple","components":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasTotalUsed","type":"uint64"},{"internalType":"uint64","name":"gasMemoryUsed","type":"uint64"},{"internalType":"int64","name":"gasRefunded","type":"int64"},{"internalType":"uint64","name":"gasRemaining","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"pauseTracing"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecretUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"publicKeyP256","outputs":[{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetGasMetering"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"resumeTracing"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUintToHex","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setArbitraryStorage"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"assumeNoRevert()":{"notice":"Discard this run's fuzz inputs and generate new ones if next call reverted."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"broadcastRawTransaction(bytes)":{"notice":"Takes a signed transaction and broadcasts it to the network."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"copyStorage(address,address)":{"notice":"Utility cheatcode to copy storage of `from` contract to another `to` contract."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deployCode(string)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"deployCode(string,bytes)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionaly accepts abi-encoded constructor arguments."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"ensNamehash(string)":{"notice":"Returns ENS namehash for provided string."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envExists(string)":{"notice":"Gets the environment variable `name` and returns true if it exists, else returns false."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getBlobBaseFee()":{"notice":"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getFoundryVersion()":{"notice":"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get the nonce of a `Wallet`."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"indexOf(string,string)":{"notice":"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`."},"isContext(uint8)":{"notice":"Returns true if `forge` command was executed in given context."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"lastCallGas()":{"notice":"Gets the gas used in the last call."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonType(string,string)":{"notice":"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`."},"parseJsonType(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`."},"parseJsonTypeArray(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"pauseTracing()":{"notice":"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptAddress(string)":{"notice":"Prompts the user for an address in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"promptSecretUint(string)":{"notice":"Prompts the user for hidden uint256 in the terminal (usually pk)."},"promptUint(string)":{"notice":"Prompts the user for uint256 in the terminal."},"publicKeyP256(uint256)":{"notice":"Derives secp256r1 public key from the provided `privateKey`."},"randomAddress()":{"notice":"Returns a random `address`."},"randomUint()":{"notice":"Returns a random uint256 value."},"randomUint(uint256,uint256)":{"notice":"Returns random uin256 value between the provided range (=min..=max)."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetGasMetering()":{"notice":"Reset gas metering (i.e. gas usage is set to gas limit)."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"resumeTracing()":{"notice":"Unpauses collection of call traces."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpc(string,string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the given endpoint."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeJsonType(string,bytes)":{"notice":"See `serializeJson`."},"serializeJsonType(string,string,string,bytes)":{"notice":"See `serializeJson`."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"serializeUintToHex(string,string,uint256)":{"notice":"See `serializeJson`."},"setArbitraryStorage(address)":{"notice":"Utility cheatcode to set arbitrary storage for given target address."},"setEnv(string,string)":{"notice":"Sets environment variables."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address."},"sign(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signCompact((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signCompact(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address."},"signCompact(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"signCompact(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x20a0001cfab1054493c5da0947abb9c8b42abdc9c91d7451d83d804c025ad430","urls":["bzz-raw://b6875cafc44f6891c9f318c2b808b61824864f33369ad8a4e76fc0999757aed4","dweb:/ipfs/QmYQXZhSbonEsHm4SEqfiBf7gP6qHHU8M8Z5xwwr5ViY3E"],"license":"MIT OR Apache-2.0"}},"version":1},"id":13} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/build-info/9eb4378b0c18b678d852785d9c681a90.json b/08-Crowdfunding dApp on Core/out/build-info/9eb4378b0c18b678d852785d9c681a90.json new file mode 100644 index 00000000..80611b78 --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/build-info/9eb4378b0c18b678d852785d9c681a90.json @@ -0,0 +1 @@ +{"id":"9eb4378b0c18b678d852785d9c681a90","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/StdAssertions.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdError.sol","5":"lib/forge-std/src/StdInvariant.sol","6":"lib/forge-std/src/StdJson.sol","7":"lib/forge-std/src/StdMath.sol","8":"lib/forge-std/src/StdStorage.sol","9":"lib/forge-std/src/StdStyle.sol","10":"lib/forge-std/src/StdToml.sol","11":"lib/forge-std/src/StdUtils.sol","12":"lib/forge-std/src/Test.sol","13":"lib/forge-std/src/Vm.sol","14":"lib/forge-std/src/console.sol","15":"lib/forge-std/src/console2.sol","16":"lib/forge-std/src/interfaces/IERC165.sol","17":"lib/forge-std/src/interfaces/IERC20.sol","18":"lib/forge-std/src/interfaces/IERC721.sol","19":"lib/forge-std/src/interfaces/IMulticall3.sol","20":"lib/forge-std/src/mocks/MockERC20.sol","21":"lib/forge-std/src/mocks/MockERC721.sol","22":"lib/forge-std/src/safeconsole.sol","23":"src/Campaign.sol","24":"src/CampaignFactory.sol","25":"src/Counter.sol","26":"test/CampaignFactory.t.sol","27":"test/Counter.t.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/console.sol/console.json b/08-Crowdfunding dApp on Core/out/console.sol/console.json new file mode 100644 index 00000000..c1acd3ff --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/console.sol/console.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e23826b8d9a713e24351fb0cda29843ba1ce0f8bf76da88295ff10790ffe00764736f6c634300081a0033","sourceMap":"66:67248:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:67248:14;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203e23826b8d9a713e24351fb0cda29843ba1ce0f8bf76da88295ff10790ffe00764736f6c634300081a0033","sourceMap":"66:67248:14:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/out/safeconsole.sol/safeconsole.json b/08-Crowdfunding dApp on Core/out/safeconsole.sol/safeconsole.json new file mode 100644 index 00000000..8d0ba84b --- /dev/null +++ b/08-Crowdfunding dApp on Core/out/safeconsole.sol/safeconsole.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207c6bf59dd82e22c3fac69baf013e65d41c3e4aed8d53c69247ae19436636598664736f6c634300081a0033","sourceMap":"163:427371:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;163:427371:22;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207c6bf59dd82e22c3fac69baf013e65d41c3e4aed8d53c69247ae19436636598664736f6c634300081a0033","sourceMap":"163:427371:22:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"philogy \",\"details\":\"Code generated automatically by script.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/safeconsole.sol\":\"safeconsole\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/safeconsole.sol":"safeconsole"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file diff --git a/08-Crowdfunding dApp on Core/test/Counter.t.sol b/08-Crowdfunding dApp on Core/test/Counter.t.sol new file mode 100644 index 00000000..54b724f7 --- /dev/null +++ b/08-Crowdfunding dApp on Core/test/Counter.t.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Test, console} from "forge-std/Test.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterTest is Test { + Counter public counter; + + function setUp() public { + counter = new Counter(); + counter.setNumber(0); + } + + function test_Increment() public { + counter.increment(); + assertEq(counter.number(), 1); + } + + function testFuzz_SetNumber(uint256 x) public { + counter.setNumber(x); + assertEq(counter.number(), x); + } +}